builder: release-comm-esr45-win32_release_update_verify_2 slave: b-2008-spot-176 starttime: 1462839591.98 results: failure (2) ========= Started set props: master (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:51.979270) ========= master: http://buildbot-master91.bb.releng.usw2.mozilla.com:8001/ ========= Finished set props: master (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:51.979688) ========= ========= Started downloading to buildprops.json (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:51.979995) ========= ========= Finished downloading to buildprops.json (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:52.165551) ========= ========= Started 'rm -rf ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:52.165936) ========= 'rm' '-rf' 'scripts' 'properties' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\. (timeout 1200 secs) watching logfiles {} argv: ['rm', '-rf', 'scripts', 'properties'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-176 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-176 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3740 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-NqCFaP3684/agent.3684 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-176 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False program finished with exit code 0 elapsedTime=0.760000 ========= master_lag: 0.01 ========= ========= Finished 'rm -rf ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:19:52.936624) ========= ========= Started 'hg clone ...' (results: 0, elapsed: 10 secs) (at 2016-05-09 17:19:52.937499) ========= 'hg' 'clone' 'https://hg.mozilla.org/build/tools' 'scripts' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\. (timeout 1320 secs) watching logfiles {} argv: ['hg', 'clone', 'https://hg.mozilla.org/build/tools', 'scripts'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-176 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-176 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3740 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-NqCFaP3684/agent.3684 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-176 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False applying clone bundle from https://s3-us-west-2.amazonaws.com/moz-hg-bundles-us-west-2/build/tools/b030af490d9395958c3dc17443204037faf6a991.packed1.hg 2005 files to transfer, 26.7 MB of data transferred 26.7 MB in 2.7 seconds (9.73 MB/sec) finished applying clone bundle searching for changes adding changesets adding manifests adding file changes added 3 changesets with 7 changes to 6 files updating to branch default 1139 files updated, 0 files merged, 0 files removed, 0 files unresolved program finished with exit code 0 elapsedTime=10.243000 ========= master_lag: 0.01 ========= ========= Finished 'hg clone ...' (results: 0, elapsed: 10 secs) (at 2016-05-09 17:20:03.193575) ========= ========= Started 'hg update ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:20:03.194550) ========= 'hg' 'update' '-C' '-r' 'THUNDERBIRD_45_1_0_RELEASE_RUNTIME' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\scripts (timeout 1200 secs) watching logfiles {} argv: ['hg', 'update', '-C', '-r', 'THUNDERBIRD_45_1_0_RELEASE_RUNTIME'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-176 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-176 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3740 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-NqCFaP3684/agent.3684 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-176 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False 1 files updated, 0 files merged, 0 files removed, 0 files unresolved program finished with exit code 0 elapsedTime=0.607000 ========= master_lag: 0.01 ========= ========= Finished 'hg update ...' (results: 0, elapsed: 0 secs) (at 2016-05-09 17:20:03.814018) ========= ========= Started set props: script_repo_revision (results: 0, elapsed: 0 secs) (at 2016-05-09 17:20:03.814943) ========= 'hg' 'id' '-i' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\scripts (timeout 1200 secs) watching logfiles {} argv: ['hg', 'id', '-i'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-176 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-176 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3740 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-NqCFaP3684/agent.3684 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-176 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False 977ce00d7c48 program finished with exit code 0 elapsedTime=0.307000 script_repo_revision: '977ce00d7c48' ========= master_lag: 0.01 ========= ========= Finished set props: script_repo_revision (results: 0, elapsed: 0 secs) (at 2016-05-09 17:20:04.132323) ========= ========= Started 'bash scripts/scripts/release/updates/chunked-verify.sh ...' failed (results: 2, elapsed: 36 mins, 43 secs) (at 2016-05-09 17:20:04.133243) ========= 'bash' 'scripts/scripts/release/updates/chunked-verify.sh' 'win32' 'updateChannels' '6' '2' 'release' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\. (timeout 1200 secs) watching logfiles {} argv: ['bash', 'scripts/scripts/release/updates/chunked-verify.sh', 'win32', 'updateChannels', '6', '2', 'release'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-176 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-176 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PROPERTIES_FILE=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3740 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-NqCFaP3684/agent.3684 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-176 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False + set -o pipefail ++ dirname scripts/scripts/release/updates/chunked-verify.sh + pushd scripts/scripts/release/updates ++ pwd + MY_DIR=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates + popd + SCRIPTS_DIR=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../.. + PYTHON=/tools/python/bin/python + '[' '!' -x /tools/python/bin/python ']' + PYTHON=python + JSONTOOL='python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py' ++ pwd + workdir=/c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0 + platform=win32 + configDict=updateChannels + chunks=6 + thisChunk=2 + channel=release + '[' -n /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json -a -f /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json ']' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.NO_BBCONFIG /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'NO_BBCONFIG' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.VERIFY_CONFIG /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'VERIFY_CONFIG' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.TOTAL_CHUNKS /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'TOTAL_CHUNKS' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.THIS_CHUNK /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json Traceback (most recent call last): File "c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py", line 25, in v = v[k] KeyError: 'THIS_CHUNK' + '[' -z '' -a -z https://hg.mozilla.org/build/buildbot-configs ']' +++ cd /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../.. +++ pwd ++ basename /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0 + SLAVEBUILDDIR=tb-rel-c-esr45-w32_rel_u_v_2-0 + '[' -z '' ']' ++ python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.release_config /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json + RELEASE_CONFIG=mozilla/release-thunderbird-comm-esr45.py ++ python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.release_tag /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json + TAG=THUNDERBIRD_45_1_0_RELEASE ++ python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/utils/jsontool.py -k properties.slavebuilddir /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/buildprops.json + SLAVEBUILDDIR=tb-rel-c-esr45-w32_rel_u_v_2-0 + python -u /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../buildfarm/maintenance/purge_builds.py -s 16 -n info -n 'rel-*' -n 'tb-rel-*' -n tb-rel-c-esr45-w32_rel_u_v_2-0 52.11 GB of space available + '[' -z '' -a -n '' ']' + '[' -z '' ']' + python /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/chunked-verify.py -t THUNDERBIRD_45_1_0_RELEASE -r mozilla/release-thunderbird-comm-esr45.py -b https://hg.mozilla.org/build/buildbot-configs -p win32 --chunks 6 --this-chunk 2 --config-dict updateChannels --release-channel release + tee /c/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates/../../../../verify_log.txt Reporting hg version in use command: START command: hg -q version command: cwd: . command: output: Mercurial Distributed SCM (version 3.7.3) command: END (0.10s elapsed) Checking if share extension works command: START command: hg help share command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0 command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) Updating shared repo Reporting hg version in use command: START command: hg -q version command: cwd: . command: output: Mercurial Distributed SCM (version 3.7.3) command: END (0.10s elapsed) command: START command: hg clone --traceback -U https://hg.mozilla.org/build/buildbot-configs c:\builds\hg-shared\build\buildbot-configs command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0 command: env: {'HGPLAIN': '1'} command: END (20.75s elapsed) command: output: requesting all changes adding changesets adding manifests adding file changes added 14193 changesets with 26568 changes to 2730 files (+2 heads) Trying to share c:/builds/hg-shared\build/buildbot-configs to c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\buildbot-configs mkdir: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\buildbot-configs command: START command: hg share -U c:/builds/hg-shared\build/buildbot-configs c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\buildbot-configs command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0 command: output: command: END (1.00s elapsed) command: START command: hg branch command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\buildbot-configs command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) command: output: default command: START command: hg update -C command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\buildbot-configs command: output: 195 files updated, 0 files merged, 0 files removed, 0 files unresolved command: END (1.40s elapsed) command: START command: hg parent --template {node|short} command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\buildbot-configs command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) command: output: 3a7c1d3dbace command: START command: hg update -C -r THUNDERBIRD_45_1_0_RELEASE command: cwd: buildbot-configs command: output: 14 files updated, 0 files merged, 0 files removed, 0 files unresolved command: END (0.46s elapsed) command: START command: hg parent --template {node|short} command: cwd: buildbot-configs command: env: {'HGPLAIN': '1'} command: END (0.25s elapsed) command: output: 101957d3f7db command: START command: cat c:\users\cltbld\appdata\local\temp\tmpa8r79s command: cwd: c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0 command: output: release="45.0" product="Thunderbird" platform="WINNT_x86-msvc-x86" build_id="20160407161913" locales="is it ja ko lt nb-NO nl nn-NO pa-IN pl pt-BR pt-PT rm ro ru si sk sl sq sr sv-SE ta-LK tr uk vi zh-CN zh-TW" channel="release-localtest" patch_types="complete partial" from="/thunderbird/releases/45.0/win32/%locale%/Thunderbird Setup 45.0.exe" aus_server="https://aus4.mozilla.org" ftp_server_from="http://archive.mozilla.org/pub/mozilla.org" ftp_server_to="http://archive.mozilla.org/pub/mozilla.org" to="/thunderbird/candidates/45.1.0-candidates/build3/win32/%locale%/Thunderbird Setup 45.1.0.exe" release="38.7.2" product="Thunderbird" platform="WINNT_x86-msvc" build_id="20160402193654" locales="ar ast be bg" channel="release-localtest" patch_types="complete partial" from="/thunderbird/releases/38.7.2/win32/%locale%/Thunderbird Setup 38.7.2.exe" ftp_server_from="http://archive.mozilla.org/pub/mozilla.org" ftp_server_to="http://archive.mozilla.org/pub/mozilla.org" release="38.7.1" product="Thunderbird" platform="WINNT_x86-msvc" build_id="20160323055719" locales="pa-IN pl pt-BR pt-PT rm ro si sk sl sq sr sv-SE ta-LK tr uk vi zh-CN zh-TW" channel="release-localtest" patch_types="complete" release="38.7.0" product="Thunderbird" platform="WINNT_x86-msvc" build_id="20160310150025" locales="ar ast be bg bn-BD br ca cs cy da dsb el en-GB es-AR es-ES et eu fi fr" channel="release-localtest" patch_types="complete" command: END (0.07s elapsed) command: START command: bash verify.sh -c c:\users\cltbld\appdata\local\temp\tmpa8r79s command: cwd: c:/builds/moz2_slave/tb-rel-c-esr45-w32_rel_u_v_2-0/scripts/scripts/release/updates\../../../release/updates command: output: Using config file c:\users\cltbld\appdata\local\temp\tmpa8r79s Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:20:30-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:20:32 GMT Keep-Alive: timeout=5, max=998 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 160K=0s 2016-05-09 17:20:31 (160 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:21:23-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:21:25 GMT Keep-Alive: timeout=5, max=888 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 147K=0s 2016-05-09 17:21:23 (147 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:22:15-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:22:17 GMT Keep-Alive: timeout=5, max=944 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 139K=0s 2016-05-09 17:22:15 (139 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:23:07-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:23:09 GMT Keep-Alive: timeout=5, max=963 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 149K=0s 2016-05-09 17:23:07 (149 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:23:59-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.45, 63.245.213.46, 63.245.213.44 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.45|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:24:01 GMT Keep-Alive: timeout=5, max=999 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 154K=0s 2016-05-09 17:23:59 (154 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:24:51-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:24:53 GMT Keep-Alive: timeout=5, max=992 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 140K=0s 2016-05-09 17:24:51 (140 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:25:43-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:25:45 GMT Keep-Alive: timeout=5, max=993 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 153K=0s 2016-05-09 17:25:43 (153 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:26:35-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:26:37 GMT Keep-Alive: timeout=5, max=816 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 147K=0s 2016-05-09 17:26:35 (147 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:27:27-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:27:29 GMT Keep-Alive: timeout=5, max=1000 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 157K=0s 2016-05-09 17:27:27 (157 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:28:19-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:28:21 GMT Keep-Alive: timeout=5, max=843 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 146K=0s 2016-05-09 17:28:19 (146 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:29:11-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:29:13 GMT Keep-Alive: timeout=5, max=998 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 154K=0s 2016-05-09 17:29:11 (154 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:30:03-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:30:05 GMT Keep-Alive: timeout=5, max=976 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 157K=0s 2016-05-09 17:30:03 (157 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:30:55-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:30:57 GMT Keep-Alive: timeout=5, max=970 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 153K=0s 2016-05-09 17:30:56 (153 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:31:48-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:31:49 GMT Keep-Alive: timeout=5, max=1000 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 149K=0s 2016-05-09 17:31:48 (149 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:32:40-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:32:41 GMT Keep-Alive: timeout=5, max=969 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 139K=0s 2016-05-09 17:32:40 (139 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:33:32-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:33:33 GMT Keep-Alive: timeout=5, max=761 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 149K=0s 2016-05-09 17:33:32 (149 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:34:24-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:34:25 GMT Keep-Alive: timeout=5, max=997 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 151K=0s 2016-05-09 17:34:24 (151 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:35:16-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:35:17 GMT Keep-Alive: timeout=5, max=986 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 149K=0s 2016-05-09 17:35:16 (149 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:36:08-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:36:09 GMT Keep-Alive: timeout=5, max=1000 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 152K=0s 2016-05-09 17:36:08 (152 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:37:00-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:37:01 GMT Keep-Alive: timeout=5, max=1000 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 142K=0s 2016-05-09 17:37:00 (142 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:37:52-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:37:53 GMT Keep-Alive: timeout=5, max=976 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 154K=0s 2016-05-09 17:37:52 (154 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:38:44-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:38:46 GMT Keep-Alive: timeout=5, max=912 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 148K=0s 2016-05-09 17:38:44 (148 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:39:36-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:39:38 GMT Keep-Alive: timeout=5, max=946 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 151K=0s 2016-05-09 17:39:36 (151 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:40:28-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:40:30 GMT Keep-Alive: timeout=5, max=997 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 149K=0s 2016-05-09 17:40:28 (149 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:41:20-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:41:22 GMT Keep-Alive: timeout=5, max=995 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 155K=0s 2016-05-09 17:41:20 (155 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:42:12-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:42:14 GMT Keep-Alive: timeout=5, max=987 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 149K=0s 2016-05-09 17:42:12 (149 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:43:04-- https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:43:06 GMT Keep-Alive: timeout=5, max=995 Connection: Keep-Alive X-Cache-Info: caching Content-Length: 42 Length: 42 [text/xml] Saving to: 'update.xml' 0K 100% 126K=0s 2016-05-09 17:43:04 (126 KB/s) - 'update.xml' saved [42/42] Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping Using https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Empty response, sleeping FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:43:56-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:43:58 GMT Keep-Alive: timeout=5, max=994 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.26M=0s 2016-05-09 17:43:56 (3.26 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ar/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ar/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:43:57-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ar/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41618441 Connection: keep-alive Date: Tue, 10 May 2016 00:43:59 GMT x-amz-replication-status: COMPLETED x-amz-version-id: z8zOU2apvnglq5x9xA5s7uM.qiwiniDF Last-Modified: Tue, 03 May 2016 14:30:35 GMT ETag: "1e5181f74fe3430ef931b456f2312db3" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 6e65abb04cb818a6ec78111935b507f7.cloudfront.net (CloudFront) X-Amz-Cf-Id: THNquDZpsS3Rwv0NjRcFyVc1sOQHuibEuQJtktqGsUxBL3bIUHdCKA== Length: 41618441 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 1.78M 21s 3072K ........ ........ ........ ........ ........ ........ 15% 4.47M 13s 6144K ........ ........ ........ ........ ........ ........ 22% 6.89M 10s 9216K ........ ........ ........ ........ ........ ........ 30% 7.74M 7s 12288K ........ ........ ........ ........ ........ ........ 37% 8.94M 6s 15360K ........ ........ ........ ........ ........ ........ 45% 12.8M 5s 18432K ........ ........ ........ ........ ........ ........ 52% 11.8M 4s 21504K ........ ........ ........ ........ ........ ........ 60% 13.4M 3s 24576K ........ ........ ........ ........ ........ ........ 68% 17.2M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 17.4M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 19.2M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 19.0M 1s 36864K ........ ........ ........ ........ ........ ........ 98% 22.5M 0s 39936K ........ ... 100% 15.7M=5.1s 2016-05-09 17:44:02 (7.84 MB/s) - 'update/complete.mar' saved [41618441/41618441] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ar/Thunderbird Setup 38.7.2.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.7.2.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ar/Thunderbird Setup 38.7.2.exe'] --2016-05-09 17:44:18-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ar/Thunderbird%20Setup%2038.7.2.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34009048 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:44:20 GMT ETag: "c8e6f6821a181282c28fa974f7878539" Last-Modified: Mon, 04 Apr 2016 16:49:04 GMT x-amz-replication-status: COMPLETED x-amz-version-id: D.LqY5ATAuXBCvj0.smPiijWkyNDZOln X-Cache: Miss from cloudfront Via: 1.1 373880a309382d9266a9313233b86d25.cloudfront.net (CloudFront) X-Amz-Cf-Id: PcMPWrK2D8Bmb34iNC8PG3ClTUkcEFXgeuoSE9Qss-3tnR1qZ6nuRQ== Length: 34009048 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.7.2.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.46M 20s 3072K ........ ........ ........ ........ ........ ........ 18% 3.47M 13s 6144K ........ ........ ........ ........ ........ ........ 27% 4.35M 9s 9216K ........ ........ ........ ........ ........ ........ 36% 4.45M 7s 12288K ........ ........ ........ ........ ........ ........ 46% 4.66M 6s 15360K ........ ........ ........ ........ ........ ........ 55% 4.53M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 4.70M 3s 21504K ........ ........ ........ ........ ........ ........ 73% 4.66M 2s 24576K ........ ........ ........ ........ ........ ........ 83% 4.58M 2s 27648K ........ ........ ........ ........ ........ ........ 92% 4.89M 1s 30720K ........ ........ ........ ........ ...... 100% 5.59M=8.6s 2016-05-09 17:44:28 (3.78 MB/s) - 'Thunderbird Setup 38.7.2.exe' saved [34009048/34009048] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ar/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ar/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:44:33-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ar/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34863128 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:44:36 GMT ETag: "bf3c5c4f4ffd78e7a1f3be3d7f00272d" Last-Modified: Mon, 09 May 2016 20:30:36 GMT x-amz-replication-status: COMPLETED x-amz-version-id: iYhD6R45g0N5SGC4SRsy9tcaTlZXoKgD X-Cache: Miss from cloudfront Via: 1.1 11512f00e812993b9daa35c376d7cb20.cloudfront.net (CloudFront) X-Amz-Cf-Id: lpIiypqQtlkzMEDHs1m9v7pXQt8KKb6OE5J88s9FDdJ8786dRhg7TQ== Length: 34863128 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.37M 22s 3072K ........ ........ ........ ........ ........ ........ 18% 2.99M 15s 6144K ........ ........ ........ ........ ........ ........ 27% 3.40M 11s 9216K ........ ........ ........ ........ ........ ........ 36% 3.40M 9s 12288K ........ ........ ........ ........ ........ ........ 45% 3.37M 7s 15360K ........ ........ ........ ........ ........ ........ 54% 3.31M 6s 18432K ........ ........ ........ ........ ........ ........ 63% 3.60M 4s 21504K ........ ........ ........ ........ ........ ........ 72% 4.02M 3s 24576K ........ ........ ........ ........ ........ ........ 81% 4.61M 2s 27648K ........ ........ ........ ........ ........ ........ 90% 6.63M 1s 30720K ........ ........ ........ ........ ........ ........ 99% 5.61M 0s 33792K ... 100% 3.36M=10s 2016-05-09 17:44:44 (3.31 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34863128/34863128] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia-ar.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia-ar.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia-ar.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia-ar.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia-ar.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia-ar.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ar"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ar"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia-ar.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/amazondotcom.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1455157 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:46 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1455156 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:46 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1520691 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:46 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1455117 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:46 source/bin/searchplugins/amazondotcom.xml 1455116 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:46 source/bin/searchplugins/bing.xml 1455115 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:46 source/bin/searchplugins/eBay.xml 1520650 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:46 source/bin/searchplugins/twitter.xml 1455113 1 -rw-r--r-- 1 cltbld Administrators 1403 May 17:46 source/bin/searchplugins/wikipedia-ar.xml 1455112 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:46 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ar/thunderbird-38.7.2-38.8.0.partial.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/partial.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ar/thunderbird-38.7.2-38.8.0.partial.mar'] --2016-05-09 17:46:22-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ar/thunderbird-38.7.2-38.8.0.partial.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 3228522 Connection: keep-alive Date: Tue, 10 May 2016 00:46:25 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 9jMmn0mazqi6vNnKlA85K5PtsVqFhvsl Last-Modified: Tue, 03 May 2016 14:30:46 GMT ETag: "71ec298f9ab296c9633fbed09df1ab46" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 11512f00e812993b9daa35c376d7cb20.cloudfront.net (CloudFront) X-Amz-Cf-Id: 8FOxW6zDYh_5FnxfSLFdPxbGXREt23IYDZ9gvyNNJ5g5EhdIx2JOtw== Length: 3228522 (3.1M) [application/octet-stream] Saving to: 'update/partial.mar' 0K ........ ........ ........ ........ ........ ........ 97% 2.12M 0s 3072K . 100% 1.95M=1.5s 2016-05-09 17:46:24 (2.12 MB/s) - 'update/partial.mar' saved [3228522/3228522] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ar/Thunderbird Setup 38.7.2.exe' from cache... Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ar/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE partial PREPARE PATCH xul.dll PREPARE PATCH voucher.bin PREPARE PATCH updater.exe PREPARE PATCH uninstall/helper.exe PREPARE PATCH thunderbird.exe PREPARE PATCH softokn3.dll PREPARE ADD softokn3.chk PREPARE PATCH sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE PATCH plugin-container.exe PREPARE PATCH platform.ini PREPARE PATCH omni.ja PREPARE PATCH nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE PATCH nssckbi.dll PREPARE PATCH nss3.dll PREPARE PATCH nsldif32v60.dll PREPARE PATCH nsldappr32v60.dll PREPARE PATCH nsldap32v60.dll PREPARE PATCH mozglue.dll PREPARE PATCH mozalloc.dll PREPARE PATCH mozMapi32.dll PREPARE PATCH maintenanceservice_installer.exe PREPARE PATCH maintenanceservice.exe PREPARE PATCH libGLESv2.dll PREPARE PATCH libEGL.dll PREPARE PATCH icuuc52.dll PREPARE PATCH icuin52.dll PREPARE PATCH icudt52.dll PREPARE PATCH freebl3.dll PREPARE ADD freebl3.chk PREPARE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE PATCH crashreporter.exe PREPARE PATCH breakpadinjector.dll PREPARE PATCH blocklist.xml PREPARE PATCH application.ini PREPARE PATCH WSEnable.exe PREPARE PATCH MapiProxy.dll PREPARE PATCH AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE PATCH xul.dll EXECUTE PATCH voucher.bin EXECUTE PATCH updater.exe EXECUTE PATCH uninstall/helper.exe EXECUTE PATCH thunderbird.exe EXECUTE PATCH softokn3.dll EXECUTE ADD softokn3.chk EXECUTE PATCH sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE PATCH plugin-container.exe EXECUTE PATCH platform.ini EXECUTE PATCH omni.ja EXECUTE PATCH nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE PATCH nssckbi.dll EXECUTE PATCH nss3.dll EXECUTE PATCH nsldif32v60.dll EXECUTE PATCH nsldappr32v60.dll EXECUTE PATCH nsldap32v60.dll EXECUTE PATCH mozglue.dll EXECUTE PATCH mozalloc.dll EXECUTE PATCH mozMapi32.dll EXECUTE PATCH maintenanceservice_installer.exe EXECUTE PATCH maintenanceservice.exe EXECUTE PATCH libGLESv2.dll EXECUTE PATCH libEGL.dll EXECUTE PATCH icuuc52.dll EXECUTE PATCH icuin52.dll EXECUTE PATCH icudt52.dll EXECUTE PATCH freebl3.dll EXECUTE ADD freebl3.chk EXECUTE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE PATCH crashreporter.exe EXECUTE PATCH breakpadinjector.dll EXECUTE PATCH blocklist.xml EXECUTE PATCH application.ini EXECUTE PATCH WSEnable.exe EXECUTE PATCH MapiProxy.dll EXECUTE PATCH AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH PATCH xul.dll FINISH PATCH voucher.bin FINISH PATCH updater.exe FINISH PATCH uninstall/helper.exe FINISH PATCH thunderbird.exe FINISH PATCH softokn3.dll FINISH ADD softokn3.chk FINISH PATCH sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH PATCH plugin-container.exe FINISH PATCH platform.ini FINISH PATCH omni.ja FINISH PATCH nssdbm3.dll FINISH ADD nssdbm3.chk FINISH PATCH nssckbi.dll FINISH PATCH nss3.dll FINISH PATCH nsldif32v60.dll FINISH PATCH nsldappr32v60.dll FINISH PATCH nsldap32v60.dll FINISH PATCH mozglue.dll FINISH PATCH mozalloc.dll FINISH PATCH mozMapi32.dll FINISH PATCH maintenanceservice_installer.exe FINISH PATCH maintenanceservice.exe FINISH PATCH libGLESv2.dll FINISH PATCH libEGL.dll FINISH PATCH icuuc52.dll FINISH PATCH icuin52.dll FINISH PATCH icudt52.dll FINISH PATCH freebl3.dll FINISH ADD freebl3.chk FINISH PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH PATCH crashreporter.exe FINISH PATCH breakpadinjector.dll FINISH PATCH blocklist.xml FINISH PATCH application.ini FINISH PATCH WSEnable.exe FINISH PATCH MapiProxy.dll FINISH PATCH AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ar"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ar"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia-ar.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/amazondotcom.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1389879 1 -rw-r--r-- 1 cltbld Administrators 1221 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1389880 2 -rw-r--r-- 1 cltbld Administrators 2284 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1979443 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:47 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1389917 1 -rw-r--r-- 1 cltbld Administrators 1531 Apr 03:28 source/bin/searchplugins/amazondotcom.xml 1389918 2 -rw-r--r-- 1 cltbld Administrators 2453 Apr 03:28 source/bin/searchplugins/bing.xml 1389919 2 -rw-r--r-- 1 cltbld Administrators 2569 Apr 03:28 source/bin/searchplugins/eBay.xml 1389920 1 -rw-r--r-- 1 cltbld Administrators 899 Apr 03:28 source/bin/searchplugins/twitter.xml 1389921 1 -rw-r--r-- 1 cltbld Administrators 1403 Apr 03:48 source/bin/searchplugins/wikipedia-ar.xml 1389922 1 -rw-r--r-- 1 cltbld Administrators 1363 Apr 03:28 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 SUCCESS: partial updates are smaller than complete updates, all is well in the universe Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:47:11-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:47:13 GMT Keep-Alive: timeout=5, max=996 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 946 Length: 946 [text/xml] Saving to: 'update.xml' 0K 100% 3.34M=0s 2016-05-09 17:47:11 (3.34 MB/s) - 'update.xml' saved [946/946] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ast/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ast/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:47:12-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ast/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41603607 Connection: keep-alive Date: Tue, 10 May 2016 00:47:09 GMT x-amz-replication-status: COMPLETED x-amz-version-id: og1DKzIAyux4vuxiXeSAViYG_jbSZiex Last-Modified: Tue, 03 May 2016 14:45:31 GMT ETag: "e712296a42317b69505bec6b4dc935f7" Accept-Ranges: bytes Server: AmazonS3 Age: 5 X-Cache: Hit from cloudfront Via: 1.1 aa96a51fedae85199c643eb5c8eca4e4.cloudfront.net (CloudFront) X-Amz-Cf-Id: Y4imsHKPzc27jajBfNwUGbYi95rrDkvtDL6o1PkfnN2oyH3U5Xl6HQ== Length: 41603607 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.82M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 13.7M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 18.7M 3s 9216K ........ ........ ........ ........ ........ ........ 30% 23.6M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 30.2M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 34.4M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 37.5M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 42.7M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 41.3M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 27.0M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 14.4M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 16.1M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 17.4M 0s 39936K ........ .. 100% 15.1M=2.3s 2016-05-09 17:47:14 (17.6 MB/s) - 'update/complete.mar' saved [41603607/41603607] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ast/Thunderbird Setup 38.7.2.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.7.2.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ast/Thunderbird Setup 38.7.2.exe'] --2016-05-09 17:47:15-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ast/Thunderbird%20Setup%2038.7.2.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33934328 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:47:17 GMT ETag: "94c17127d15625b6b70601a58bab373d" Last-Modified: Mon, 04 Apr 2016 16:49:06 GMT x-amz-replication-status: COMPLETED x-amz-version-id: sNjrSgw5qwWOFqosGRwd_OdlwBHaYFmR X-Cache: Miss from cloudfront Via: 1.1 978198446b6fdba8a499c04f84a3a7e6.cloudfront.net (CloudFront) X-Amz-Cf-Id: V7ntghC1B_r9H81pW40uucKgWxG2btnZfswV1G1FAjh1h2AF0wGHYw== Length: 33934328 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.7.2.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.64M 18s 3072K ........ ........ ........ ........ ........ ........ 18% 5.44M 10s 6144K ........ ........ ........ ........ ........ ........ 27% 8.23M 7s 9216K ........ ........ ........ ........ ........ ........ 37% 8.40M 5s 12288K ........ ........ ........ ........ ........ ........ 46% 12.7M 4s 15360K ........ ........ ........ ........ ........ ........ 55% 18.0M 3s 18432K ........ ........ ........ ........ ........ ........ 64% 19.5M 2s 21504K ........ ........ ........ ........ ........ ........ 74% 10.2M 1s 24576K ........ ........ ........ ........ ........ ........ 83% 26.2M 1s 27648K ........ ........ ........ ........ ........ ........ 92% 16.1M 0s 30720K ........ ........ ........ ........ ..... 100% 14.5M=4.4s 2016-05-09 17:47:20 (7.33 MB/s) - 'Thunderbird Setup 38.7.2.exe' saved [33934328/33934328] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ast/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ast/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:47:21-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ast/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34783904 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:47:23 GMT ETag: "4907d6d37f06b87a44df481324dbaf32" Last-Modified: Mon, 09 May 2016 20:50:30 GMT x-amz-replication-status: COMPLETED x-amz-version-id: enM1hB2d2eq0hJVNdjdy78DUKrthFX5I X-Cache: Miss from cloudfront Via: 1.1 fc7da6323a08a2c16d48dd4939ce0898.cloudfront.net (CloudFront) X-Amz-Cf-Id: Jfh6S5ImcaIgZ_Vid8f1vknLkl2HFRtUZcLM2khXs5GihIPYXXv90w== Length: 34783904 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.73M 17s 3072K ........ ........ ........ ........ ........ ........ 18% 6.29M 10s 6144K ........ ........ ........ ........ ........ ........ 27% 8.01M 7s 9216K ........ ........ ........ ........ ........ ........ 36% 9.00M 5s 12288K ........ ........ ........ ........ ........ ........ 45% 9.43M 4s 15360K ........ ........ ........ ........ ........ ........ 54% 15.1M 3s 18432K ........ ........ ........ ........ ........ ........ 63% 18.6M 2s 21504K ........ ........ ........ ........ ........ ........ 72% 14.3M 1s 24576K ........ ........ ........ ........ ........ ........ 81% 18.1M 1s 27648K ........ ........ ........ ........ ........ ........ 90% 22.1M 0s 30720K ........ ........ ........ ........ ........ ........ 99% 19.9M 0s 33792K .. 100% 41.8M=4.3s 2016-05-09 17:47:25 (7.79 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34783904/34783904] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia-ast.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia-ast.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia-ast.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia-ast.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia-ast.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia-ast.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ast"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ast"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia-ast.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d59 < rmdir "searchplugins/" 71d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1979455 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:48 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1848382 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:48 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 2044989 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:48 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1979410 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:48 source/bin/searchplugins/amazondotcom.xml 1848337 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:48 source/bin/searchplugins/aol-web-search.xml 1848336 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:48 source/bin/searchplugins/bing.xml 2044943 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:48 source/bin/searchplugins/eBay.xml 1848334 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:48 source/bin/searchplugins/twitter.xml 1913869 1 -rw-r--r-- 1 cltbld Administrators 1336 May 17:48 source/bin/searchplugins/wikipedia-ast.xml 1913868 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:48 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ast/thunderbird-38.7.2-38.8.0.partial.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/partial.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ast/thunderbird-38.7.2-38.8.0.partial.mar'] --2016-05-09 17:48:18-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ast/thunderbird-38.7.2-38.8.0.partial.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 3234485 Connection: keep-alive Date: Tue, 10 May 2016 00:48:21 GMT x-amz-replication-status: COMPLETED x-amz-version-id: yzNoUhBtxlt2hESs_PdpADoP9eOHOczT Last-Modified: Tue, 03 May 2016 14:45:56 GMT ETag: "a07d3604e4b9fd8f179c4e300b14aaeb" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 f4879b16ae11c9a08a3038de5ea0df75.cloudfront.net (CloudFront) X-Amz-Cf-Id: OsRd90-xjPSBuE3BupuwXfTr30SouPc1MZIX9-Te_pJDmoYzXYp3Lg== Length: 3234485 (3.1M) [application/octet-stream] Saving to: 'update/partial.mar' 0K ........ ........ ........ ........ ........ ........ 97% 927K 0s 3072K . 100% 1.12M=3.4s 2016-05-09 17:48:22 (932 KB/s) - 'update/partial.mar' saved [3234485/3234485] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/ast/Thunderbird Setup 38.7.2.exe' from cache... Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/ast/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE partial PREPARE PATCH xul.dll PREPARE PATCH voucher.bin PREPARE PATCH updater.exe PREPARE PATCH uninstall/helper.exe PREPARE PATCH thunderbird.exe PREPARE PATCH softokn3.dll PREPARE ADD softokn3.chk PREPARE PATCH sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE PATCH plugin-container.exe PREPARE PATCH platform.ini PREPARE PATCH omni.ja PREPARE PATCH nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE PATCH nssckbi.dll PREPARE PATCH nss3.dll PREPARE PATCH nsldif32v60.dll PREPARE PATCH nsldappr32v60.dll PREPARE PATCH nsldap32v60.dll PREPARE PATCH mozglue.dll PREPARE PATCH mozalloc.dll PREPARE PATCH mozMapi32.dll PREPARE PATCH maintenanceservice_installer.exe PREPARE PATCH maintenanceservice.exe PREPARE PATCH libGLESv2.dll PREPARE PATCH libEGL.dll PREPARE PATCH icuuc52.dll PREPARE PATCH icuin52.dll PREPARE PATCH icudt52.dll PREPARE PATCH freebl3.dll PREPARE ADD freebl3.chk PREPARE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE PATCH crashreporter.exe PREPARE PATCH breakpadinjector.dll PREPARE PATCH blocklist.xml PREPARE PATCH application.ini PREPARE PATCH WSEnable.exe PREPARE PATCH MapiProxy.dll PREPARE PATCH AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE PATCH xul.dll EXECUTE PATCH voucher.bin EXECUTE PATCH updater.exe EXECUTE PATCH uninstall/helper.exe EXECUTE PATCH thunderbird.exe EXECUTE PATCH softokn3.dll EXECUTE ADD softokn3.chk EXECUTE PATCH sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE PATCH plugin-container.exe EXECUTE PATCH platform.ini EXECUTE PATCH omni.ja EXECUTE PATCH nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE PATCH nssckbi.dll EXECUTE PATCH nss3.dll EXECUTE PATCH nsldif32v60.dll EXECUTE PATCH nsldappr32v60.dll EXECUTE PATCH nsldap32v60.dll EXECUTE PATCH mozglue.dll EXECUTE PATCH mozalloc.dll EXECUTE PATCH mozMapi32.dll EXECUTE PATCH maintenanceservice_installer.exe EXECUTE PATCH maintenanceservice.exe EXECUTE PATCH libGLESv2.dll EXECUTE PATCH libEGL.dll EXECUTE PATCH icuuc52.dll EXECUTE PATCH icuin52.dll EXECUTE PATCH icudt52.dll EXECUTE PATCH freebl3.dll EXECUTE ADD freebl3.chk EXECUTE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE PATCH crashreporter.exe EXECUTE PATCH breakpadinjector.dll EXECUTE PATCH blocklist.xml EXECUTE PATCH application.ini EXECUTE PATCH WSEnable.exe EXECUTE PATCH MapiProxy.dll EXECUTE PATCH AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH PATCH xul.dll FINISH PATCH voucher.bin FINISH PATCH updater.exe FINISH PATCH uninstall/helper.exe FINISH PATCH thunderbird.exe FINISH PATCH softokn3.dll FINISH ADD softokn3.chk FINISH PATCH sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH PATCH plugin-container.exe FINISH PATCH platform.ini FINISH PATCH omni.ja FINISH PATCH nssdbm3.dll FINISH ADD nssdbm3.chk FINISH PATCH nssckbi.dll FINISH PATCH nss3.dll FINISH PATCH nsldif32v60.dll FINISH PATCH nsldappr32v60.dll FINISH PATCH nsldap32v60.dll FINISH PATCH mozglue.dll FINISH PATCH mozalloc.dll FINISH PATCH mozMapi32.dll FINISH PATCH maintenanceservice_installer.exe FINISH PATCH maintenanceservice.exe FINISH PATCH libGLESv2.dll FINISH PATCH libEGL.dll FINISH PATCH icuuc52.dll FINISH PATCH icuin52.dll FINISH PATCH icudt52.dll FINISH PATCH freebl3.dll FINISH ADD freebl3.chk FINISH PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH PATCH crashreporter.exe FINISH PATCH breakpadinjector.dll FINISH PATCH blocklist.xml FINISH PATCH application.ini FINISH PATCH WSEnable.exe FINISH PATCH MapiProxy.dll FINISH PATCH AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "ast"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "ast"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia-ast.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 69d59 < rmdir "searchplugins/" 71d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1520960 1 -rw-r--r-- 1 cltbld Administrators 1221 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1520961 2 -rw-r--r-- 1 cltbld Administrators 2284 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1979453 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:48 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1520998 1 -rw-r--r-- 1 cltbld Administrators 1531 Apr 03:28 source/bin/searchplugins/amazondotcom.xml 1520999 1 -rw-r--r-- 1 cltbld Administrators 1670 Apr 03:28 source/bin/searchplugins/aol-web-search.xml 1521000 2 -rw-r--r-- 1 cltbld Administrators 2453 Apr 03:28 source/bin/searchplugins/bing.xml 1521001 2 -rw-r--r-- 1 cltbld Administrators 2569 Apr 03:28 source/bin/searchplugins/eBay.xml 1521002 1 -rw-r--r-- 1 cltbld Administrators 899 Apr 03:28 source/bin/searchplugins/twitter.xml 1521003 1 -rw-r--r-- 1 cltbld Administrators 1336 Apr 04:05 source/bin/searchplugins/wikipedia-ast.xml 1848684 1 -rw-r--r-- 1 cltbld Administrators 1363 Apr 03:28 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 SUCCESS: partial updates are smaller than complete updates, all is well in the universe Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:48:54-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:48:56 GMT Keep-Alive: timeout=5, max=946 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.21M=0s 2016-05-09 17:48:54 (3.21 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/be/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/be/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:48:55-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/be/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41605033 Connection: keep-alive Date: Tue, 10 May 2016 00:20:24 GMT x-amz-replication-status: COMPLETED x-amz-version-id: xa8oLK1f00bFqix.VwGfRamm8xmc4A95 Last-Modified: Tue, 03 May 2016 15:00:56 GMT ETag: "3b310f1f39dc5eaf3c71df6f47d4c934" Accept-Ranges: bytes Server: AmazonS3 Age: 1713 X-Cache: Hit from cloudfront Via: 1.1 11512f00e812993b9daa35c376d7cb20.cloudfront.net (CloudFront) X-Amz-Cf-Id: Y0lR5BvwsrkrIfEyATTzGkNrcsEPeML1FLfT0ICvP-FDXInO3ae3QA== Length: 41605033 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 2.64M 14s 3072K ........ ........ ........ ........ ........ ........ 15% 8.05M 8s 6144K ........ ........ ........ ........ ........ ........ 22% 10.5M 6s 9216K ........ ........ ........ ........ ........ ........ 30% 9.50M 5s 12288K ........ ........ ........ ........ ........ ........ 37% 9.47M 4s 15360K ........ ........ ........ ........ ........ ........ 45% 9.61M 3s 18432K ........ ........ ........ ........ ........ ........ 52% 11.1M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 11.8M 2s 24576K ........ ........ ........ ........ ........ ........ 68% 11.7M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 11.2M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 11.6M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 12.0M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 11.4M 0s 39936K ........ .. 100% 12.3M=4.6s 2016-05-09 17:48:59 (8.60 MB/s) - 'update/complete.mar' saved [41605033/41605033] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/be/Thunderbird Setup 38.7.2.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.7.2.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/be/Thunderbird Setup 38.7.2.exe'] --2016-05-09 17:49:00-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/be/Thunderbird%20Setup%2038.7.2.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 33975240 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:49:02 GMT ETag: "0395682eddfd7ebfc6a858e4dbf3be1f" Last-Modified: Mon, 04 Apr 2016 16:49:07 GMT x-amz-replication-status: COMPLETED x-amz-version-id: uEZX3pZdWBu571gm4fP0ewF5Jd3Gvqoh X-Cache: Miss from cloudfront Via: 1.1 88972e3933cc06dd11a6fa704a208631.cloudfront.net (CloudFront) X-Amz-Cf-Id: 4BKEFxYvZnkbWFfl3dhPRRQ28PEisPf52QXfYNObBzMoXm6RRe1GZQ== Length: 33975240 (32M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.7.2.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.85M 16s 3072K ........ ........ ........ ........ ........ ........ 18% 5.68M 9s 6144K ........ ........ ........ ........ ........ ........ 27% 9.19M 6s 9216K ........ ........ ........ ........ ........ ........ 37% 8.22M 5s 12288K ........ ........ ........ ........ ........ ........ 46% 8.72M 4s 15360K ........ ........ ........ ........ ........ ........ 55% 8.53M 3s 18432K ........ ........ ........ ........ ........ ........ 64% 7.27M 2s 21504K ........ ........ ........ ........ ........ ........ 74% 984K 2s 24576K ........ ........ ........ ........ ........ ........ 83% 4.24M 2s 27648K ........ ........ ........ ........ ........ ........ 92% 7.39M 1s 30720K ........ ........ ........ ........ ...... 100% 8.32M=8.5s 2016-05-09 17:49:09 (3.82 MB/s) - 'Thunderbird Setup 38.7.2.exe' saved [33975240/33975240] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/be/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/be/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:49:10-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/be/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34828544 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:20:45 GMT ETag: "c46c8cebce2ddfb33874c8c619e12285" Last-Modified: Mon, 09 May 2016 21:10:07 GMT x-amz-replication-status: COMPLETED x-amz-version-id: kCePOflseLtFvkxtEelgLs.gEsAFZalg Age: 1706 X-Cache: Hit from cloudfront Via: 1.1 6eaa7f856e226a0db7cef6201d3b8393.cloudfront.net (CloudFront) X-Amz-Cf-Id: HoZS9K4AtWba-LU9iRrSq7wxgEi8ny0hMonVFMcYVvjjC5e8lRa-ag== Length: 34828544 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 9% 5.39M 6s 3072K ........ ........ ........ ........ ........ ........ 18% 32.4M 3s 6144K ........ ........ ........ ........ ........ ........ 27% 37.8M 2s 9216K ........ ........ ........ ........ ........ ........ 36% 42.9M 1s 12288K ........ ........ ........ ........ ........ ........ 45% 47.8M 1s 15360K ........ ........ ........ ........ ........ ........ 54% 51.0M 1s 18432K ........ ........ ........ ........ ........ ........ 63% 51.0M 1s 21504K ........ ........ ........ ........ ........ ........ 72% 50.9M 0s 24576K ........ ........ ........ ........ ........ ........ 81% 50.3M 0s 27648K ........ ........ ........ ........ ........ ........ 90% 51.5M 0s 30720K ........ ........ ........ ........ ........ ........ 99% 31.6M 0s 33792K ... 100% 53.3M=1.3s 2016-05-09 17:49:11 (26.5 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [34828544/34828544] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yandex.by.xml PREPARE REMOVEFILE searchplugins/tut.by.xml PREPARE REMOVEFILE searchplugins/ru.wikipedia.org-be.xml PREPARE REMOVEFILE searchplugins/google.xml PREPARE REMOVEFILE searchplugins/be.wikipedia.org.xml PREPARE REMOVEFILE searchplugins/be-x-old.wikipedia.org.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yandex.by.xml PREPARE ADD searchplugins/tut.by.xml PREPARE ADD searchplugins/ru.wikipedia.org-be.xml PREPARE ADD searchplugins/google.xml PREPARE ADD searchplugins/be.wikipedia.org.xml PREPARE ADD searchplugins/be-x-old.wikipedia.org.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yandex.by.xml EXECUTE REMOVEFILE searchplugins/tut.by.xml EXECUTE REMOVEFILE searchplugins/ru.wikipedia.org-be.xml EXECUTE REMOVEFILE searchplugins/google.xml EXECUTE REMOVEFILE searchplugins/be.wikipedia.org.xml EXECUTE REMOVEFILE searchplugins/be-x-old.wikipedia.org.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yandex.by.xml EXECUTE ADD searchplugins/tut.by.xml EXECUTE ADD searchplugins/ru.wikipedia.org-be.xml EXECUTE ADD searchplugins/google.xml EXECUTE ADD searchplugins/be.wikipedia.org.xml EXECUTE ADD searchplugins/be-x-old.wikipedia.org.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yandex.by.xml FINISH REMOVEFILE searchplugins/tut.by.xml FINISH REMOVEFILE searchplugins/ru.wikipedia.org-be.xml FINISH REMOVEFILE searchplugins/google.xml FINISH REMOVEFILE searchplugins/be.wikipedia.org.xml FINISH REMOVEFILE searchplugins/be-x-old.wikipedia.org.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yandex.by.xml FINISH ADD searchplugins/tut.by.xml FINISH ADD searchplugins/ru.wikipedia.org-be.xml FINISH ADD searchplugins/google.xml FINISH ADD searchplugins/be.wikipedia.org.xml FINISH ADD searchplugins/be-x-old.wikipedia.org.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "be"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "be"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yandex.by.xml" < remove "searchplugins/tut.by.xml" < remove "searchplugins/ru.wikipedia.org-be.xml" < remove "searchplugins/google.xml" < remove "searchplugins/be.wikipedia.org.xml" < remove "searchplugins/be-x-old.wikipedia.org.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 2045000 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 2044999 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1324102 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:49 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1324053 2 -rw-r--r-- 1 cltbld Administrators 2803 May 17:49 source/bin/searchplugins/be-x-old.wikipedia.org.xml 1389588 2 -rw-r--r-- 1 cltbld Administrators 2761 May 17:49 source/bin/searchplugins/be.wikipedia.org.xml 1389587 2 -rw-r--r-- 1 cltbld Administrators 2371 May 17:49 source/bin/searchplugins/google.xml 1389586 2 -rw-r--r-- 1 cltbld Administrators 2759 May 17:49 source/bin/searchplugins/ru.wikipedia.org-be.xml 1520657 1 -rw-r--r-- 1 cltbld Administrators 1421 May 17:49 source/bin/searchplugins/tut.by.xml 1520656 1 -rw-r--r-- 1 cltbld Administrators 1892 May 17:49 source/bin/searchplugins/yandex.by.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/be/thunderbird-38.7.2-38.8.0.partial.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/partial.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/be/thunderbird-38.7.2-38.8.0.partial.mar'] --2016-05-09 17:49:45-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/be/thunderbird-38.7.2-38.8.0.partial.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 3234461 Connection: keep-alive Date: Tue, 10 May 2016 00:49:48 GMT x-amz-replication-status: COMPLETED x-amz-version-id: rkna87XG9ZCwzv0RrA0lGa6YqerJpVRu Last-Modified: Tue, 03 May 2016 15:01:01 GMT ETag: "0c0c15fd1b3f0f72e10dc874ca6f991b" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 88972e3933cc06dd11a6fa704a208631.cloudfront.net (CloudFront) X-Amz-Cf-Id: r0EnYfOKrsaJPMO59f1mS8b8cQX8PvBU56W753D50GCrBVKTnhXPCg== Length: 3234461 (3.1M) [application/octet-stream] Saving to: 'update/partial.mar' 0K ........ ........ ........ ........ ........ ........ 97% 4.17M 0s 3072K . 100% 3.53M=0.7s 2016-05-09 17:49:46 (4.15 MB/s) - 'update/partial.mar' saved [3234461/3234461] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/be/Thunderbird Setup 38.7.2.exe' from cache... Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/be/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE partial PREPARE PATCH xul.dll PREPARE PATCH voucher.bin PREPARE PATCH updater.exe PREPARE PATCH uninstall/helper.exe PREPARE PATCH thunderbird.exe PREPARE PATCH softokn3.dll PREPARE ADD softokn3.chk PREPARE PATCH sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE PATCH plugin-container.exe PREPARE PATCH platform.ini PREPARE PATCH omni.ja PREPARE PATCH nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE PATCH nssckbi.dll PREPARE PATCH nss3.dll PREPARE PATCH nsldif32v60.dll PREPARE PATCH nsldappr32v60.dll PREPARE PATCH nsldap32v60.dll PREPARE PATCH mozglue.dll PREPARE PATCH mozalloc.dll PREPARE PATCH mozMapi32.dll PREPARE PATCH maintenanceservice_installer.exe PREPARE PATCH maintenanceservice.exe PREPARE PATCH libGLESv2.dll PREPARE PATCH libEGL.dll PREPARE PATCH icuuc52.dll PREPARE PATCH icuin52.dll PREPARE PATCH icudt52.dll PREPARE PATCH freebl3.dll PREPARE ADD freebl3.chk PREPARE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE PATCH crashreporter.exe PREPARE PATCH breakpadinjector.dll PREPARE PATCH blocklist.xml PREPARE PATCH application.ini PREPARE PATCH WSEnable.exe PREPARE PATCH MapiProxy.dll PREPARE PATCH AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE PATCH xul.dll EXECUTE PATCH voucher.bin EXECUTE PATCH updater.exe EXECUTE PATCH uninstall/helper.exe EXECUTE PATCH thunderbird.exe EXECUTE PATCH softokn3.dll EXECUTE ADD softokn3.chk EXECUTE PATCH sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE PATCH plugin-container.exe EXECUTE PATCH platform.ini EXECUTE PATCH omni.ja EXECUTE PATCH nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE PATCH nssckbi.dll EXECUTE PATCH nss3.dll EXECUTE PATCH nsldif32v60.dll EXECUTE PATCH nsldappr32v60.dll EXECUTE PATCH nsldap32v60.dll EXECUTE PATCH mozglue.dll EXECUTE PATCH mozalloc.dll EXECUTE PATCH mozMapi32.dll EXECUTE PATCH maintenanceservice_installer.exe EXECUTE PATCH maintenanceservice.exe EXECUTE PATCH libGLESv2.dll EXECUTE PATCH libEGL.dll EXECUTE PATCH icuuc52.dll EXECUTE PATCH icuin52.dll EXECUTE PATCH icudt52.dll EXECUTE PATCH freebl3.dll EXECUTE ADD freebl3.chk EXECUTE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE PATCH crashreporter.exe EXECUTE PATCH breakpadinjector.dll EXECUTE PATCH blocklist.xml EXECUTE PATCH application.ini EXECUTE PATCH WSEnable.exe EXECUTE PATCH MapiProxy.dll EXECUTE PATCH AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH PATCH xul.dll FINISH PATCH voucher.bin FINISH PATCH updater.exe FINISH PATCH uninstall/helper.exe FINISH PATCH thunderbird.exe FINISH PATCH softokn3.dll FINISH ADD softokn3.chk FINISH PATCH sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH PATCH plugin-container.exe FINISH PATCH platform.ini FINISH PATCH omni.ja FINISH PATCH nssdbm3.dll FINISH ADD nssdbm3.chk FINISH PATCH nssckbi.dll FINISH PATCH nss3.dll FINISH PATCH nsldif32v60.dll FINISH PATCH nsldappr32v60.dll FINISH PATCH nsldap32v60.dll FINISH PATCH mozglue.dll FINISH PATCH mozalloc.dll FINISH PATCH mozMapi32.dll FINISH PATCH maintenanceservice_installer.exe FINISH PATCH maintenanceservice.exe FINISH PATCH libGLESv2.dll FINISH PATCH libEGL.dll FINISH PATCH icuuc52.dll FINISH PATCH icuin52.dll FINISH PATCH icudt52.dll FINISH PATCH freebl3.dll FINISH ADD freebl3.chk FINISH PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH PATCH crashreporter.exe FINISH PATCH breakpadinjector.dll FINISH PATCH blocklist.xml FINISH PATCH application.ini FINISH PATCH WSEnable.exe FINISH PATCH MapiProxy.dll FINISH PATCH AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < < //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "be"); < < //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\comm-esr38\calendar\locales\en-US\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 4 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 6 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > > //@line 9 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 12 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "be"); > > //@line 23 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\comm-esr45\calendar\locales\en-US\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,14d8 < remove "searchplugins/yandex.by.xml" < remove "searchplugins/tut.by.xml" < remove "searchplugins/ru.wikipedia.org-be.xml" < remove "searchplugins/google.xml" < remove "searchplugins/be.wikipedia.org.xml" < remove "searchplugins/be-x-old.wikipedia.org.xml" 16a11 > remove "prldap60.dll" 25,27d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 31d22 < remove "mozalloc.dll" 36a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 43,45c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 48,50c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 68d59 < rmdir "searchplugins/" 70d60 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1979719 1 -rw-r--r-- 1 cltbld Administrators 1221 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1914184 2 -rw-r--r-- 1 cltbld Administrators 2284 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1455175 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:50 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1979757 2 -rw-r--r-- 1 cltbld Administrators 2803 Apr 04:21 source/bin/searchplugins/be-x-old.wikipedia.org.xml 1914222 2 -rw-r--r-- 1 cltbld Administrators 2761 Apr 04:21 source/bin/searchplugins/be.wikipedia.org.xml 1848687 2 -rw-r--r-- 1 cltbld Administrators 2371 Apr 03:28 source/bin/searchplugins/google.xml 1848688 2 -rw-r--r-- 1 cltbld Administrators 2759 Apr 04:21 source/bin/searchplugins/ru.wikipedia.org-be.xml 1914225 1 -rw-r--r-- 1 cltbld Administrators 1421 Apr 04:21 source/bin/searchplugins/tut.by.xml 1914226 1 -rw-r--r-- 1 cltbld Administrators 1892 Apr 04:21 source/bin/searchplugins/yandex.by.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 SUCCESS: partial updates are smaller than complete updates, all is well in the universe Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:50:32-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:50:34 GMT Keep-Alive: timeout=5, max=717 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.43M=0s 2016-05-09 17:50:32 (3.43 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bg/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bg/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:50:32-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bg/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41905770 Connection: keep-alive Date: Tue, 10 May 2016 00:21:29 GMT x-amz-replication-status: COMPLETED x-amz-version-id: KbXJj_Q5RsNenF2NMwSLjFKF_7NsYMlc Last-Modified: Tue, 03 May 2016 15:15:52 GMT ETag: "bca17f84ffc5612acbfe8cb1faf6c91e" Accept-Ranges: bytes Server: AmazonS3 Age: 1746 X-Cache: Hit from cloudfront Via: 1.1 aa89533ad2ec5e0edba466c9920bd000.cloudfront.net (CloudFront) X-Amz-Cf-Id: VeGHiPfJjmWWZgoU5eSvOlC6c5yxVBvKS2-Bu3GWRo5sfG-LrA5ywg== Length: 41905770 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 5.03M 7s 3072K ........ ........ ........ ........ ........ ........ 15% 13.9M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 19.9M 3s 9216K ........ ........ ........ ........ ........ ........ 30% 24.3M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 29.3M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 32.6M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 42.4M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 41.3M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 24.7M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 32.6M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 36.0M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 33.3M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 30.5M 0s 39936K ........ ....... 100% 35.3M=1.9s 2016-05-09 17:50:34 (20.6 MB/s) - 'update/complete.mar' saved [41905770/41905770] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/bg/Thunderbird Setup 38.7.2.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 38.7.2.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/bg/Thunderbird Setup 38.7.2.exe'] --2016-05-09 17:50:36-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/bg/Thunderbird%20Setup%2038.7.2.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 34254904 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:50:38 GMT ETag: "7d77df42da352670b30ffbabb377086e" Last-Modified: Mon, 04 Apr 2016 16:49:08 GMT x-amz-replication-status: COMPLETED x-amz-version-id: aqo8BNroqKG7o.WOITFWT6nwbtXvbAgb X-Cache: Miss from cloudfront Via: 1.1 55676da1e5c0a9c4e60a94a95b01dc04.cloudfront.net (CloudFront) X-Amz-Cf-Id: mYLMCfQJcnnHtlHe0x0zzcTtGvIIfIyjrC8FFqRavqQ3YosRcAYvuA== Length: 34254904 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 38.7.2.exe' 0K ........ ........ ........ ........ ........ ........ 9% 1.83M 16s 3072K ........ ........ ........ ........ ........ ........ 18% 6.08M 9s 6144K ........ ........ ........ ........ ........ ........ 27% 9.99M 6s 9216K ........ ........ ........ ........ ........ ........ 36% 9.95M 5s 12288K ........ ........ ........ ........ ........ ........ 45% 2.61M 5s 15360K ........ ........ ........ ........ ........ ........ 55% 2.72M 4s 18432K ........ ........ ........ ........ ........ ........ 64% 2.21M 4s 21504K ........ ........ ........ ........ ........ ........ 73% 6.85M 2s 24576K ........ ........ ........ ........ ........ ........ 82% 6.09M 2s 27648K ........ ........ ........ ........ ........ ........ 91% 7.97M 1s 30720K ........ ........ ........ ........ ........ .. 100% 8.25M=8.0s 2016-05-09 17:50:44 (4.09 MB/s) - 'Thunderbird Setup 38.7.2.exe' saved [34254904/34254904] Downloading 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/bg/Thunderbird Setup 45.1.0.exe' and placing in cache... Executing: ['wget.exe', '-O', 'Thunderbird Setup 45.1.0.exe', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/bg/Thunderbird Setup 45.1.0.exe'] --2016-05-09 17:50:45-- http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/bg/Thunderbird%20Setup%2045.1.0.exe Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/x-msdownload Content-Length: 35099744 Connection: keep-alive Accept-Ranges: bytes Date: Tue, 10 May 2016 00:21:42 GMT ETag: "5f493e2c31a2f6bed88657338ed81019" Last-Modified: Mon, 09 May 2016 21:30:56 GMT x-amz-replication-status: COMPLETED x-amz-version-id: MofkWHQuRBbkSfP30Cm.YgU4UMdb8JbK Age: 1744 X-Cache: Hit from cloudfront Via: 1.1 5574699f9d8b8aad21acf2edbb25dc62.cloudfront.net (CloudFront) X-Amz-Cf-Id: UV-5BedLxSxwNjbRfSXbtnTtLXNebjPWDICQqPwhyQI6hzwj6w1Mww== Length: 35099744 (33M) [application/x-msdownload] Saving to: 'Thunderbird Setup 45.1.0.exe' 0K ........ ........ ........ ........ ........ ........ 8% 3.88M 8s 3072K ........ ........ ........ ........ ........ ........ 17% 11.1M 5s 6144K ........ ........ ........ ........ ........ ........ 26% 16.0M 3s 9216K ........ ........ ........ ........ ........ ........ 35% 20.2M 2s 12288K ........ ........ ........ ........ ........ ........ 44% 27.6M 2s 15360K ........ ........ ........ ........ ........ ........ 53% 33.5M 1s 18432K ........ ........ ........ ........ ........ ........ 62% 36.7M 1s 21504K ........ ........ ........ ........ ........ ........ 71% 40.7M 1s 24576K ........ ........ ........ ........ ........ ........ 80% 45.9M 0s 27648K ........ ........ ........ ........ ........ ........ 89% 51.9M 0s 30720K ........ ........ ........ ........ ........ ........ 98% 51.4M 0s 33792K ....... 100% 57.6M=1.9s 2016-05-09 17:50:47 (17.4 MB/s) - 'Thunderbird Setup 45.1.0.exe' saved [35099744/35099744] PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE complete PREPARE REMOVEFILE xul.dll PREPARE REMOVEFILE voucher.bin PREPARE REMOVEFILE updater.ini PREPARE REMOVEFILE updater.exe PREPARE REMOVEFILE uninstall/helper.exe PREPARE REMOVEFILE thunderbird.exe PREPARE REMOVEFILE softokn3.dll PREPARE REMOVEFILE softokn3.chk PREPARE REMOVEFILE searchplugins/yahoo.xml PREPARE REMOVEFILE searchplugins/wikipedia.xml PREPARE REMOVEFILE searchplugins/twitter.xml PREPARE REMOVEFILE searchplugins/eBay.xml PREPARE REMOVEFILE searchplugins/bing.xml PREPARE REMOVEFILE searchplugins/aol-web-search.xml PREPARE REMOVEFILE searchplugins/amazondotcom.xml PREPARE REMOVEFILE sandboxbroker.dll PREPARE REMOVEFILE removed-files PREPARE REMOVEFILE precomplete PREPARE REMOVEFILE plugin-container.exe PREPARE REMOVEFILE platform.ini PREPARE REMOVEFILE omni.ja PREPARE REMOVEFILE nssdbm3.dll PREPARE REMOVEFILE nssdbm3.chk PREPARE REMOVEFILE nssckbi.dll PREPARE REMOVEFILE nss3.dll PREPARE REMOVEFILE nsldif32v60.dll PREPARE REMOVEFILE nsldappr32v60.dll PREPARE REMOVEFILE nsldap32v60.dll PREPARE REMOVEFILE msvcr120.dll PREPARE REMOVEFILE msvcp120.dll PREPARE REMOVEFILE mozglue.dll PREPARE REMOVEFILE mozalloc.dll PREPARE REMOVEFILE mozMapi32.dll PREPARE REMOVEFILE maintenanceservice_installer.exe PREPARE REMOVEFILE maintenanceservice.exe PREPARE REMOVEFILE libGLESv2.dll PREPARE REMOVEFILE libEGL.dll PREPARE REMOVEFILE isp/rss.rdf PREPARE REMOVEFILE isp/SpamPal.sfd PREPARE REMOVEFILE isp/SpamAssassin.sfd PREPARE REMOVEFILE isp/POPFile.sfd PREPARE REMOVEFILE isp/DSPAM.sfd PREPARE REMOVEFILE isp/Bogofilter.sfd PREPARE REMOVEFILE icuuc52.dll PREPARE REMOVEFILE icuin52.dll PREPARE REMOVEFILE icudt52.dll PREPARE REMOVEFILE freebl3.dll PREPARE REMOVEFILE freebl3.chk PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE REMOVEFILE dictionaries/bg.dic PREPARE REMOVEFILE dictionaries/bg.aff PREPARE REMOVEFILE dependentlibs.list PREPARE REMOVEFILE defaults/messenger/mailViews.dat PREPARE REMOVEFILE d3dcompiler_47.dll PREPARE REMOVEFILE crashreporter.ini PREPARE REMOVEFILE crashreporter.exe PREPARE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico PREPARE REMOVEFILE chrome/icons/default/messengerWindow.ico PREPARE REMOVEFILE chrome/icons/default/addressbookWindow.ico PREPARE REMOVEFILE chrome/icons/default/abcardWindow.ico PREPARE REMOVEFILE breakpadinjector.dll PREPARE REMOVEFILE blocklist.xml PREPARE REMOVEFILE application.ini PREPARE REMOVEFILE WSEnable.exe PREPARE REMOVEFILE MapiProxy.dll PREPARE REMOVEFILE D3DCompiler_43.dll PREPARE REMOVEFILE AccessibleMarshal.dll PREPARE REMOVEDIR uninstall/ PREPARE REMOVEDIR searchplugins/ PREPARE REMOVEDIR isp/ PREPARE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ PREPARE REMOVEDIR extensions/ PREPARE REMOVEDIR dictionaries/ PREPARE REMOVEDIR defaults/pref/ PREPARE REMOVEDIR defaults/messenger/ PREPARE REMOVEDIR defaults/ PREPARE REMOVEDIR chrome/icons/default/ PREPARE REMOVEDIR chrome/icons/ PREPARE REMOVEDIR chrome/ PREPARE ADD xul.dll PREPARE ADD voucher.bin PREPARE ADD updater.ini PREPARE ADD updater.exe PREPARE ADD uninstall/helper.exe PREPARE ADD thunderbird.exe PREPARE ADD softokn3.dll PREPARE ADD softokn3.chk PREPARE ADD searchplugins/yahoo.xml PREPARE ADD searchplugins/wikipedia.xml PREPARE ADD searchplugins/twitter.xml PREPARE ADD searchplugins/eBay.xml PREPARE ADD searchplugins/bing.xml PREPARE ADD searchplugins/aol-web-search.xml PREPARE ADD searchplugins/amazondotcom.xml PREPARE ADD sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE ADD plugin-container.exe PREPARE ADD platform.ini PREPARE ADD omni.ja PREPARE ADD nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE ADD nssckbi.dll PREPARE ADD nss3.dll PREPARE ADD nsldif32v60.dll PREPARE ADD nsldappr32v60.dll PREPARE ADD nsldap32v60.dll PREPARE ADD msvcr120.dll PREPARE ADD msvcp120.dll PREPARE ADD mozglue.dll PREPARE ADD mozalloc.dll PREPARE ADD mozMapi32.dll PREPARE ADD maintenanceservice_installer.exe PREPARE ADD maintenanceservice.exe PREPARE ADD libGLESv2.dll PREPARE ADD libEGL.dll PREPARE ADD isp/rss.rdf PREPARE ADD isp/SpamPal.sfd PREPARE ADD isp/SpamAssassin.sfd PREPARE ADD isp/POPFile.sfd PREPARE ADD isp/DSPAM.sfd PREPARE ADD isp/Bogofilter.sfd PREPARE ADD icuuc52.dll PREPARE ADD icuin52.dll PREPARE ADD icudt52.dll PREPARE ADD freebl3.dll PREPARE ADD freebl3.chk PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png PREPARE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js PREPARE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE ADD dictionaries/bg.dic PREPARE ADD dictionaries/bg.aff PREPARE ADD dependentlibs.list PREPARE ADD defaults/messenger/mailViews.dat PREPARE ADD d3dcompiler_47.dll PREPARE ADD crashreporter.ini PREPARE ADD crashreporter.exe PREPARE ADD chrome/icons/default/msgcomposeWindow.ico PREPARE ADD chrome/icons/default/messengerWindow.ico PREPARE ADD chrome/icons/default/addressbookWindow.ico PREPARE ADD chrome/icons/default/abcardWindow.ico PREPARE ADD breakpadinjector.dll PREPARE ADD blocklist.xml PREPARE ADD application.ini PREPARE ADD WSEnable.exe PREPARE ADD MapiProxy.dll PREPARE ADD D3DCompiler_43.dll PREPARE ADD AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE REMOVEFILE xul.dll EXECUTE REMOVEFILE voucher.bin EXECUTE REMOVEFILE updater.ini EXECUTE REMOVEFILE updater.exe EXECUTE REMOVEFILE uninstall/helper.exe EXECUTE REMOVEFILE thunderbird.exe EXECUTE REMOVEFILE softokn3.dll EXECUTE REMOVEFILE softokn3.chk EXECUTE REMOVEFILE searchplugins/yahoo.xml EXECUTE REMOVEFILE searchplugins/wikipedia.xml EXECUTE REMOVEFILE searchplugins/twitter.xml EXECUTE REMOVEFILE searchplugins/eBay.xml EXECUTE REMOVEFILE searchplugins/bing.xml EXECUTE REMOVEFILE searchplugins/aol-web-search.xml EXECUTE REMOVEFILE searchplugins/amazondotcom.xml EXECUTE REMOVEFILE sandboxbroker.dll EXECUTE REMOVEFILE removed-files EXECUTE REMOVEFILE precomplete EXECUTE REMOVEFILE plugin-container.exe EXECUTE REMOVEFILE platform.ini EXECUTE REMOVEFILE omni.ja EXECUTE REMOVEFILE nssdbm3.dll EXECUTE REMOVEFILE nssdbm3.chk EXECUTE REMOVEFILE nssckbi.dll EXECUTE REMOVEFILE nss3.dll EXECUTE REMOVEFILE nsldif32v60.dll EXECUTE REMOVEFILE nsldappr32v60.dll EXECUTE REMOVEFILE nsldap32v60.dll EXECUTE REMOVEFILE msvcr120.dll EXECUTE REMOVEFILE msvcp120.dll EXECUTE REMOVEFILE mozglue.dll EXECUTE REMOVEFILE mozalloc.dll EXECUTE REMOVEFILE mozMapi32.dll EXECUTE REMOVEFILE maintenanceservice_installer.exe EXECUTE REMOVEFILE maintenanceservice.exe EXECUTE REMOVEFILE libGLESv2.dll EXECUTE REMOVEFILE libEGL.dll EXECUTE REMOVEFILE isp/rss.rdf EXECUTE REMOVEFILE isp/SpamPal.sfd EXECUTE REMOVEFILE isp/SpamAssassin.sfd EXECUTE REMOVEFILE isp/POPFile.sfd EXECUTE REMOVEFILE isp/DSPAM.sfd EXECUTE REMOVEFILE isp/Bogofilter.sfd EXECUTE REMOVEFILE icuuc52.dll EXECUTE REMOVEFILE icuin52.dll EXECUTE REMOVEFILE icudt52.dll EXECUTE REMOVEFILE freebl3.dll EXECUTE REMOVEFILE freebl3.chk EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE REMOVEFILE dictionaries/bg.dic EXECUTE REMOVEFILE dictionaries/bg.aff EXECUTE REMOVEFILE dependentlibs.list EXECUTE REMOVEFILE defaults/messenger/mailViews.dat EXECUTE REMOVEFILE d3dcompiler_47.dll EXECUTE REMOVEFILE crashreporter.ini EXECUTE REMOVEFILE crashreporter.exe EXECUTE REMOVEFILE chrome/icons/default/msgcomposeWindow.ico EXECUTE REMOVEFILE chrome/icons/default/messengerWindow.ico EXECUTE REMOVEFILE chrome/icons/default/addressbookWindow.ico EXECUTE REMOVEFILE chrome/icons/default/abcardWindow.ico EXECUTE REMOVEFILE breakpadinjector.dll EXECUTE REMOVEFILE blocklist.xml EXECUTE REMOVEFILE application.ini EXECUTE REMOVEFILE WSEnable.exe EXECUTE REMOVEFILE MapiProxy.dll EXECUTE REMOVEFILE D3DCompiler_43.dll EXECUTE REMOVEFILE AccessibleMarshal.dll EXECUTE REMOVEDIR uninstall/ EXECUTE REMOVEDIR searchplugins/ EXECUTE REMOVEDIR isp/ EXECUTE REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ EXECUTE REMOVEDIR extensions/ EXECUTE REMOVEDIR dictionaries/ EXECUTE REMOVEDIR defaults/pref/ EXECUTE REMOVEDIR defaults/messenger/ EXECUTE REMOVEDIR defaults/ EXECUTE REMOVEDIR chrome/icons/default/ EXECUTE REMOVEDIR chrome/icons/ EXECUTE REMOVEDIR chrome/ EXECUTE ADD xul.dll EXECUTE ADD voucher.bin EXECUTE ADD updater.ini EXECUTE ADD updater.exe EXECUTE ADD uninstall/helper.exe EXECUTE ADD thunderbird.exe EXECUTE ADD softokn3.dll EXECUTE ADD softokn3.chk EXECUTE ADD searchplugins/yahoo.xml EXECUTE ADD searchplugins/wikipedia.xml EXECUTE ADD searchplugins/twitter.xml EXECUTE ADD searchplugins/eBay.xml EXECUTE ADD searchplugins/bing.xml EXECUTE ADD searchplugins/aol-web-search.xml EXECUTE ADD searchplugins/amazondotcom.xml EXECUTE ADD sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE ADD plugin-container.exe EXECUTE ADD platform.ini EXECUTE ADD omni.ja EXECUTE ADD nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE ADD nssckbi.dll EXECUTE ADD nss3.dll EXECUTE ADD nsldif32v60.dll EXECUTE ADD nsldappr32v60.dll EXECUTE ADD nsldap32v60.dll EXECUTE ADD msvcr120.dll EXECUTE ADD msvcp120.dll EXECUTE ADD mozglue.dll EXECUTE ADD mozalloc.dll EXECUTE ADD mozMapi32.dll EXECUTE ADD maintenanceservice_installer.exe EXECUTE ADD maintenanceservice.exe EXECUTE ADD libGLESv2.dll EXECUTE ADD libEGL.dll EXECUTE ADD isp/rss.rdf EXECUTE ADD isp/SpamPal.sfd EXECUTE ADD isp/SpamAssassin.sfd EXECUTE ADD isp/POPFile.sfd EXECUTE ADD isp/DSPAM.sfd EXECUTE ADD isp/Bogofilter.sfd EXECUTE ADD icuuc52.dll EXECUTE ADD icuin52.dll EXECUTE ADD icudt52.dll EXECUTE ADD freebl3.dll EXECUTE ADD freebl3.chk EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png EXECUTE ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js EXECUTE ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE ADD dictionaries/bg.dic EXECUTE ADD dictionaries/bg.aff EXECUTE ADD dependentlibs.list EXECUTE ADD defaults/messenger/mailViews.dat EXECUTE ADD d3dcompiler_47.dll EXECUTE ADD crashreporter.ini EXECUTE ADD crashreporter.exe EXECUTE ADD chrome/icons/default/msgcomposeWindow.ico EXECUTE ADD chrome/icons/default/messengerWindow.ico EXECUTE ADD chrome/icons/default/addressbookWindow.ico EXECUTE ADD chrome/icons/default/abcardWindow.ico EXECUTE ADD breakpadinjector.dll EXECUTE ADD blocklist.xml EXECUTE ADD application.ini EXECUTE ADD WSEnable.exe EXECUTE ADD MapiProxy.dll EXECUTE ADD D3DCompiler_43.dll EXECUTE ADD AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH REMOVEFILE xul.dll FINISH REMOVEFILE voucher.bin FINISH REMOVEFILE updater.ini FINISH REMOVEFILE updater.exe FINISH REMOVEFILE uninstall/helper.exe FINISH REMOVEFILE thunderbird.exe FINISH REMOVEFILE softokn3.dll FINISH REMOVEFILE softokn3.chk FINISH REMOVEFILE searchplugins/yahoo.xml FINISH REMOVEFILE searchplugins/wikipedia.xml FINISH REMOVEFILE searchplugins/twitter.xml FINISH REMOVEFILE searchplugins/eBay.xml FINISH REMOVEFILE searchplugins/bing.xml FINISH REMOVEFILE searchplugins/aol-web-search.xml FINISH REMOVEFILE searchplugins/amazondotcom.xml FINISH REMOVEFILE sandboxbroker.dll FINISH REMOVEFILE removed-files FINISH REMOVEFILE precomplete FINISH REMOVEFILE plugin-container.exe FINISH REMOVEFILE platform.ini FINISH REMOVEFILE omni.ja FINISH REMOVEFILE nssdbm3.dll FINISH REMOVEFILE nssdbm3.chk FINISH REMOVEFILE nssckbi.dll FINISH REMOVEFILE nss3.dll FINISH REMOVEFILE nsldif32v60.dll FINISH REMOVEFILE nsldappr32v60.dll FINISH REMOVEFILE nsldap32v60.dll FINISH REMOVEFILE msvcr120.dll FINISH REMOVEFILE msvcp120.dll FINISH REMOVEFILE mozglue.dll FINISH REMOVEFILE mozalloc.dll FINISH REMOVEFILE mozMapi32.dll FINISH REMOVEFILE maintenanceservice_installer.exe FINISH REMOVEFILE maintenanceservice.exe FINISH REMOVEFILE libGLESv2.dll FINISH REMOVEFILE libEGL.dll FINISH REMOVEFILE isp/rss.rdf FINISH REMOVEFILE isp/SpamPal.sfd FINISH REMOVEFILE isp/SpamAssassin.sfd FINISH REMOVEFILE isp/POPFile.sfd FINISH REMOVEFILE isp/DSPAM.sfd FINISH REMOVEFILE isp/Bogofilter.sfd FINISH REMOVEFILE icuuc52.dll FINISH REMOVEFILE icuin52.dll FINISH REMOVEFILE icudt52.dll FINISH REMOVEFILE freebl3.dll FINISH REMOVEFILE freebl3.chk FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH REMOVEFILE extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH REMOVEFILE dictionaries/bg.dic FINISH REMOVEFILE dictionaries/bg.aff FINISH REMOVEFILE dependentlibs.list FINISH REMOVEFILE defaults/messenger/mailViews.dat FINISH REMOVEFILE d3dcompiler_47.dll FINISH REMOVEFILE crashreporter.ini FINISH REMOVEFILE crashreporter.exe FINISH REMOVEFILE chrome/icons/default/msgcomposeWindow.ico FINISH REMOVEFILE chrome/icons/default/messengerWindow.ico FINISH REMOVEFILE chrome/icons/default/addressbookWindow.ico FINISH REMOVEFILE chrome/icons/default/abcardWindow.ico FINISH REMOVEFILE breakpadinjector.dll FINISH REMOVEFILE blocklist.xml FINISH REMOVEFILE application.ini FINISH REMOVEFILE WSEnable.exe FINISH REMOVEFILE MapiProxy.dll FINISH REMOVEFILE D3DCompiler_43.dll FINISH REMOVEFILE AccessibleMarshal.dll FINISH REMOVEDIR uninstall/ non-fatal error removing directory: uninstall/, rv: 0, err: 41 FINISH REMOVEDIR searchplugins/ non-fatal error removing directory: searchplugins/, rv: 0, err: 41 FINISH REMOVEDIR isp/ non-fatal error removing directory: isp/, rv: 0, err: 41 FINISH REMOVEDIR extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ non-fatal error removing directory: extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/, rv: 0, err: 41 FINISH REMOVEDIR extensions/ non-fatal error removing directory: extensions/, rv: 0, err: 41 FINISH REMOVEDIR dictionaries/ non-fatal error removing directory: dictionaries/, rv: 0, err: 41 FINISH REMOVEDIR defaults/pref/ non-fatal error removing directory: defaults/pref/, rv: 0, err: 41 FINISH REMOVEDIR defaults/messenger/ non-fatal error removing directory: defaults/messenger/, rv: 0, err: 41 FINISH REMOVEDIR defaults/ non-fatal error removing directory: defaults/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/default/ non-fatal error removing directory: chrome/icons/default/, rv: 0, err: 41 FINISH REMOVEDIR chrome/icons/ non-fatal error removing directory: chrome/icons/, rv: 0, err: 41 FINISH REMOVEDIR chrome/ non-fatal error removing directory: chrome/, rv: 0, err: 41 FINISH ADD xul.dll FINISH ADD voucher.bin FINISH ADD updater.ini FINISH ADD updater.exe FINISH ADD uninstall/helper.exe FINISH ADD thunderbird.exe FINISH ADD softokn3.dll FINISH ADD softokn3.chk FINISH ADD searchplugins/yahoo.xml FINISH ADD searchplugins/wikipedia.xml FINISH ADD searchplugins/twitter.xml FINISH ADD searchplugins/eBay.xml FINISH ADD searchplugins/bing.xml FINISH ADD searchplugins/aol-web-search.xml FINISH ADD searchplugins/amazondotcom.xml FINISH ADD sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH ADD plugin-container.exe FINISH ADD platform.ini FINISH ADD omni.ja FINISH ADD nssdbm3.dll FINISH ADD nssdbm3.chk FINISH ADD nssckbi.dll FINISH ADD nss3.dll FINISH ADD nsldif32v60.dll FINISH ADD nsldappr32v60.dll FINISH ADD nsldap32v60.dll FINISH ADD msvcr120.dll FINISH ADD msvcp120.dll FINISH ADD mozglue.dll FINISH ADD mozalloc.dll FINISH ADD mozMapi32.dll FINISH ADD maintenanceservice_installer.exe FINISH ADD maintenanceservice.exe FINISH ADD libGLESv2.dll FINISH ADD libEGL.dll FINISH ADD isp/rss.rdf FINISH ADD isp/SpamPal.sfd FINISH ADD isp/SpamAssassin.sfd FINISH ADD isp/POPFile.sfd FINISH ADD isp/DSPAM.sfd FINISH ADD isp/Bogofilter.sfd FINISH ADD icuuc52.dll FINISH ADD icuin52.dll FINISH ADD icudt52.dll FINISH ADD freebl3.dll FINISH ADD freebl3.chk FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png FINISH ADD extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js FINISH ADD distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH ADD dictionaries/bg.dic FINISH ADD dictionaries/bg.aff FINISH ADD dependentlibs.list FINISH ADD defaults/messenger/mailViews.dat FINISH ADD d3dcompiler_47.dll FINISH ADD crashreporter.ini FINISH ADD crashreporter.exe FINISH ADD chrome/icons/default/msgcomposeWindow.ico FINISH ADD chrome/icons/default/messengerWindow.ico FINISH ADD chrome/icons/default/addressbookWindow.ico FINISH ADD chrome/icons/default/abcardWindow.ico FINISH ADD breakpadinjector.dll FINISH ADD blocklist.xml FINISH ADD application.ini FINISH ADD WSEnable.exe FINISH ADD MapiProxy.dll FINISH ADD D3DCompiler_43.dll FINISH ADD AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 11c11 < CrashReporterTitle=Докладчик за сривове --- > CrashReporterTitle=Доклад за срив 13c13 < CrashReporterVendorTitle=Докладчик за сривове на %s --- > CrashReporterVendorTitle=Доклад за срив на %s 15c15 < CrashReporterErrorText=Възникна проблем и програмата се срина.\n\nЗа съжаление докладчикът за сривове не успя да изпрати доклад за срива.\n\nПодробности: %s --- > CrashReporterErrorText=Възникна проблем и програмата се срина.\n\nЗа съжаление доклад за срива не беше изпратен.\n\nПодробности: %s 17c17 < CrashReporterProductErrorText2=%s имаше проблем и се срина.\n\nЗа съжаление не беше изпратен доклад за това..\n\nПодробности: %s --- > CrashReporterProductErrorText2=Възникна проблем и %s се срина.\n\nЗа съжаление доклад за срива не беше изпратен.\n\nПодробности: %s 20,21c20,21 < CrashReporterDescriptionText2=%s имаше проблем и се срина.\n\nЗа да ни помогнете да диагностицираме и поправим проблема, можете да ни изпратите доклад за срива. < CrashReporterDefault=Приложението е пуснато след срив с цел докладване на проблема. Не трябва да бъде пускано направо. --- > CrashReporterDescriptionText2=Възникна проблем и %s се срина.\n\nЗа да ни помогнете да бъде диагностициран и оправен проблема, можете да ни изпратите доклад за срива. > CrashReporterDefault=Това приложение се пуска след срив, за да докладва за проблема на създателя. То не бива да бъде пускано самостаятелно. 24,25c24,25 < CommentGrayText=Добавяне на коментар. Забележка: коментарите са публично видими. < ExtraReportInfo=Докладът също съдържа техническа информация за състоянието на приложението в момента на срива. --- > CommentGrayText=Добавяне на коментар (коментарите са общодостъпни) > ExtraReportInfo=Докладът също така съдържа техническа информация за състоянието на приложението в момента на срива. 30,33c30,33 < EmailGrayText=Въведете вашата е-поща < ReportPreSubmit2=Вашият доклад за срив ще бъде изпратен след рестартиране на приложението. < ReportDuringSubmit2=Изпращане на вашия доклад и рестартиране на приложението… < ReportSubmitSuccess=Докладът е изпратен успешно! --- > EmailGrayText=Въведете адреса на своята ел. поща > ReportPreSubmit2=Вашият доклад за срив ще бъде изпратен преди затваряне или рестартиране. > ReportDuringSubmit2=Изпращане на вашия доклад… > ReportSubmitSuccess=Докладът е успешно изпратен! 45,49c45,49 < CrashDetailsURL=Можете да преглеждате подробности за този срив на адрес %s < ErrorBadArguments=Приложението даде невалиден аргумент. < ErrorExtraFileExists=Приложението не остави файл с данни на приложението. < ErrorExtraFileRead=Не можа да се прочете файлът с данни на приложението. < ErrorExtraFileMove=Не можа да се премести файлът с данни на приложението. --- > CrashDetailsURL=Може да видите подробностите за този срив на %s > ErrorBadArguments=Приложението подаде невалиден аргумент. > ErrorExtraFileExists=Приложението не остави файла си с данни. > ErrorExtraFileRead=Файлът с данни от приложението не може да бъде прочетен. > ErrorExtraFileMove=Файлът с данни от приложението не може да бъде преместен. 51c51 < ErrorDumpFileMove=Не можа да се премести резултатът от срива. --- > ErrorDumpFileMove=Описателният файл на срива не може да бъде преместен. 54,55c54,55 < ErrorNoSettingsPath=Не можаха да се намерят настройките на докладчика за сривове. < ErrorCreateDumpDir=Не можа да се създаде директория за изходни данни. --- > ErrorNoSettingsPath=Настройките на Доклад за срив не можаха да бъдат намерени. > ErrorCreateDumpDir=Временна папка за описателните файлове не можа да бъде създадена. 57c57 < ErrorEndOfLife=Използваната от вас версия на %s вече не се поддържа. Доклади за сривове на тази версия вече не се приемат. Най-добре инсталирайте по-нова версия. --- > ErrorEndOfLife=Използваната от вас версия на %s е вече неподдържана. Доклади за сривове на тази версия вече не се приемат. Моля, помислете за обновяване до поддържана версия. diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < < //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < < //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "bg"); < < //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > > //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > > //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "bg"); > > //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d61 < rmdir "searchplugins/" 73d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1324112 1 -rw-r--r-- 1 cltbld Administrators 1221 May 17:51 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1389647 2 -rw-r--r-- 1 cltbld Administrators 2284 May 17:51 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1324110 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:51 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1520666 1 -rw-r--r-- 1 cltbld Administrators 1531 May 17:51 source/bin/searchplugins/amazondotcom.xml 1389593 1 -rw-r--r-- 1 cltbld Administrators 1670 May 17:51 source/bin/searchplugins/aol-web-search.xml 1520664 2 -rw-r--r-- 1 cltbld Administrators 2453 May 17:51 source/bin/searchplugins/bing.xml 1848343 2 -rw-r--r-- 1 cltbld Administrators 2569 May 17:51 source/bin/searchplugins/eBay.xml 1520662 1 -rw-r--r-- 1 cltbld Administrators 899 May 17:51 source/bin/searchplugins/twitter.xml 1520661 1 -rw-r--r-- 1 cltbld Administrators 1338 May 17:51 source/bin/searchplugins/wikipedia.xml 1848340 1 -rw-r--r-- 1 cltbld Administrators 1363 May 17:51 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1 Retrieving 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.2/20160402193654/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1' from cache... Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bg/thunderbird-38.7.2-38.8.0.partial.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/partial.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bg/thunderbird-38.7.2-38.8.0.partial.mar'] --2016-05-09 17:51:24-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bg/thunderbird-38.7.2-38.8.0.partial.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 3228689 Connection: keep-alive Date: Tue, 10 May 2016 00:51:27 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Dix.8C0DCJQwnOWbFOlmiPiSKJodLpAk Last-Modified: Tue, 03 May 2016 15:15:55 GMT ETag: "656edbd2429fb2c9503ade4c3c86fce1" Accept-Ranges: bytes Server: AmazonS3 X-Cache: Miss from cloudfront Via: 1.1 96255a5b0caf50bcafcd101c1ff13691.cloudfront.net (CloudFront) X-Amz-Cf-Id: h8YdWapZ7OWKk-_Sa2P_VJ_N_gFCLOW04FhvdI2wkx-YFg99NOv7zA== Length: 3228689 (3.1M) [application/octet-stream] Saving to: 'update/partial.mar' 0K ........ ........ ........ ........ ........ ........ 97% 1.30M 0s 3072K . 100% 1.20M=2.4s 2016-05-09 17:51:27 (1.29 MB/s) - 'update/partial.mar' saved [3228689/3228689] Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/releases/38.7.2/win32/bg/Thunderbird Setup 38.7.2.exe' from cache... Retrieving 'http://archive.mozilla.org/pub/mozilla.org/thunderbird/candidates/45.1.0-candidates/build3/win32/bg/Thunderbird Setup 45.1.0.exe' from cache... PATCH DIRECTORY ../../update INSTALLATION DIRECTORY . WORKING DIRECTORY . UPDATE TYPE partial PREPARE PATCH xul.dll PREPARE PATCH voucher.bin PREPARE PATCH updater.exe PREPARE PATCH uninstall/helper.exe PREPARE PATCH thunderbird.exe PREPARE PATCH softokn3.dll PREPARE ADD softokn3.chk PREPARE PATCH sandboxbroker.dll PREPARE ADD removed-files PREPARE ADD precomplete PREPARE PATCH plugin-container.exe PREPARE PATCH platform.ini PREPARE PATCH omni.ja PREPARE PATCH nssdbm3.dll PREPARE ADD nssdbm3.chk PREPARE PATCH nssckbi.dll PREPARE PATCH nss3.dll PREPARE PATCH nsldif32v60.dll PREPARE PATCH nsldappr32v60.dll PREPARE PATCH nsldap32v60.dll PREPARE PATCH mozglue.dll PREPARE PATCH mozalloc.dll PREPARE PATCH mozMapi32.dll PREPARE PATCH maintenanceservice_installer.exe PREPARE PATCH maintenanceservice.exe PREPARE PATCH libGLESv2.dll PREPARE PATCH libEGL.dll PREPARE PATCH icuuc52.dll PREPARE PATCH icuin52.dll PREPARE PATCH icudt52.dll PREPARE PATCH freebl3.dll PREPARE ADD freebl3.chk PREPARE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll PREPARE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini PREPARE PATCH crashreporter.exe PREPARE PATCH breakpadinjector.dll PREPARE PATCH blocklist.xml PREPARE PATCH application.ini PREPARE PATCH WSEnable.exe PREPARE PATCH MapiProxy.dll PREPARE PATCH AccessibleMarshal.dll PREPARE REMOVEDIR distribution/extensions/ PREPARE REMOVEDIR distribution/ EXECUTE PATCH xul.dll EXECUTE PATCH voucher.bin EXECUTE PATCH updater.exe EXECUTE PATCH uninstall/helper.exe EXECUTE PATCH thunderbird.exe EXECUTE PATCH softokn3.dll EXECUTE ADD softokn3.chk EXECUTE PATCH sandboxbroker.dll EXECUTE ADD removed-files EXECUTE ADD precomplete EXECUTE PATCH plugin-container.exe EXECUTE PATCH platform.ini EXECUTE PATCH omni.ja EXECUTE PATCH nssdbm3.dll EXECUTE ADD nssdbm3.chk EXECUTE PATCH nssckbi.dll EXECUTE PATCH nss3.dll EXECUTE PATCH nsldif32v60.dll EXECUTE PATCH nsldappr32v60.dll EXECUTE PATCH nsldap32v60.dll EXECUTE PATCH mozglue.dll EXECUTE PATCH mozalloc.dll EXECUTE PATCH mozMapi32.dll EXECUTE PATCH maintenanceservice_installer.exe EXECUTE PATCH maintenanceservice.exe EXECUTE PATCH libGLESv2.dll EXECUTE PATCH libEGL.dll EXECUTE PATCH icuuc52.dll EXECUTE PATCH icuin52.dll EXECUTE PATCH icudt52.dll EXECUTE PATCH freebl3.dll EXECUTE ADD freebl3.chk EXECUTE PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll EXECUTE PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini EXECUTE PATCH crashreporter.exe EXECUTE PATCH breakpadinjector.dll EXECUTE PATCH blocklist.xml EXECUTE PATCH application.ini EXECUTE PATCH WSEnable.exe EXECUTE PATCH MapiProxy.dll EXECUTE PATCH AccessibleMarshal.dll EXECUTE REMOVEDIR distribution/extensions/ EXECUTE REMOVEDIR distribution/ FINISH PATCH xul.dll FINISH PATCH voucher.bin FINISH PATCH updater.exe FINISH PATCH uninstall/helper.exe FINISH PATCH thunderbird.exe FINISH PATCH softokn3.dll FINISH ADD softokn3.chk FINISH PATCH sandboxbroker.dll FINISH ADD removed-files FINISH ADD precomplete FINISH PATCH plugin-container.exe FINISH PATCH platform.ini FINISH PATCH omni.ja FINISH PATCH nssdbm3.dll FINISH ADD nssdbm3.chk FINISH PATCH nssckbi.dll FINISH PATCH nss3.dll FINISH PATCH nsldif32v60.dll FINISH PATCH nsldappr32v60.dll FINISH PATCH nsldap32v60.dll FINISH PATCH mozglue.dll FINISH PATCH mozalloc.dll FINISH PATCH mozMapi32.dll FINISH PATCH maintenanceservice_installer.exe FINISH PATCH maintenanceservice.exe FINISH PATCH libGLESv2.dll FINISH PATCH libEGL.dll FINISH PATCH icuuc52.dll FINISH PATCH icuin52.dll FINISH PATCH icudt52.dll FINISH PATCH freebl3.dll FINISH ADD freebl3.chk FINISH PATCH extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll FINISH PATCH distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini FINISH PATCH crashreporter.exe FINISH PATCH breakpadinjector.dll FINISH PATCH blocklist.xml FINISH PATCH application.ini FINISH PATCH WSEnable.exe FINISH PATCH MapiProxy.dll FINISH PATCH AccessibleMarshal.dll FINISH REMOVEDIR distribution/extensions/ non-fatal error removing directory: distribution/extensions/, rv: 0, err: 41 FINISH REMOVEDIR distribution/ non-fatal error removing directory: distribution/, rv: 0, err: 41 succeeded calling QuitProgressUI Files source/bin/AccessibleMarshal.dll and target/bin/AccessibleMarshal.dll differ Files source/bin/MapiProxy.dll and target/bin/MapiProxy.dll differ Files source/bin/WSEnable.exe and target/bin/WSEnable.exe differ diff -r source/bin/application.ini target/bin/application.ini 8,11c8,11 < Version=38.8.0 < BuildID=20160503054940 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > Version=45.1.0 > BuildID=20160509110721 > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc039a7862b42641ed8309d5147bb2 15,16c15,16 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 23c23 < ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=38.8.0&buildid=20160503054940 --- > ServerURL=https://crash-reports.mozilla.com/submit?id={3550f703-e582-4d05-9a08-453d09bdfdc6}&version=45.1.0&buildid=20160509110721 diff -r source/bin/blocklist.xml target/bin/blocklist.xml 2c2 < --- > 455c455 < --- > 1401a1402,1407 > > > > > > 1867a1874,1879 > > > > > > 2019a2032,2037 > > > > > > 2269c2287 < --- > 3066c3084 < All 0x8086 FEATURE_HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL --- > All 0x8086 HARDWARE_VIDEO_DECODING BLOCKED_DRIVER_VERSION 10.18.10.3947 EQUAL Files source/bin/breakpadinjector.dll and target/bin/breakpadinjector.dll differ Files source/bin/crashreporter.exe and target/bin/crashreporter.exe differ diff -r source/bin/crashreporter.ini target/bin/crashreporter.ini 11c11 < CrashReporterTitle=Докладчик за сривове --- > CrashReporterTitle=Доклад за срив 13c13 < CrashReporterVendorTitle=Докладчик за сривове на %s --- > CrashReporterVendorTitle=Доклад за срив на %s 15c15 < CrashReporterErrorText=Възникна проблем и програмата се срина.\n\nЗа съжаление докладчикът за сривове не успя да изпрати доклад за срива.\n\nПодробности: %s --- > CrashReporterErrorText=Възникна проблем и програмата се срина.\n\nЗа съжаление доклад за срива не беше изпратен.\n\nПодробности: %s 17c17 < CrashReporterProductErrorText2=%s имаше проблем и се срина.\n\nЗа съжаление не беше изпратен доклад за това..\n\nПодробности: %s --- > CrashReporterProductErrorText2=Възникна проблем и %s се срина.\n\nЗа съжаление доклад за срива не беше изпратен.\n\nПодробности: %s 20,21c20,21 < CrashReporterDescriptionText2=%s имаше проблем и се срина.\n\nЗа да ни помогнете да диагностицираме и поправим проблема, можете да ни изпратите доклад за срива. < CrashReporterDefault=Приложението е пуснато след срив с цел докладване на проблема. Не трябва да бъде пускано направо. --- > CrashReporterDescriptionText2=Възникна проблем и %s се срина.\n\nЗа да ни помогнете да бъде диагностициран и оправен проблема, можете да ни изпратите доклад за срива. > CrashReporterDefault=Това приложение се пуска след срив, за да докладва за проблема на създателя. То не бива да бъде пускано самостаятелно. 24,25c24,25 < CommentGrayText=Добавяне на коментар. Забележка: коментарите са публично видими. < ExtraReportInfo=Докладът също съдържа техническа информация за състоянието на приложението в момента на срива. --- > CommentGrayText=Добавяне на коментар (коментарите са общодостъпни) > ExtraReportInfo=Докладът също така съдържа техническа информация за състоянието на приложението в момента на срива. 30,33c30,33 < EmailGrayText=Въведете вашата е-поща < ReportPreSubmit2=Вашият доклад за срив ще бъде изпратен след рестартиране на приложението. < ReportDuringSubmit2=Изпращане на вашия доклад и рестартиране на приложението… < ReportSubmitSuccess=Докладът е изпратен успешно! --- > EmailGrayText=Въведете адреса на своята ел. поща > ReportPreSubmit2=Вашият доклад за срив ще бъде изпратен преди затваряне или рестартиране. > ReportDuringSubmit2=Изпращане на вашия доклад… > ReportSubmitSuccess=Докладът е успешно изпратен! 45,49c45,49 < CrashDetailsURL=Можете да преглеждате подробности за този срив на адрес %s < ErrorBadArguments=Приложението даде невалиден аргумент. < ErrorExtraFileExists=Приложението не остави файл с данни на приложението. < ErrorExtraFileRead=Не можа да се прочете файлът с данни на приложението. < ErrorExtraFileMove=Не можа да се премести файлът с данни на приложението. --- > CrashDetailsURL=Може да видите подробностите за този срив на %s > ErrorBadArguments=Приложението подаде невалиден аргумент. > ErrorExtraFileExists=Приложението не остави файла си с данни. > ErrorExtraFileRead=Файлът с данни от приложението не може да бъде прочетен. > ErrorExtraFileMove=Файлът с данни от приложението не може да бъде преместен. 51c51 < ErrorDumpFileMove=Не можа да се премести резултатът от срива. --- > ErrorDumpFileMove=Описателният файл на срива не може да бъде преместен. 54,55c54,55 < ErrorNoSettingsPath=Не можаха да се намерят настройките на докладчика за сривове. < ErrorCreateDumpDir=Не можа да се създаде директория за изходни данни. --- > ErrorNoSettingsPath=Настройките на Доклад за срив не можаха да бъдат намерени. > ErrorCreateDumpDir=Временна папка за описателните файлове не можа да бъде създадена. 57c57 < ErrorEndOfLife=Използваната от вас версия на %s вече не се поддържа. Доклади за сривове на тази версия вече не се приемат. Най-добре инсталирайте по-нова версия. --- > ErrorEndOfLife=Използваната от вас версия на %s е вече неподдържана. Доклади за сривове на тази версия вече не се приемат. Моля, помислете за обновяване до поддържана версия. diff -r source/bin/defaults/pref/channel-prefs.js target/bin/defaults/pref/channel-prefs.js 1,5c1,5 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < pref("app.update.channel", "release"); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > pref("app.update.channel", "release"); diff -r source/bin/dependentlibs.list target/bin/dependentlibs.list 0a1 > LDAP60.dll 3,5c4 < NSLDAP32V60.dll < NSLDAPPR32V60.dll < mozalloc.dll --- > PRLDAP60.dll 6a6 > lgpllibs.dll diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini 11,12c11,12 < Version=4.0.8 < BuildID=20160503054940 --- > Version=4.7.1 > BuildID=20160509110721 14,15c14,15 < SourceRepository=https://hg.mozilla.org/releases/comm-esr38 < SourceStamp=52b3cf378da6 --- > SourceRepository=https://hg.mozilla.org/releases/comm-esr45 > SourceStamp=586a7759f7cc 21,22c21,22 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 < SourceStamp=e612dadc1a46 --- > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 25,26c25,26 < MinVersion=38.8.0 < MaxVersion=38.8.0 --- > MinVersion=45.1.0 > MaxVersion=45.1.0 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js 9,11c9,11 < const ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; < const ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; < const ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; --- > var ALARM_RELATED_ABSOLUTE = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE; > var ALARM_RELATED_START = Components.interfaces.calIAlarm.ALARM_RELATED_START; > var ALARM_RELATED_END = Components.interfaces.calIAlarm.ALARM_RELATED_END; 21,22c21,22 < const calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); < const calAlarmInterfaces = [Components.interfaces.calIAlarm]; --- > var calAlarmClassID = Components.ID("{b8db7c7f-c168-4e11-becb-f26c1c4f5f8f}"); > var calAlarmInterfaces = [Components.interfaces.calIAlarm]; 619a620,629 > function getItemBundleStringName(aPrefix) { > if (!aItem || isEvent(aItem)) { > return aPrefix + "Event"; > } else if (isToDo(aItem)) { > return aPrefix + "Task"; > } else { > return aPrefix; > } > } > 627,635d636 < function getItemBundleStringName(aPrefix) { < if (!aItem || isEvent(aItem)) { < return aPrefix + "Event"; < } else if (isToDo(aItem)) { < return aPrefix + "Task"; < } else { < return aPrefix; < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js 27,28c27,28 < const calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); < const calAlarmMonitorInterfaces = [ --- > var calAlarmMonitorClassID = Components.ID("{4b7ae030-ed79-11d9-8cd6-0800200c9a66}"); > var calAlarmMonitorInterfaces = [ 121c121,122 < if (!calAlarmWindow && !this.mWindowOpening) { --- > if (!calAlarmWindow && (!this.mWindowOpening || > this.mWindowOpening.closed)) { 173c174,180 < onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) {} --- > onAlarmsLoaded: function cAM_onAlarmsLoaded(aCalendar) { > // the alarm dialog won't close while alarms are loading, check again now > let calAlarmWindow = peekAlarmWindow(); > if (calAlarmWindow && this.mAlarms.length == 0) { > calAlarmWindow.closeIfEmpty(); > } > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js 13,15c13,15 < const kHoursBetweenUpdates = 6; < const kSleepMonitorInterval = 60000; < const kSleepMonitorTolerance = 1000; --- > var kHoursBetweenUpdates = 6; > var kSleepMonitorInterval = 60000; > var kSleepMonitorTolerance = 1000; 104,105c104,105 < const calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); < const calAlarmServiceInterfaces = [ --- > var calAlarmServiceClassID = Components.ID("{7a9200dd-6a64-4fff-a798-c5802186e2cc}"); > var calAlarmServiceInterfaces = [ 483a484 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 485a487,488 > batchCount: 0, > results: false, 497c500 < }, function onReject(aReason) { --- > }, (aReason) => { 498a502,503 > this.alarmService.mLoadedCalendars[aCalendar.id] = true; > this.alarmService.mObservers.notify("onAlarmsLoaded", [aCalendar]); 499a505,509 > > // if no results were returned we still need to resolve the promise > if (!this.results) { > this.addRemovePromise.resolve(); > } 507a518,520 > this.batchCount++; > this.results = true; > 515,516c528,531 < }, function completed() { < promise.resolve(); --- > }, () => { > if (--this.batchCount <= 0) { > promise.resolve(); > } 529a545 > this.mLoadedCalendars[calendar.id] = false; 530a547,549 > } else { > this.mLoadedCalendars[calendar.id] = true; > this.mObservers.notify("onAlarmsLoaded", [calendar]); 536c555 < // Purge out all alarm timers belonging to the refreshed/loaded calendar: --- > // Purge out all alarm timers belonging to the refreshed/loaded calendars 539,540c558,562 < // Purge out all alarms from dialog belonging to the refreshed/loaded calendar: < this.mObservers.notify("onRemoveAlarmsByCalendar", aCalendars); --- > // Purge out all alarms from dialog belonging to the refreshed/loaded calendars > for (let calendar of aCalendars) { > this.mLoadedCalendars[calendar.id] = false; > this.mObservers.notify("onRemoveAlarmsByCalendar", [calendar]); > } 558a581,587 > }, > > get isLoading() { > for (let calId in this.mLoadedCalendars) { > if (!this.mLoadedCalendars[calId]) return true; > } > return false; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttachment.js 17,18c17,18 < const calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); < const calAttachmentInterfaces = [Components.interfaces.calIAttachment]; --- > var calAttachmentClassID = Components.ID("{5f76b352-ab75-4c2b-82c9-9206dbbf8571}"); > var calAttachmentInterfaces = [Components.interfaces.calIAttachment]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAttendee.js 14,15c14,15 < const calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); < const calAttendeeInterfaces = [Components.interfaces.calIAttendee]; --- > var calAttendeeClassID = Components.ID("{5c8dcaa3-170c-4a73-8142-d531156f664d}"); > var calAttendeeInterfaces = [Components.interfaces.calIAttendee]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCachedCalendar.js 10,12c10,12 < const calICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var calICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 14c14,15 < let gNoOpListener = { --- > var gNoOpListener = { > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 57a59 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIObserver]), 226a229 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 244a248 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 262a267 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 337a343 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 435c441 < this_.playbackOfflineItems(function() emptyQueue(aStatus)); --- > this_.playbackOfflineItems(() => emptyQueue(aStatus)); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarManager.js 11,14c11,14 < const REGISTRY_BRANCH = "calendar.registry."; < const DB_SCHEMA_VERSION = 10; < const MAX_INT = Math.pow(2, 31) - 1; < const MIN_INT = -MAX_INT; --- > var REGISTRY_BRANCH = "calendar.registry."; > var DB_SCHEMA_VERSION = 10; > var MAX_INT = Math.pow(2, 31) - 1; > var MIN_INT = -MAX_INT; 22,23c22,23 < const calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); < const calCalendarManagerInterfaces = [ --- > var calCalendarManagerClassID = Components.ID("{f42585e7-e736-4600-985d-9624c1c51992}"); > var calCalendarManagerInterfaces = [ 39,41c39,41 < get networkCalendarCount() this.mNetworkCalendarCount, < get readOnlyCalendarCount() this.mReadonlyCalendarCount, < get calendarCount() this.mCalendarCount, --- > get networkCalendarCount() { return this.mNetworkCalendarCount; }, > get readOnlyCalendarCount() { return this.mReadonlyCalendarCount; }, > get calendarCount() { return this.mCalendarCount; }, 128,129c128,129 < let escapedName = calendar.name.replace('\\', '\\\\', 'g') < .replace('"','\\"', 'g'); --- > let escapedName = calendar.name.replace(/\\/g, '\\\\') > .replace(/\"/g, '\\"'); 153c153 < if (calUAString && ua.indexOf(calUAString) < 0) { --- > if (calUAString && !ua.includes(calUAString)) { 455c455 < return; --- > return null; 761,763c761,763 < addObserver: function(aObserver) this.mObservers.add(aObserver), < removeObserver: function(aObserver) this.mObservers.remove(aObserver), < notifyObservers: function(functionName, args) this.mObservers.notify(functionName, args), --- > addObserver: function(aObserver) { return this.mObservers.add(aObserver); }, > removeObserver: function(aObserver) { return this.mObservers.remove(aObserver); }, > notifyObservers: function(functionName, args) { return this.mObservers.notify(functionName, args); }, 766,768c766,768 < addCalendarObserver: function(aObserver) this.mCalendarObservers.add(aObserver), < removeCalendarObserver: function(aObserver) this.mCalendarObservers.remove(aObserver), < notifyCalendarObservers: function(functionName, args) this.mCalendarObservers.notify(functionName, args) --- > addCalendarObserver: function(aObserver) { return this.mCalendarObservers.add(aObserver); }, > removeCalendarObserver: function(aObserver) { return this.mCalendarObservers.remove(aObserver); }, > notifyCalendarObservers: function(functionName, args) { return this.mCalendarObservers.notify(functionName, args); } 799,804c799,804 < onStartBatch: function() this.calMgr.notifyCalendarObservers("onStartBatch", arguments), < onEndBatch: function() this.calMgr.notifyCalendarObservers("onEndBatch", arguments), < onLoad: function(calendar) this.calMgr.notifyCalendarObservers("onLoad", arguments), < onAddItem: function(aItem) this.calMgr.notifyCalendarObservers("onAddItem", arguments), < onModifyItem: function(aNewItem, aOldItem) this.calMgr.notifyCalendarObservers("onModifyItem", arguments), < onDeleteItem: function(aDeletedItem) this.calMgr.notifyCalendarObservers("onDeleteItem", arguments), --- > onStartBatch: function() { return this.calMgr.notifyCalendarObservers("onStartBatch", arguments); }, > onEndBatch: function() { return this.calMgr.notifyCalendarObservers("onEndBatch", arguments); }, > onLoad: function(calendar) { return this.calMgr.notifyCalendarObservers("onLoad", arguments); }, > onAddItem: function(aItem) { return this.calMgr.notifyCalendarObservers("onAddItem", arguments); }, > onModifyItem: function(aNewItem, aOldItem) { return this.calMgr.notifyCalendarObservers("onModifyItem", arguments); }, > onDeleteItem: function(aDeletedItem) { return this.calMgr.notifyCalendarObservers("onDeleteItem", arguments); }, 958,962c958 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); < if (!isSerious) { < WARN(summary); < } else { < // Write error to console. --- > if (aErrNo == calIErrors.MODIFICATION_FAILED) { 963a960,964 > this.announceParamBlock(paramBlock); > } else { > cal.WARN(summary); > } > }, 965,1010c966,982 < // silently don't do anything if this message already has < // been announced without being acknowledged. < if (this.announcedMessages.some( < function(element, index, array) { < return equalMessage(paramBlock, element); < })) { < return; < } < < // this message hasn't been announced recently, remember the < // details of the message for future reference. < this.announcedMessages.push(paramBlock); < < // Display in prompt window. < var promptWindow = < Services.ww.openWindow < (null, "chrome://calendar/content/calendar-error-prompt.xul", < "_blank", "chrome,dialog=yes,alwaysRaised=yes", < paramBlock); < // Will remove paramBlock from announced messages when < // promptWindow is closed. (Closing fires unloaded event, but < // promptWindow is also unloaded [to clean it?] before loading, < // so wait for detected load event before detecting unload event < // that signifies user closed this prompt window.) < var observer = this; < function awaitLoad(event) { < // #2 loaded, remove load listener < promptWindow.removeEventListener("load", awaitLoad, false); < function awaitUnload(event) { < // #4 unloaded (user closed prompt window), < // remove paramBlock and unload listener. < try { < // remove the message that has been shown from < // the list of all announced messages. < observer.announcedMessages = < observer.announcedMessages.filter(function(msg) { < return !equalMessage(msg, paramBlock); < }); < promptWindow.removeEventListener("unload", awaitUnload, < false); < } catch (e) { < Components.utils.reportError(e); < } < } < // #3 add unload listener (wait for user to close promptWindow) < promptWindow.addEventListener("unload", awaitUnload, false); --- > announceParamBlock: function(paramBlock) { > function awaitLoad(event) { > promptWindow.removeEventListener("load", awaitLoad, false); > promptWindow.addEventListener("unload", awaitUnload, false); > } > let awaitUnload = (event) => { > promptWindow.removeEventListener("unload", awaitUnload, false); > // unloaded (user closed prompt window), > // remove paramBlock and unload listener. > try { > // remove the message that has been shown from > // the list of all announced messages. > this.announcedMessages = this.announcedMessages.filter((msg) => { > return !equalMessage(msg, paramBlock); > }); > } catch (e) { > Components.utils.reportError(e); 1012,1013c984,989 < // #1 add load listener < promptWindow.addEventListener("load", awaitLoad, false); --- > }; > > // silently don't do anything if this message already has been > // announced without being acknowledged. > if (this.announcedMessages.some(equalMessage.bind(null, paramBlock))) { > return; 1014a991,1004 > > // this message hasn't been announced recently, remember the details of > // the message for future reference. > this.announcedMessages.push(paramBlock); > > // Will remove paramBlock from announced messages when promptWindow is > // closed. (Closing fires unloaded event, but promptWindow is also > // unloaded [to clean it?] before loading, so wait for detected load > // event before detecting unload event that signifies user closed this > // prompt window.) > let promptUrl = "chrome://calendar/content/calendar-error-prompt.xul"; > let features = "chrome,dialog=yes,alwaysRaised=yes"; > let promptWindow = Services.ww.openWindow(null, promptUrl, "_blank", features, paramBlock); > promptWindow.addEventListener("load", awaitLoad, false); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js 51,52c51,52 < const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); < const calCalendarSearchServiceInterfaces = [ --- > var calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}"); > var calCalendarSearchServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js 9c9 < const UNIX_TIME_TO_PRTIME = 1000000; --- > var UNIX_TIME_TO_PRTIME = 1000000; 16,17c16,17 < const calDateTimeInterfaces = [Components.interfaces.calIDateTime]; < const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); --- > var calDateTimeInterfaces = [Components.interfaces.calIDateTime]; > var calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDateTime(this.innerObject.clone()), --- > makeImmutable: function () { this.isMutable = false; }, > clone: function() { return new calDateTime(this.innerObject.clone()); }, 35,36c35,36 < get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME, < set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME), --- > get nativeTime() { return this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME; }, > set nativeTime(val) { this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME); }, 38,39c38,39 < get year() this.innerObject.year, < set year(val) this.innerObject.year = val, --- > get year() { return this.innerObject.year; }, > set year(val) { this.innerObject.year = val; }, 41,42c41,42 < get month() this.innerObject.month - 1, < set month(val) this.innerObject.month = val + 1, --- > get month() { return this.innerObject.month - 1; }, > set month(val) { this.innerObject.month = val + 1; }, 44,45c44,45 < get day() this.innerObject.day, < set day(val) this.innerObject.day = val, --- > get day() { return this.innerObject.day; }, > set day(val) { this.innerObject.day = val; }, 47,48c47,48 < get hour() this.innerObject.hour, < set hour(val) this.innerObject.hour = val, --- > get hour() { return this.innerObject.hour; }, > set hour(val) { this.innerObject.hour = val; }, 50,51c50,51 < get minute() this.innerObject.minute, < set minute(val) this.innerObject.minute = val, --- > get minute() { return this.innerObject.minute; }, > set minute(val) { this.innerObject.minute = val; }, 53,54c53,54 < get second() this.innerObject.second, < set second(val) this.innerObject.second = val, --- > get second() { return this.innerObject.second; }, > set second(val) { this.innerObject.second = val; }, 56,57c56,57 < get timezone() new calICALJSTimezone(this.innerObject.zone), < set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) { --- > get timezone() { return new calICALJSTimezone(this.innerObject.zone); }, > set timezone(val) { unwrapSetter(ICAL.Timezone, val, function(val) { 59c59 < }, this), --- > }, this); }, 69c69 < reset: function() this.innerObject.reset(), --- > reset: function() { this.innerObject.reset(); }, 71,73c71,73 < get timezoneOffset() this.innerObject.utcOffset(), < get isDate() this.innerObject.isDate, < set isDate(val) this.innerObject.isDate = val, --- > get timezoneOffset() { return this.innerObject.utcOffset(); }, > get isDate() { return this.innerObject.isDate; }, > set isDate(val) { this.innerObject.isDate = val; }, 75,76c75,76 < get weekday() this.innerObject.dayOfWeek() - 1, < get yearday() this.innerObject.dayOfYear(), --- > get weekday() { return this.innerObject.dayOfWeek() - 1; }, > get yearday() { return this.innerObject.dayOfYear(); }, 78c78 < toString: function() this.innerObject.toString(), --- > toString: function() { return this.innerObject.toString(); }, 112,117c112,117 < get startOfWeek() new calDateTime(this.innerObject.startOfWeek()), < get endOfWeek() new calDateTime(this.innerObject.endOfWeek()), < get startOfMonth() new calDateTime(this.innerObject.startOfMonth()), < get endOfMonth() new calDateTime(this.innerObject.endOfMonth()), < get startOfYear() new calDateTime(this.innerObject.startOfYear()), < get endOfYear() new calDateTime(this.innerObject.endOfYear()), --- > get startOfWeek() { return new calDateTime(this.innerObject.startOfWeek()); }, > get endOfWeek() { return new calDateTime(this.innerObject.endOfWeek()); }, > get startOfMonth() { return new calDateTime(this.innerObject.startOfMonth()); }, > get endOfMonth() { return new calDateTime(this.innerObject.endOfMonth()); }, > get startOfYear() { return new calDateTime(this.innerObject.startOfYear()); }, > get endOfYear() { return new calDateTime(this.innerObject.endOfYear()); }, 119c119 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTimeFormatter.js 9c9 < const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; --- > var nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; 68,69c68,69 < const calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); < const calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; --- > var calDateTimeFormatterClassID = Components.ID("{4123da9a-f047-42da-a7d0-cc4175b9f36a}"); > var calDateTimeFormatterInterfaces = [Components.interfaces.calIDateTimeFormatter]; 94a95 > let longDate; 96,103c97,113 < return this.mDateService.FormatDate("", < nsIScriptableDateFormat.dateFormatLong, < aDate.year, < aDate.month + 1, < aDate.day); < } else { < // HACK We are probably on Linux and want a string in long format. < // dateService.dateFormatLong on Linux may return a short string, so --- > longDate = this.mDateService.FormatDate("", > nsIScriptableDateFormat.dateFormatLong, > aDate.year, > aDate.month + 1, > aDate.day); > // check whether weekday name appears as in Lightning localization. if not, this is > // probably a minority language without OS support, so we should fall back to compose > // longDate on our own. May be not needed anymore once bug 441167 is fixed. > if (!longDate.includes(this.dayName(aDate.weekday)) && > !longDate.includes(this.shortDayName(aDate.weekday))) { > longDate = null; > this.mUseLongDateService = false; > } > } > if (longDate == null) { > // HACK We are probably on Linux or have a minority localization and want a string in > // long format. dateService.dateFormatLong on Linux may return a short string, so 105,109c115,119 < return cal.calGetString("calendar", "formatDateLong", < [this.shortDayName(aDate.weekday), < this.formatDayWithOrdinal(aDate.day), < this.shortMonthName(aDate.month), < aDate.year]); --- > longDate = cal.calGetString("calendar", "formatDateLong", > [this.shortDayName(aDate.weekday), > this.formatDayWithOrdinal(aDate.day), > this.shortMonthName(aDate.month), > aDate.year]); 110a121 > return longDate; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDavRequestHandlers.js 548,549c548 < r.href.length >= 4 && < r.href.substr(r.href.length - 4,4) == ".ics") { --- > r.href.endsWith(".ics")) { 588c587 < r.status.indexOf(" 507") > -1) { --- > r.status.includes(" 507")) { 607c606 < r.getcontenttype.substr(0,13) == "text/calendar") || --- > r.getcontenttype.startsWith("text/calendar")) || 609c608 < r.status.indexOf(" 404") == -1)) { --- > !r.status.includes(" 404"))) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDeletedItems.js 26,27c26,27 < const calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); < const calDeletedItemsInterfaces = [ --- > var calDeletedItemsClassID = Components.ID("{8e6799af-e7e9-4e6c-9a82-a2413e86d8c3}"); > var calDeletedItemsInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDuration.js 13,14c13,14 < const calDurationInterfaces = [Components.interfaces.calIDuration]; < const calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); --- > var calDurationInterfaces = [Components.interfaces.calIDuration]; > var calDurationClassID = Components.ID("{7436f480-c6fc-4085-9655-330b1ee22288}"); 25,26c25,26 < get icalDuration() this.innerObject, < set icalDuration(val) this.innerObject = val, --- > get icalDuration() { return this.innerObject; }, > set icalDuration(val) { this.innerObject = val; }, 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calDuration(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calDuration(this.innerObject.clone()); }, 32,33c32,33 < get isNegative() this.innerObject.isNegative, < set isNegative(val) this.innerObject.isNegative = val, --- > get isNegative() { return this.innerObject.isNegative; }, > set isNegative(val) { this.innerObject.isNegative = val; }, 35,36c35,36 < get weeks() this.innerObject.weeks, < set weeks(val) this.innerObject.weeks = val, --- > get weeks() { return this.innerObject.weeks; }, > set weeks(val) { this.innerObject.weeks = val; }, 38,39c38,39 < get days() this.innerObject.days, < set days(val) this.innerObject.days = val, --- > get days() { return this.innerObject.days; }, > set days(val) { this.innerObject.days = val; }, 41,42c41,42 < get hours() this.innerObject.hours, < set hours(val) this.innerObject.hours = val, --- > get hours() { return this.innerObject.hours; }, > set hours(val) { this.innerObject.hours = val; }, 44,45c44,45 < get minutes() this.innerObject.minutes, < set minutes(val) this.innerObject.minutes = val, --- > get minutes() { return this.innerObject.minutes; }, > set minutes(val) { this.innerObject.minutes = val; }, 47,48c47,48 < get seconds() this.innerObject.seconds, < set seconds(val) this.innerObject.seconds = val, --- > get seconds() { return this.innerObject.seconds; }, > set seconds(val) { this.innerObject.seconds = val; }, 50,51c50,51 < get inSeconds() this.innerObject.toSeconds(), < set inSeconds(val) this.innerObject.fromSeconds(val), --- > get inSeconds() { return this.innerObject.toSeconds(); }, > set inSeconds(val) { this.innerObject.fromSeconds(val); }, 61,63c61,63 < reset: function() this.innerObject.reset(), < normalize: function() this.innerObject.normalize(), < toString: function() this.innerObject.toString(), --- > reset: function() { this.innerObject.reset(); }, > normalize: function() { this.innerObject.normalize(); }, > toString: function() { return this.innerObject.toString(); }, 65,66c65,66 < get icalString() this.innerObject.toString(), < set icalString(val) this.innerObject = ICAL.Duration.fromString(val) --- > get icalString() { return this.innerObject.toString(); }, > set icalString(val) { this.innerObject = ICAL.Duration.fromString(val); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calEvent.js 20,21c20,21 < const calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); < const calEventInterfaces = [ --- > var calEventClassID = Components.ID("{974339d5-ab86-4491-aaaf-2b2ca177c12b}"); > var calEventInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFilter.js 5a6 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 357c358 < for each (let field in ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { --- > for (let field of ["SUMMARY", "DESCRIPTION", "LOCATION", "URL"]) { 359c360 < if (val && val.toLowerCase().indexOf(searchText) != -1) { --- > if (val && val.toLowerCase().includes(searchText)) { 365c366 < return (cat.toLowerCase().indexOf(searchText) != -1); --- > return cat.toLowerCase().includes(searchText); 423c424 < return aItem.getCategories({}).indexOf(cat) > -1; --- > return aItem.getCategories({}).includes(cat); 867a869 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js 58,59c58,59 < const calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); < const calFreeBusyServiceInterfaces = [ --- > var calFreeBusyServiceClassID = Components.ID("{29c56cd5-d36e-453a-acde-0083bd4fe6d3}"); > var calFreeBusyServiceInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js 17,18c17,18 < const calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); < const calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calHtmlExporterClassID = Components.ID("{72d9ab35-9b1b-442a-8cd0-ae49f00b159b}"); > var calHtmlExporterInterfaces = [Components.interfaces.calIExporter]; 64c64 < function setupTextRow(classKey, propValue, prefixKey) { --- > let setupTextRow = function(classKey, propValue, prefixKey) { 76c76 < } --- > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js 9,11c9,11 < const NS_OK = 0; < const NS_ERROR_FAILURE = 2147500037; < const ICS_ERROR_BASE = 2152333568; --- > var NS_OK = 0; > var NS_ERROR_FAILURE = 2147500037; > var ICS_ERROR_BASE = 2152333568; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js 14,15c14,15 < const calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; < const calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); --- > var calIcalPropertyInterfaces = [Components.interfaces.calIIcalProperty]; > var calIcalPropertyClassID = Components.ID("{423ac3f0-f612-48b3-953f-47f7f8fd705b}"); 26,28c26,28 < get icalString() this.innerObject.toICAL() + ICAL.newLineChar, < get icalProperty() this.innerObject, < set icalProperty(val) this.innerObject = val, --- > get icalString() { return this.innerObject.toICAL() + ICAL.newLineChar; }, > get icalProperty() { return this.innerObject; }, > set icalProperty(val) { this.innerObject = val; }, 30,31c30,31 < get parent() this.innerObject.parent, < toString: function() this.innerObject.toICAL(), --- > get parent() { return this.innerObject.parent; }, > toString: function() { return this.innerObject.toICAL(); }, 52,54c52,54 < let type = this.innerObject.type; < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < return this.innerObject.getValues().map(stringifyValue).join(","); --- > return this.innerObject.getValues().map(v => { > return ICAL.stringify.value(v.toString(), this.innerObject.type); > }).join(","); 68c68 < set valueAsDatetime(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set valueAsDatetime(val) { unwrapSetter(ICAL.Time, val, function(val) { 81c81 < }, this), --- > }, this); }, 83c83 < get propertyName() this.innerObject.name.toUpperCase(), --- > get propertyName() { return this.innerObject.name.toUpperCase(); }, 110,111c110 < function stringifyValue(x) ICAL.stringify.value(x.toString(), type); < function reparseValue(x) ICAL.parse._parseValue(stringifyValue(x), v); --- > let oldValues; 114d112 < let oldValue; 117c115 < oldValue = this.innerObject.getValues(); --- > oldValues = this.innerObject.getValues(); 119c117 < oldValue = [this.innerObject.getFirstValue()]; --- > oldValues = [this.innerObject.getFirstValue()]; 120a119 > 123c122,125 < oldValue = oldValue.map(reparseValue); --- > oldValues = oldValues.map(oldValue => { > let strvalue = ICAL.stringify.value(oldValue.toString(), type); > return ICAL.parse._parseValue(strvalue, v) > }); 127c129 < oldValue = null; --- > oldValues = null; 130c132 < if (oldValue) { --- > if (oldValues) { 132,134c134,136 < this.innerObject.setValues(oldValue); < } else if (oldValue) { < this.innerObject.setValue(oldValue.join(",")); --- > this.innerObject.setValues(oldValues); > } else { > this.innerObject.setValue(oldValues.join(",")); 207,208c209,210 < const calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; < const calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); --- > var calIcalComponentInterfaces = [Components.interfaces.calIIcalComponent]; > var calIcalComponentClassID = Components.ID("{51ac96fd-1279-4439-a85b-6947b37f4cea}"); 219c221 < clone: function() new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())), --- > clone: function() { return new calIcalComponent(new ICAL.Component(this.innerObject.toJSON())); }, 221c223 < get parent() wrapGetter(calIcalComponent, this.innerObject.parent), --- > get parent() { return wrapGetter(calIcalComponent, this.innerObject.parent); }, 223,225c225,227 < get icalTimezone() this.innerObject.name == "vtimezone" ? this.innerObject : null, < get icalComponent() this.innerObject, < set icalComponent(val) this.innerObject = val, --- > get icalTimezone() { return this.innerObject.name == "vtimezone" ? this.innerObject : null; }, > get icalComponent() { return this.innerObject; }, > set icalComponent(val) { this.innerObject = val; }, 256c258 < get componentType() this.innerObject.name.toUpperCase(), --- > get componentType() { return this.innerObject.name.toUpperCase(); }, 258,259c260,261 < get uid() this.innerObject.getFirstPropertyValue("uid"), < set uid(val) this.innerObject.updatePropertyWithValue("uid", val), --- > get uid() { return this.innerObject.getFirstPropertyValue("uid"); }, > set uid(val) { this.innerObject.updatePropertyWithValue("uid", val); }, 261,262c263,264 < get prodid() this.innerObject.getFirstPropertyValue("prodid"), < set prodid(val) this.innerObject.updatePropertyWithValue("prodid", val), --- > get prodid() { return this.innerObject.getFirstPropertyValue("prodid"); }, > set prodid(val) { this.innerObject.updatePropertyWithValue("prodid", val); }, 264,265c266,267 < get version() this.innerObject.getFirstPropertyValue("version"), < set version(val) this.innerObject.updatePropertyWithValue("version", val), --- > get version() { return this.innerObject.getFirstPropertyValue("version"); }, > set version(val) { this.innerObject.updatePropertyWithValue("version", val); }, 267,268c269,270 < get method() this.innerObject.getFirstPropertyValue("method"), < set method(val) this.innerObject.updatePropertyWithValue("method", val), --- > get method() { return this.innerObject.getFirstPropertyValue("method"); }, > set method(val) { this.innerObject.updatePropertyWithValue("method", val); }, 270,271c272,273 < get status() this.innerObject.getFirstPropertyValue("status"), < set status(val) this.innerObject.updatePropertyWithValue("status", val), --- > get status() { return this.innerObject.getFirstPropertyValue("status"); }, > set status(val) { this.innerObject.updatePropertyWithValue("status", val); }, 273,274c275,276 < get summary() this.innerObject.getFirstPropertyValue("summary"), < set summary(val) this.innerObject.updatePropertyWithValue("summary", val), --- > get summary() { return this.innerObject.getFirstPropertyValue("summary"); }, > set summary(val) { this.innerObject.updatePropertyWithValue("summary", val); }, 276,277c278,279 < get description() this.innerObject.getFirstPropertyValue("description"), < set description(val) this.innerObject.updatePropertyWithValue("description", val), --- > get description() { return this.innerObject.getFirstPropertyValue("description"); }, > set description(val) { this.innerObject.updatePropertyWithValue("description", val); }, 279,280c281,282 < get location() this.innerObject.getFirstPropertyValue("location"), < set location(val) this.innerObject.updatePropertyWithValue("location", val), --- > get location() { return this.innerObject.getFirstPropertyValue("location"); }, > set location(val) { this.innerObject.updatePropertyWithValue("location", val); }, 282,283c284,285 < get categories() this.innerObject.getFirstPropertyValue("categories"), < set categories(val) this.innerObject.updatePropertyWithValue("categories", val), --- > get categories() { return this.innerObject.getFirstPropertyValue("categories"); }, > set categories(val) { this.innerObject.updatePropertyWithValue("categories", val); }, 285,286c287,288 < get URL() this.innerObject.getFirstPropertyValue("url"), < set URL(val) this.innerObject.updatePropertyWithValue("url", val), --- > get URL() { return this.innerObject.getFirstPropertyValue("url"); }, > set URL(val) { this.innerObject.updatePropertyWithValue("url", val); }, 296c298 < set priority(val) this.innerObject.updatePropertyWithValue("priority", val), --- > set priority(val) { this.innerObject.updatePropertyWithValue("priority", val); }, 310,311c312,313 < get startTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")), < set startTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this), --- > get startTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstart")); }, > set startTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstart"), this); }, 313,314c315,316 < get endTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")), < set endTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this), --- > get endTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtend")); }, > set endTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtend"), this); }, 316c318 < get duration() wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getFirstPropertyValue("duration")); }, 318,319c320,321 < get dueTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")), < set dueTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this), --- > get dueTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("due")); }, > set dueTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "due"), this); }, 321,322c323,324 < get stampTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")), < set stampTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this), --- > get stampTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("dtstamp")); }, > set stampTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "dtstamp"), this); }, 324,325c326,327 < get createdTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")), < set createdTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this), --- > get createdTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("created")); }, > set createdTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "created"), this); }, 327,328c329,330 < get completedTime() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")), < set completedTime(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this), --- > get completedTime() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("completed")); }, > set completedTime(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "completed"), this); }, 330,331c332,333 < get lastModified() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")), < set lastModified(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this), --- > get lastModified() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("last-modified")); }, > set lastModified(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "last-modified"), this); }, 333,334c335,336 < get recurrenceId() wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")), < set recurrenceId(val) unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this), --- > get recurrenceId() { return wrapGetter(calDateTime, this.innerObject.getFirstPropertyValue("recurrence-id")); }, > set recurrenceId(val) { unwrapSetter(ICAL.Time, val, this._setTimeAttr.bind(this, "recurrence-id"), this); }, 336,337c338,339 < serializeToICS: function() this.innerObject.toString() + ICAL.newLineChar, < toString: function() this.innerObject.toString(), --- > serializeToICS: function() { return this.innerObject.toString() + ICAL.newLineChar; }, > toString: function() { return this.innerObject.toString(); }, 441,442c443,444 < const calICSServiceInterfaces = [Components.interfaces.calIICSService]; < const calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); --- > var calICSServiceInterfaces = [Components.interfaces.calIICSService]; > var calICSServiceClassID = Components.ID("{c61cb903-4408-41b3-bc22-da0b27efdfe1}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js 28,29c28,29 < const calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); < const calIcsImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calIcsImporterClassID = Components.ID("{1e3e33dc-445a-49de-b2b6-15b2a050bb9d}"); > var calIcsImporterInterfaces = [Components.interfaces.calIImporter]; 55,56c55,56 < const calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); < const calIcsExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calIcsExporterClassID = Components.ID("{a6a524ce-adff-4a0f-bb7d-d1aaad4adc60}"); > var calIcsExporterInterfaces = [Components.interfaces.calIExporter]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js 16,17c16,17 < const calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); < const calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; --- > var calIcsParserClassID = Components.ID("{6fe88047-75b6-4874-80e8-5f5800f14984}"); > var calIcsParserInterfaces = [Components.interfaces.calIIcsParser]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsSerializer.js 14,15c14,15 < const calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); < const calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; --- > var calIcsSerializerClassID = Components.ID("{207a6682-8ff1-4203-9160-729ec28c8766}"); > var calIcsSerializerInterfaces = [Components.interfaces.calIIcsSerializer]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItemBase.js 624c624 < if (!this.mAttachments.some(function(x) x.hashId == attachment.hashId)) { --- > if (!this.mAttachments.some(x => x.hashId == attachment.hashId)) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calItipItem.js 17,18c17,18 < const calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); < const calItipItemInterfaces = [Components.interfaces.calIItipItem]; --- > var calItipItemClassID = Components.ID("{f41392ab-dcad-4bad-818f-b3d1631c4d93}"); > var calItipItemInterfaces = [Components.interfaces.calIItipItem]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calListFormatter.js 15,16c15,16 < const calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); < const calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calListFormatterClassID = Components.ID("{9ae04413-fee3-45b9-8bbb-1eb39a4cbd1b}"); > var calListFormatterInterfaces = [Components.interfaces.calIPrintFormatter]; 28c28 < get name() cal.calGetString("calendar", "formatListName"), --- > get name() { return cal.calGetString("calendar", "formatListName"); }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calMonthGridPrinter.js 19,20c19,20 < const calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); < const calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calMonthPrinterClassID = Components.ID("{f42d5132-92c4-487b-b5c8-38bf292d74c1}"); > var calMonthPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "monthPrinterName"), --- > get name() { return cal.calGetString("calendar", "monthPrinterName"); }, 62,63d61 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 68a67,68 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 89c89 < let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item); --- > let addSingleItem = cal.print.addItemToDaybox.bind(cal.print, document, item, boxDate); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calOutlookCSVImportExport.js 10c10 < const localeEn = { --- > var localeEn = { 44c44 < const localeNl = { --- > var localeNl = { 75c75 < const locales = [localeEn, localeNl]; --- > var locales = [localeEn, localeNl]; 78c78 < const exportLineEnding = "\r\n"; --- > var exportLineEnding = "\r\n"; 94,95c94,95 < const calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); < const calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; --- > var calOutlookCSVImporterClassID = Components.ID("{64a5d17a-0497-48c5-b54f-72b15c9e9a14}"); > var calOutlookCSVImporterInterfaces = [Components.interfaces.calIImporter]; 423,424c423,424 < const calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); < const calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; --- > var calOutlookCSVExporterClassID = Components.ID("{48e6d3a6-b41b-4052-9ed2-40b27800bd4b}"); > var calOutlookCSVExporterInterfaces = [Components.interfaces.calIExporter]; 439,441c439,441 < function dateString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); < function timeString(aDateTime) cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); < function txtString(aString) aString || ""; --- > function dateString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.dateFormat); } > function timeString(aDateTime) { return cal.dateTimeToJsDate(aDateTime).toLocaleFormat(localeEn.timeFormat); } > function txtString(aString) { return aString || ""; } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calPeriod.js 13,14c13,14 < const calPeriodInterfaces = [Components.interfaces.calIPeriod]; < const calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); --- > var calPeriodInterfaces = [Components.interfaces.calIPeriod]; > var calPeriodClassID = Components.ID("{394a281f-7299-45f7-8b1f-cce21258972f}"); 28,29c28,29 < get icalPeriod() this.innerObject, < set icalPeriod(val) this.innerObject = val, --- > get icalPeriod() { return this.innerObject; }, > set icalPeriod(val) { this.innerObject = val; }, 31,32c31,32 < makeImmutable: function() this.isMutable = false, < clone: function() new calPeriod(this.innerObject.clone()), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calPeriod(this.innerObject.clone()); }, 34,35c34,35 < get start() wrapGetter(calDateTime, this.innerObject.start), < set start(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get start() { return wrapGetter(calDateTime, this.innerObject.start); }, > set start(val) { unwrapSetter(ICAL.Time, val, function(val) { 37c37 < }, this), --- > }, this); }, 39,40c39,40 < get end() wrapGetter(calDateTime, this.innerObject.getEnd()), < set end(val) unwrapSetter(ICAL.Time, val, function(val) { --- > get end() { return wrapGetter(calDateTime, this.innerObject.getEnd()); }, > set end(val) { unwrapSetter(ICAL.Time, val, function(val) { 45c45 < }, this), --- > }, this); }, 47c47 < get duration() wrapGetter(calDuration, this.innerObject.getDuration()), --- > get duration() { return wrapGetter(calDuration, this.innerObject.getDuration()); }, 49c49 < get icalString() this.innerObject.toICALString(), --- > get icalString() { return this.innerObject.toICALString(); }, 56c56 < toString: function() this.innerObject.toString() --- > toString: function() { return this.innerObject.toString(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calProtocolHandler.js 30,31c30,31 < get defaultPort() this.mHttpProtocol.defaultPort, < get protocolFlags() this.mHttpProtocol.protocolFlags, --- > get defaultPort() { return this.mHttpProtocol.defaultPort; }, > get protocolFlags() { return this.mHttpProtocol.protocolFlags; }, 36c36 < uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, --- > uri.init(Components.interfaces.nsIStandardURL.URLTYPE_STANDARD, 40c40 < --- > 49c49 < var uri = aUri.clone(); --- > let uri = aUri.clone(); 52c52,62 < var channel = Services.io.newChannelFromURI(uri, null); --- > let channel; > if (aLoadInfo) { > channel = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo); > } else { > channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > } 58c68 < allowPort: function cph_allowPort(aPort, aScheme) false --- > allowPort: function cph_allowPort(aPort, aScheme) { return false; } 61,62c71,72 < const calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); < const calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalClassID = Components.ID("{1153c73a-39be-46aa-9ba9-656d188865ca}"); > var calProtocolHandlerWebcalInterfaces = [Components.interfaces.nsIProtocolHandler]; 75,76c85,86 < const calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); < const calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var calProtocolHandlerWebcalsClassID = Components.ID("{bdf71224-365d-4493-856a-a7e74026f766}"); > var calProtocolHandlerWebcalsInterfaces = [Components.interfaces.nsIProtocolHandler]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceDate.js 12,13c12,13 < const calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); < const calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; --- > var calRecurrenceDateClassID = Components.ID("{806b6423-3aaa-4b26-afa3-de60563e9cec}"); > var calRecurrenceDateInterfaces = [Components.interfaces.calIRecurrenceDate]; 45c45 < get isNegative() this.mIsNegative, --- > get isNegative() { return this.mIsNegative; }, 51c51 < get isFinite() true, --- > get isFinite() { return true; }, 53c53 < get date() this.mDate, --- > get date() { return this.mDate; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceInfo.js 26,27c26,27 < const calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); < const calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; --- > var calRecurrenceInfoClassID = Components.ID("{04027036-5884-4a30-b4af-f2cad79f6edf}"); > var calRecurrenceInfoInterfaces = [Components.interfaces.calIRecurrenceInfo]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRecurrenceRule.js 14,15c14,15 < const calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; < const calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); --- > var calRecurrenceRuleInterfaces = [Components.interfaces.calIRecurrenceRule]; > var calRecurrenceRuleClassID = Components.ID("{df19281a-5389-4146-b941-798cb93a7f0d}"); 29,30c29,30 < makeImmutable: function() this.isMutable = false, < clone: function() new calRecurrenceRule(new ICAL.Recur(this.innerObject)), --- > makeImmutable: function() { this.isMutable = false; }, > clone: function() { return new calRecurrenceRule(new ICAL.Recur(this.innerObject)); }, 33c33 < get isFinite() this.innerObject.isFinite(), --- > get isFinite() { return this.innerObject.isFinite(); }, 98,99c98,99 < get icalString() "RRULE:" + this.innerObject.toString() + ICAL.newLineChar, < set icalString(val) this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")), --- > get icalString() { return "RRULE:" + this.innerObject.toString() + ICAL.newLineChar; }, > set icalString(val) { this.innerObject = ICAL.Recur.fromString(val.replace(/^RRULE:/i, "")); }, 106c106 < set icalProperty(val) unwrapSetter(ICAL.Property, val, function(val) { --- > set icalProperty(val) { unwrapSetter(ICAL.Property, val, function(val) { 108c108 < }, this), --- > }, this); }, 110,111c110,111 < get type() this.innerObject.freq, < set type(val) this.innerObject.freq = val, --- > get type() { return this.innerObject.freq; }, > set type(val) { this.innerObject.freq = val; }, 113,114c113,114 < get interval() this.innerObject.interval, < set interval(val) this.innerObject.interval = val, --- > get interval() { return this.innerObject.interval; }, > set interval(val) { this.innerObject.interval = val; }, 122c122 < set count(val) this.innerObject.count = (val && val > 0 ? val : null), --- > set count(val) { this.innerObject.count = (val && val > 0 ? val : null); }, 131c131 < set untilDate(val) unwrapSetter(ICAL.Time, val, function(val) { --- > set untilDate(val) { unwrapSetter(ICAL.Time, val, function(val) { 138c138 < }, this), --- > }, this); }, 140c140 < get isByCount() this.innerObject.isByCount(), --- > get isByCount() { return this.innerObject.isByCount(); }, 142,143c142,143 < get weekStart() this.innerObject.wkst - 1, < set weekStart(val) this.innerObject.wkst = val + 1, --- > get weekStart() { return this.innerObject.wkst - 1; }, > set weekStart(val) { this.innerObject.wkst = val + 1; }, diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calRelation.js 19,20c19,20 < const calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); < const calRelationInterfaces = [Components.interfaces.calIRelation]; --- > var calRelationClassID = Components.ID("{76810fae-abad-4019-917a-08e95d5bbd68}"); > var calRelationInterfaces = [Components.interfaces.calIRelation]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calStartupService.js 33,34c33,34 < const calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; < const calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); --- > var calStartupServiceInterfaces = [Components.interfaces.nsIObserver]; > var calStartupServiceClassID = Components.ID("{2547331f-34c0-4a4b-b93c-b503538ba6d6}"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTimezone.js 14,15c14,15 < const calTimezoneInterfaces = [Components.interfaces.calITimezone]; < const calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); --- > var calTimezoneInterfaces = [Components.interfaces.calITimezone]; > var calTimezoneClassID = Components.ID("{6702eb17-a968-4b43-b562-0d0c5f8e9eb5}"); 28c28 < get provider() cal.getTimezoneService(), --- > get provider() { return cal.getTimezoneService(); }, 38,42c38,42 < get tzid() this.innerObject.tzid, < get isFloating() this.innerObject == ICAL.Timezone.localTimezone, < get isUTC() this.innerObject == ICAL.Timezone.utcTimezone, < get latitude() this.innerObject.latitude, < get longitude() this.innerObject.longitude, --- > get tzid() { return this.innerObject.tzid; }, > get isFloating() { return this.innerObject == ICAL.Timezone.localTimezone; }, > get isUTC() { return this.innerObject == ICAL.Timezone.utcTimezone; }, > get latitude() { return this.innerObject.latitude; }, > get longitude() { return this.innerObject.longitude; }, 58c58 < toString: function() this.innerObject.toString() --- > tostring: function() { return this.innerObject.toString(); } 84c84 < get isUTC() this.mUTC, --- > get isUTC() { return this.mUTC; }, 108c108 < get provider() cal.getTimezoneService() --- > get provider() { return cal.getTimezoneService(); } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTodo.js 23,24c23,24 < const calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); < const calTodoInterfaces = [ --- > var calTodoClassID = Components.ID("{7af51168-6abe-4a31-984d-6f8a3989212d}"); > var calTodoInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calTransactionManager.js 17,18c17,18 < const calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); < const calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; --- > var calTransactionManagerClassID = Components.ID("{40a1ccf4-5f54-4815-b842-abf06f84dbfd}"); > var calTransactionManagerInterfaces = [Components.interfaces.calITransactionManager]; 54,71c54,57 < if (transaction) { < transaction = transaction.wrappedJSObject; < if (transaction) { < function checkItem(item) { < if (item) { < var calendar = item.calendar; < if (calendar && (!isCalendarWritable(calendar) || !userCanAddItemsToCalendar(calendar))) { < return false; < } < } < return true; < } < < if (!checkItem(transaction.mItem) || < !checkItem(transaction.mOldItem)) { < return false; < } < } --- > function checkItem(item) { > return item && item.calendar && > isCalendarWritable(item.calendar) && > userCanAddItemsToCalendar(item.calendar); 73c59,61 < return true; --- > > let trans = transaction && transaction.wrappedJSObject; > return trans && checkItem(trans.mItem) && checkItem(trans.mOldItem); 104,105c92,93 < const calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); < const calTransactionInterfaces = [ --- > var calTransactionClassID = Components.ID("{fcb54c82-2fb9-42cb-bf44-1e197a55e520}"); > var calTransactionInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calUtils.js 25c25 < let createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", --- > var createEvent = _calIcalCreator("@mozilla.org/calendar/event;1", 27c27 < let createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", --- > var createTodo = _calIcalCreator("@mozilla.org/calendar/todo;1", 29c29 < let createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", --- > var createDateTime = _calIcalCreator("@mozilla.org/calendar/datetime;1", 31c31 < let createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", --- > var createDuration = _calIcalCreator("@mozilla.org/calendar/duration;1", 33c33 < let createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", --- > var createAttendee = _calIcalCreator("@mozilla.org/calendar/attendee;1", 35c35 < let createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", --- > var createAttachment = _calIcalCreator("@mozilla.org/calendar/attachment;1", 37c37 < let createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", --- > var createAlarm = _calIcalCreator("@mozilla.org/calendar/alarm;1", 39c39 < let createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", --- > var createRelation = _calIcalCreator("@mozilla.org/calendar/relation;1", 41c41 < let createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", --- > var createRecurrenceDate = _calIcalCreator("@mozilla.org/calendar/recurrence-date;1", 43c43 < let createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", --- > var createRecurrenceRule = _calIcalCreator("@mozilla.org/calendar/recurrence-rule;1", 131c131 < recentTimezones.indexOf(aTzid) < 0) { --- > !recentTimezones.includes(aTzid)) { 604c604 < let sum = Array.map(str || " ", function(e) e.charCodeAt(0)).reduce(function(a,b) a + b); --- > let sum = Array.map(str || " ", e => e.charCodeAt(0)).reduce((a, b) => a + b); 1170c1170 < [Symbol.iterator]: function() this.mInterfaces[Symbol.iterator](), --- > [Symbol.iterator]: function() { return this.mInterfaces[Symbol.iterator](); }, 1189,1193c1189,1192 < var iid = this.mIid; < function eq(obj) { < return compareObjects(obj, iface, iid); < } < if (!this.mInterfaces.some(eq)) { --- > let existing = this.mInterfaces.some(obj => { > return compareObjects(obj, iface, this.mIid); > }); > if (!existing) { 1195d1193 < return true; 1196a1195 > return !existing; 1203,1207c1202,1204 < var iid = this.mIid; < function neq(obj) { < return !compareObjects(obj, iface, iid); < } < this.mInterfaces = this.mInterfaces.filter(neq); --- > this.mInterfaces = this.mInterfaces.filter((obj) => { > return !compareObjects(obj, iface, this.mIid); > }); 1290,1293c1287 < function filterFunc(op_) { < return (op.id != op_.id); < } < this.mSubOperations = this.mSubOperations.filter(filterFunc); --- > this.mSubOperations = this.mSubOperations.filter(op_ => op.id != op_.id); 1341c1335 < function forEachFunc(op) { --- > for (let op of subOperations) { 1344d1337 < subOperations.forEach(forEachFunc); 1816c1809 < binaryInsertNode.defaultAccessor = function(n) n.item; --- > binaryInsertNode.defaultAccessor = n => n.item; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendar.js 13,14c13,14 < const calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); < const calWcapCalendarInterfaces = [ --- > var calWcapCalendarClassID = Components.ID("{cf4d93e5-af79-451a-95f3-109055b32ef0}"); > var calWcapCalendarInterfaces = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapCalendarItems.js 4a5 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 146c147 < let alarms = item.getAlarms({}).filter(function(x) x.action == "EMAIL"); --- > let alarms = item.getAlarms({}).filter(x => x.action == "EMAIL"); 160c161 < --- > 274,278c275,279 < const METHOD_PUBLISH = 1; < const METHOD_REQUEST = 2; < const METHOD_REPLY = 4; < const METHOD_CANCEL = 8; < const METHOD_UPDATE = 256; --- > var METHOD_PUBLISH = 1; > var METHOD_REQUEST = 2; > var METHOD_REPLY = 4; > var METHOD_CANCEL = 8; > var METHOD_UPDATE = 256; 281a283,327 > function getOrgId(item) { > return (item && item.organizer && item.organizer.id ? item.organizer.id : null); > } > function encodeAttendees(atts) { > function attendeeSort(one, two) { > one = one.id; > two = two.id; > if (one == two) { > return 0; > } > return (one < two ? -1 : 1); > } > atts = atts.concat([]); > atts.sort(attendeeSort); > return atts.map(this_.encodeAttendee, this_).join(";"); > } > function encodeCategories(cats) { > cats = cats.concat([]); > cats.sort(); > return cats.join(";"); > } > function getPrivacy(item) { > return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); > } > function getAttachments(item) { > var ret; > var attachments = item.attachments; > if (attachments) { > var strings = []; > for each (var att in attachements) { > let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); > if (typeof(att) == "string") { > strings.push(encodeURIComponent(att)); > } else if (wrappedAtt && wrappedAtt.uri) { > strings.push(encodeURIComponent(wrappedAtt.uri.spec)); > } else { // xxx todo > logError("only URLs supported as attachment, not: " + att, this_); > } > } > strings.sort(); > ret = strings.join(";"); > } > return ret || ""; > } > 361,364c407 < < function getOrgId(item) { < return (item && item.organizer && item.organizer.id ? item.organizer.id : null); < } --- > 372c415 < --- > 376,388d418 < function encodeAttendees(atts) { < function attendeeSort(one, two) { < one = one.id; < two = two.id; < if (one == two) { < return 0; < } < return (one < two ? -1 : 1); < } < atts = atts.concat([]); < atts.sort(attendeeSort); < return atts.map(this_.encodeAttendee, this_).join(";"); < } 422,426d451 < function encodeCategories(cats) { < cats = cats.concat([]); < cats.sort(); < return cats.join(";"); < } 450,452d474 < function getPrivacy(item) { < return ((item.privacy && item.privacy != "") ? item.privacy : "PUBLIC"); < } 499,518d520 < function getAttachments(item) { < var ret = ""; < var attachments = item.attachments; < if (attachments) { < var strings = []; < for each (var att in attachements) { < let wrappedAtt = cal.wrapInstance(att, Components.interfaces.calIAttachment); < if (typeof(att) == "string") { < strings.push(encodeURIComponent(att)); < } else if (wrappedAtt && wrappedAtt.uri) { < strings.push(encodeURIComponent(wrappedAtt.uri.spec)); < } else { // xxx todo < logError("only URLs supported as attachment, not: " + att, this_); < } < } < strings.sort(); < ret += strings.join(";"); < } < return ret; < } 524c526 < --- > 569c571 < params += "&replace=1"; // (update) don't append to any lists --- > params += "&replace=1"; // (update) don't append to any lists 573c575 < function netRespFunc(err, icalRootComp) { --- > let netRespFunc = (err, icalRootComp) => { 577,578c579,580 < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, < 0, null, null, true /* bLeaveMutable */); --- > var items = this.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, > 0, null, null, true /* bLeaveMutable */); 580,581c582,583 < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); --- > this.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); 584c586 < this_.tunnelXProps(newItem, item); --- > this.tunnelXProps(newItem, item); 587c589 < delete this_.m_cachedResults; --- > delete this.m_cachedResults; 590c592 < } --- > }; 612c614 < if (name.indexOf("X-MOZ-") == 0) { --- > if (name.startsWith("X-MOZ-")) { 947c949 < if (item.id in fakedParents) { --- > if (item.id in fakedParents) { 1066,1081d1067 < function notifyResult(icalRootComp) { < var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); < if (items.length < 1) { < throw new Components.Exception("no such item!"); < } < if (items.length > 1) { < this_.notifyError(NS_ERROR_UNEXPECTED, < "unexpected number of items: " + items.length); < } < if (listener) { < listener.onGetResult(this_.superCalendar, NS_OK, < calIItemBase, log("getItem(): success. id=" + id, this_), < items.length, items); < } < request.execRespFunc(null, items[0]); < }; 1085a1072,1087 > function notifyResult(icalRootComp) { > var items = this_.parseItems(icalRootComp, calICalendar.ITEM_FILTER_ALL_ITEMS, 0, null, null); > if (items.length < 1) { > throw new Components.Exception("no such item!"); > } > if (items.length > 1) { > this_.notifyError(NS_ERROR_UNEXPECTED, > "unexpected number of items: " + items.length); > } > if (listener) { > listener.onGetResult(this_.superCalendar, NS_OK, > calIItemBase, log("getItem(): success. id=" + id, this_), > items.length, items); > } > request.execRespFunc(null, items[0]); > }; 1151c1153 < --- > 1166c1168 < --- > 1344a1347 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapErrors.js 5c5 < const NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; --- > var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG; 10,11c10,11 < const NS_ERROR_MODULE_BASE_OFFSET = 0x45; < const NS_ERROR_MODULE_NETWORK = 6; --- > var NS_ERROR_MODULE_BASE_OFFSET = 0x45; > var NS_ERROR_MODULE_NETWORK = 6; 52c52 < const NS_ERROR_OFFLINE = generateNetFailure(16); --- > var NS_ERROR_OFFLINE = generateNetFailure(16); 55c55 < const NS_BINDING_SUCCEEDED = NS_OK; --- > var NS_BINDING_SUCCEEDED = NS_OK; 57,60c57,60 < const NS_BINDING_FAILED = generateNetFailure(1); < const NS_BINDING_ABORTED = generateNetFailure(2); < const NS_BINDING_REDIRECTED = generateNetFailure(3); < const NS_BINDING_RETARGETED = generateNetFailure(4); --- > var NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_ABORTED = generateNetFailure(2); > var NS_BINDING_REDIRECTED = generateNetFailure(3); > var NS_BINDING_RETARGETED = generateNetFailure(4); 62c62 < const g_nsNetErrorCodes = [ --- > var g_nsNetErrorCodes = [ 124c124 < const g_wcapErrorCodes = [ --- > var g_wcapErrorCodes = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapRequest.js 195,196c195,196 < const calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); < const calWcapNetworkRequestInterfaces = [ --- > var calWcapNetworkRequestClassID = Components.ID("{e3c62b37-83cf-41ec-9872-0af9f952430a}"); > var calWcapNetworkRequestInterfaces = [ 410c410,415 < var channel = Services.io.newChannelFromURI(uri); --- > var channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWcapSession.js 105,106c105,106 < const calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); < const calWcapSessionInterfaces = [ --- > var calWcapSessionClassID = Components.ID("{cbf803fd-4469-4999-ae39-367af1c7b077}"); > var calWcapSessionInterfaces = [ 1060a1061,1066 > function assureDefault(pref, val) { > if (aCalendar.getProperty(pref) === null) { > aCalendar.setProperty(pref, val); > } > } > 1065,1069d1070 < function assureDefault(pref, val) { < if (aCalendar.getProperty(pref) === null) { < aCalendar.setProperty(pref, val); < } < } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js 12,13c12,13 < const calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); < const calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; --- > var calWeekInfoServiceClassID = Components.ID("{6877bbdd-f336-46f5-98ce-fe86d0285cc1}"); > var calWeekInfoServiceInterfaces = [Components.interfaces.calIWeekInfoService]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js 19,20c19,20 < const calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); < const calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; --- > var calWeekPrinterClassID = Components.ID("{2d6ec97b-9109-4b92-89c5-d4b4806619ce}"); > var calWeekPrinterInterfaces = [Components.interfaces.calIPrintFormatter]; 32c32 < get name() cal.calGetString("calendar", "weekPrinterName"), --- > get name() { return cal.calGetString("calendar", "weekPrinterName"); }, 55,56d54 < itemStartDate = itemStartDate.getInTimezone(defaultTimezone); < itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 61a60,61 > itemStartDate = itemStartDate.getInTimezone(defaultTimezone); > itemEndDate = itemEndDate.getInTimezone(defaultTimezone); 82c82 < cal.print.addItemToDaybox(document, item, dayTable[boxDateKey]); --- > cal.print.addItemToDaybox(document, item, boxDate, dayTable[boxDateKey]); Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.jar differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest 7,8d6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-aero/ os=WINNT osversion>=6 < skin calendar-windows classic/1.0 jar:chrome.jar!/skin/windows/calendar/win-classic/ os=WINNT osversion<6 42c40 < override chrome://lightning/skin/accountCentral.css chrome://lightning/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} --- > override chrome://lightning/skin/accountCentral.css chrome://lightning-common/skin/suite-accountCentral.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 47d44 < style chrome://calendar/content/calendar-event-dialog-attendees.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 49d45 < style chrome://calendar/content/calendar-event-dialog.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT 51,52c47 < style chrome://calendar/content/calendar-occurrence-prompt.xul chrome://calendar-windows/skin/calendar.css os=WINNT osversion>=6 < style chrome://global/content/customizeToolbar.xul chrome://calendar-windows/skin/calendar-event-dialog.css os=WINNT --- > style chrome://global/content/customizeToolbar.xul chrome://calendar-common/skin/dialogs/calendar-event-dialog.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 54a50 > style chrome://global/content/customizeToolbar.xul chrome://lightning-common/skin/lightning.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js 17,18c17,18 < const calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); < const calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; --- > var calBackendLoaderClassID = Components.ID("{0314c271-7168-40fa-802e-83c8c46a557e}"); > var calBackendLoaderInterfaces = [Components.interfaces.nsIObserver]; 41,44c41,42 < let backend = "libical"; < if (Services.prefs.prefHasUserValue("calendar.icaljs")) { < backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; < } --- > let backend = Services.prefs.getBoolPref("calendar.icaljs") ? "icaljs" : "libical"; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calCompositeCalendar.js 15c15 < const calIOperationListener = Components.interfaces.calIOperationListener; --- > var calIOperationListener = Components.interfaces.calIOperationListener; 84,85c84,85 < const calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); < const calCompositeCalendarInterfaces = [ --- > var calCompositeCalendarClassID = Components.ID("{aeff788d-63b0-4996-91fb-40a7654c6224}"); > var calCompositeCalendarInterfaces = [ 101,105d100 < // private members < // < mDefaultCalendar: null, < < // 108,109c103,104 < get prefChromeOverlay() null, < get displayName() cal.calGetString("calendar", "compositeName"), --- > get prefChromeOverlay() { return null; }, > get displayName() { return cal.calGetString("calendar", "compositeName"); }, 393c388 < return; --- > return null; 459,462c454,456 < let this_ = this; < function cancelFunc() { // operation group has been cancelled < let listener = this_.mRealListener; < this_.mRealListener = null; --- > this.mOpGroup = new cal.calOperationGroup(() => { > let listener = this.mRealListener; > this.mRealListener = null; 465c459 < this_, Components.interfaces.calIErrors.OPERATION_CANCELLED, --- > this, Components.interfaces.calIErrors.OPERATION_CANCELLED, 467,468c461,462 < if (this_.mCompositeCalendar.statusDisplayed) { < this_.mCompositeCalendar.mStatusObserver.stopMeteors(); --- > if (this.mCompositeCalendar.statusDisplayed) { > this.mCompositeCalendar.mStatusObserver.stopMeteors(); 471,472c465 < } < this.mOpGroup = new cal.calOperationGroup(cancelFunc); --- > }); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDavCalendar.js 25c25 < const xmlHeader = '\n'; --- > var xmlHeader = '\n'; 27,31c27,31 < const davNS = "DAV:" < const caldavNS = "urn:ietf:params:xml:ns:caldav"; < const calservNS = "http://calendarserver.org/ns/"; < const MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; < const MIME_TEXT_XML = "text/xml; charset=utf-8"; --- > var davNS = "DAV:" > var caldavNS = "urn:ietf:params:xml:ns:caldav"; > var calservNS = "http://calendarserver.org/ns/"; > var MIME_TEXT_CALENDAR = "text/calendar; charset=utf-8"; > var MIME_TEXT_XML = "text/xml; charset=utf-8"; 33,34c33,34 < const cICL = Components.interfaces.calIChangeLog; < const cIOL = Components.interfaces.calIOperationListener; --- > var cICL = Components.interfaces.calIChangeLog; > var cIOL = Components.interfaces.calIOperationListener; 82,85c82,85 < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalDavCalendar = Components.interfaces.calICalDavCalendar; --- > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalDavCalendar = Components.interfaces.calICalDavCalendar; 88,90c88,90 < const kDavResourceTypeNone = 0; < const kDavResourceTypeCollection = 1; < const kDavResourceTypeCalendar = 2; --- > var kDavResourceTypeNone = 0; > var kDavResourceTypeCollection = 1; > var kDavResourceTypeCalendar = 2; 93,94c93,94 < const CALDAV_MODIFY_ITEM = "modify"; < const CALDAV_DELETE_ITEM = "delete"; --- > var CALDAV_MODIFY_ITEM = "modify"; > var CALDAV_DELETE_ITEM = "delete"; 96,97c96,97 < const calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); < const calDavCalendarInterfaces = [ --- > var calDavCalendarClassID = Components.ID("{a35fc6ea-3d92-11d9-89f9-00045ace3b8d}"); > var calDavCalendarInterfaces = [ 262a263 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 341c342 < if (wwwauth.startsWith("Bearer") && wwwauth.contains("error=")) { --- > if (wwwauth.startsWith("Bearer") && wwwauth.includes("error=")) { 567c568 < return (this.supportedItemTypes.indexOf("VTODO") > -1); --- > return (this.supportedItemTypes.includes("VTODO")); 569c570 < return (this.supportedItemTypes.indexOf("VEVENT") > -1); --- > return (this.supportedItemTypes.includes("VEVENT")); 632,633c633,635 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Can't set ID on non-mutable item to addItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Can't set ID on non-mutable item to addItem"); > return; 637,638c639,641 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "Server does not support item type"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "Server does not support item type"); > return; 750,751c753,755 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID for modifyItem doesn't exist or is null"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID for modifyItem doesn't exist or is null"); > return; 874,875c878,880 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "ID doesn't exist for deleteItem"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "ID doesn't exist for deleteItem"); > return; 888,890c893,896 < return notifyListener(Components.results.NS_ERROR_FAILURE, < "eventUri and calendarUri paths are the same, " + < "will not go on to delete entire calendar"); --- > notifyListener(Components.results.NS_ERROR_FAILURE, > "eventUri and calendarUri paths are the same, " + > "will not go on to delete entire calendar"); > return; 941c947 < return --- > return; 1329a1336 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1398c1405,1406 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1404c1412,1413 < return notifyListener(Components.results.NS_ERROR_FAILURE); --- > notifyListener(Components.results.NS_ERROR_FAILURE); > return; 1425c1434,1435 < return notifyListener(Components.results.NS_OK); --- > notifyListener(Components.results.NS_OK); > return; 1642c1652 < function postpone() { --- > setTimeout(function postpone() { 1649,1651c1659 < } < < setTimeout(postpone, 0); --- > }, 0); 1838c1846 < if (thisCalendar.mGenerallySupportedItemTypes.indexOf(compName) >= 0) --- > if (thisCalendar.mGenerallySupportedItemTypes.includes(compName)) 1963c1971 < if (dav && dav.indexOf("calendar-auto-schedule") != -1) { --- > if (dav && dav.includes("calendar-auto-schedule")) { 1970c1978 < } else if (dav && dav.indexOf("calendar-schedule") != -1) { --- > } else if (dav && dav.includes("calendar-schedule")) { 1978c1986 < if (thisCalendar.hasAutoScheduling || (dav && dav.indexOf("calendar-schedule") != -1)) { --- > if (thisCalendar.hasAutoScheduling || (dav && dav.includes("calendar-schedule"))) { 2073c2081 < nsList = pcs.map(function(x) thisCalendar.ensureDecodedPath(x)); --- > nsList = pcs.map(x => thisCalendar.ensureDecodedPath(x)); 2198a2207,2215 > function createBoxUrl(path) { > let url = thisCalendar.mUri.clone(); > url.path = thisCalendar.ensureDecodedPath(path); > // Make sure the uri has a / at the end, as we do with the calendarUri. > if (url.path.charAt(url.path.length - 1) != '/') { > url.path += "/"; > } > return url; > } 2211,2219d2227 < function createBoxUrl(path) { < let url = thisCalendar.mUri.clone(); < url.path = thisCalendar.ensureDecodedPath(path); < // Make sure the uri has a / at the end, as we do with the calendarUri. < if (url.path.charAt(url.path.length - 1) != '/') { < url.path += "/"; < } < return url; < } 2606c2614 < aString.indexOf(this.mInboxUrl.spec) == 0); --- > aString.startsWith(this.mInboxUrl.spec)); 2633a2642 > getItemListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2665a2675 > modListener.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 2788c2798 < return false; --- > return; 2943,2945c2953,2955 < "\x64\x65"](("dpotu!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0#!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs#!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ --- > "\x64\x65"](("wbs!!!PBVUI`CBTF`VSJ!>!#iuuqt;00bddpvout/hpphmf/dpn0p0# "!!PBVUI`TDPQF!>!#iuuqt;00xxx/hpphmfbqjt/dpn0bvui0dbmfoebs# "JFOU`JE!>!#831674:95649/bqqt/hpphmfvtfsdpoufou/dpn#!#z"+ 2988c2998 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calDefaultACLManager.js 15,16c15,16 < const calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); < const calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; --- > var calDefaultACLManagerClassID = Components.ID("{7463258c-6ef3-40a2-89a9-bb349596e927}"); > var calDefaultACLManagerInterfaces = [Components.interfaces.calICalendarACLManager]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICALJSComponents.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calICSCalendar.js 22,25c22,25 < const CI = Components.interfaces; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calICalendar = Components.interfaces.calICalendar; < const calIErrors = Components.interfaces.calIErrors; --- > var CI = Components.interfaces; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calICalendar = Components.interfaces.calICalendar; > var calIErrors = Components.interfaces.calIErrors; 51,52c51,52 < const calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); < const calICSCalendarInterfaces = [ --- > var calICSCalendarClassID = Components.ID("{f8438bff-a3c9-4ed5-b23f-2663b5469abf}"); > var calICSCalendarInterfaces = [ 119c119,124 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 176c181,186 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 312a323 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 320c331,336 < var channel = Services.io.newChannelFromURI(savedthis.mUri); --- > var channel = Services.io.newChannelFromURI2(savedthis.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 454c470 < if (this.readOnly) --- > if (this.readOnly) 461c477 < if (this.readOnly) --- > if (this.readOnly) 469c485 < if (this.readOnly) --- > if (this.readOnly) 498a515 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 652,654c669 < function f(v) { < return (v.name.indexOf("calBackupData_"+pseudoID+"_"+type) != -1) < }); --- > v => v.name.includes("calBackupData_"+pseudoID+"_"+type)); 770c785,790 < var channel = Services.io.newChannelFromURI(this.mUri); --- > var channel = Services.io.newChannelFromURI2(this.mUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); 894a915,917 > var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); > httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); > 896d918 < var httpchannel = aChannel.QueryInterface(Components.interfaces.nsIHttpChannel); 899d920 < httpchannel.setRequestHeader("Accept", "text/calendar,text/plain;q=0.8,*/*;q=0.5", false); 900a922,924 > } else if (!aForceRefresh && this.mLastModified) { > // Only send 'If-Modified-Since' if no ETag is available > httpchannel.setRequestHeader("If-Modified-Since", this.mLastModified, false); 948a973,979 > > try { > this.mLastModified = httpchannel.getResponseHeader("Last-Modified"); > } catch(e) { > this.mLastModified = null; > } > 1079c1110 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calImportExportModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItemModule.js 7c7 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipEmailTransport.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 25,26c26,27 < const calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); < const calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; --- > var calItipEmailTransportClassID = Components.ID("{d4d7b59e-c9e0-4a7a-b5e8-5958f85515f0}"); > var calItipEmailTransportInterfaces = [Components.interfaces.calIItipTransport]; 42,43c43,44 < get scheme() "mailto", < get type() "email", --- > get scheme() { return "mailto"; }, > get type() { return "email"; }, 218,225c219,226 < cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); < let toList = ""; < for each (let recipient in aToList) { < // Strip leading "mailto:" if it exists. < let rId = recipient.id.replace(/^mailto:/i, ""); < // Prevent trailing commas. < if (toList.length > 0) { < toList += ", "; --- > // don't show log message in case of falling through > if (aItem.autoResponse == Components.interfaces.calIItipItem.AUTO) { > cal.LOG("sendXpcomMail: Found AUTO autoResponse type."); > } > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Invalid recipient for email transport: " + aVal.toString()); 227,228c228,233 < // Add this recipient id to the list. < toList += rId; --- > return email; > } > let toMap = aToList.map(cbEmail).filter(function (aVal, aInd, aArr) {return (aVal.length)}); > if (toMap.length < aToList.length) { > // at least one invalid recipient, so we skip sending for this message > return false; 229a235 > let toList = toMap.join(', '); 296c302 < _createTempImipFile: function cietCTIF(compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { --- > _createTempImipFile: function (compatMode, aToList, aSubject, aBody, aItem, aIdentity, aMessageId) { 298,310d303 < function encodeUTF8(text) { < return convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n"); < } < function encodeMimeHeader(aHeader, aIsEmail = false) { < let fieldNameLen = (aHeader.indexOf(": ") + 2); < return MailServices.mimeConverter < .encodeMimePartIIStr_UTF8(aHeader, < aIsEmail, < "UTF-8", < fieldNameLen, < Components.interfaces.nsIMimeConverter.MIME_ENCODED_WORD_SIZE); < } < 319,322c312 < let utf8CalText = encodeUTF8(calText); < < let fullFrom = !aIdentity.fullName.length ? null : < cal.validateRecipientList(aIdentity.fullName + "<" + aIdentity.email + ">"); --- > let utf8CalText = ltn.invitation.encodeUTF8(calText); 327,349c317 < let mailText = ("MIME-version: 1.0\r\n" + < (aIdentity.replyTo < ? "Return-path: " + encodeMimeHeader(aIdentity.replyTo, true) + "\r\n" : "") + < "From: " + encodeMimeHeader(fullFrom || aIdentity.email, true) + "\r\n" + < (aIdentity.organization < ? "Organization: " + encodeMimeHeader(aIdentity.organization) + "\r\n" : "") + < "Message-ID: " + aMessageId + "\r\n" + < "To: " + encodeMimeHeader(aToList, true) + "\r\n" + < "Date: " + (new Date()).toUTCString() + "\r\n" + < "Subject: " + encodeMimeHeader(aSubject.replace(/(\n|\r\n)/, "|")) + "\r\n"); < let validRecipients; < if (aIdentity.doCc) { < validRecipients = cal.validateRecipientList(aIdentity.doCcList); < if (validRecipients != "") { < mailText += ("Cc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } < if (aIdentity.doBcc) { < validRecipients = cal.validateRecipientList(aIdentity.doBccList); < if (validRecipients != "") { < mailText += ("Bcc: " + encodeMimeHeader(validRecipients, true) + "\r\n"); < } < } --- > let mailText = ltn.invitation.getHeaderSection(aMessageId, aIdentity, aToList, aSubject); 370c338 < encodeUTF8(aBody) + --- > ltn.invitation.encodeUTF8(aBody) + diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calItipProtocolHandler.js 8c8 < const CI = Components.interfaces; --- > var CI = Components.interfaces; 10,11c10,11 < const ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; < const ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; --- > var ITIP_HANDLER_MIMETYPE = "application/x-itip-internal"; > var ITIP_HANDLER_PROTOCOL = "moz-cal-handle-itip"; 21,22c21,22 < const ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); < const ItipChannelInterfaces = [ --- > var ItipChannelClassID = Components.ID("{643e0328-36f6-411d-a107-16238dff9cd7}"); > var ItipChannelInterfaces = [ 62,63c62,63 < const ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); < const ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; --- > var ItipProtocolHandlerClassID = Components.ID("{6e957006-b4ce-11d9-b053-001124736B74}"); > var ItipProtocolHandlerInterfaces = [Components.interfaces.nsIProtocolHandler]; 75c75 < allowPort: function () false, --- > allowPort: () => false, 99,100c99,100 < const ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); < const ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; --- > var ItipContentHandlerClassID = Components.ID("{47c31f2b-b4de-11d9-bfe6-001124736B74}"); > var ItipContentHandlerInterfaces = [Components.interfaces.nsIContentHandler]; 114c114 < if (uri.indexOf(ITIP_HANDLER_PROTOCOL + ":") != 0) { --- > if (!uri.startsWith(ITIP_HANDLER_PROTOCOL + ":")) { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calMemoryCalendar.js 16,18c16,18 < const calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; < const calICalendarManager = Components.interfaces.calICalendarManager; < const cICL = Components.interfaces.calIChangeLog; --- > var calCalendarManagerContractID = "@mozilla.org/calendar/manager;1"; > var calICalendarManager = Components.interfaces.calICalendarManager; > var cICL = Components.interfaces.calIChangeLog; 24,25c24,25 < const calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); < const calMemoryCalendarInterfaces = [ --- > var calMemoryCalendarClassID = Components.ID("{bda0dd7f-0a2f-4fcf-ba08-5517e6fbf133}"); > var calMemoryCalendarInterfaces = [ 470a471 > return cal.forEach.CONTINUE; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calSleepMonitor.js 9,10c9,10 < const calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); < const calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; --- > var calSleepMonitorClassID = Components.ID("9b987a8d-c2ef-4cb9-9602-1261b4b2f6fa"); > var calSleepMonitorInterfaces = [Components.interfaces.nsIObserver]; 71c71 < let NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); --- > var NSGetFactory = XPCOMUtils.generateNSGetFactory([calSleepMonitor]); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calStorageCalendar.js 14,16c14,16 < const USECS_PER_SECOND = 1000000; < const kCalICalendar = Components.interfaces.calICalendar; < const cICL = Components.interfaces.calIChangeLog; --- > var USECS_PER_SECOND = 1000000; > var kCalICalendar = Components.interfaces.calICalendar; > var cICL = Components.interfaces.calIChangeLog; 28,29c28,29 < const calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); < const calStorageCalendarInterfaces = [ --- > var calStorageCalendarClassID = Components.ID("{b3eaa1c4-5dfe-4c0a-b62a-b3a514218461}"); > var calStorageCalendarInterfaces = [ 281c281 < function migrateTables(db, newCalId, oldCalId) { --- > let migrateTables = function(db, newCalId, oldCalId) { 304c304 < } --- > }; 1015a1016 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1037a1039 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), 1564c1566 < sp = this.mSelectTodosWithRecurrence.params; --- > let sp = this.mSelectTodosWithRecurrence.params; 2445c2447 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calTimezoneService.js 41,42c41,42 < const calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); < const calTimezoneServiceInterfaces = [ --- > var calTimezoneServiceClassID = Components.ID("{e736f2bd-7640-4715-ab35-887dc866c587}"); > var calTimezoneServiceInterfaces = [ 64c64 < has: function(id) this.getTimezone(id) != null, --- > has: function(id) { return this.getTimezone(id) != null; }, 77c77,85 < NetUtil.asyncFetch(aURL, (inputStream, status) => { --- > let uri = Services.io.newURI(aURL, null, null); > let channel = Services.io.newChannelFromURI2(uri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); > > NetUtil.asyncFetch(channel, (inputStream, status) => { 179c187 < if (tzid.indexOf("/mozilla.org/") == 0) { --- > if (tzid.startsWith("/mozilla.org/")) { 220a229,234 > get aliasIds() { > return new calStringEnumerator([ > k for ([k, v] of this.mZones.entries()) if (v.aliasTo && k != "UTC" && k != "floating") > ]); > }, > 291a306,310 > var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; > var ocean = "Arctic|Atlantic|Indian|Pacific"; > var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ > "(?:[/][-A-Z_a-z]+)+)"); > 483a503,565 > function environmentVariableValue(varName) { > let envSvc = Components.classes["@mozilla.org/process/environment;1"] > .getService(Components.interfaces.nsIEnvironment); > let value = envSvc.get(varName); > if (!value) return ""; > if (!value.match(tzRegex)) return ""; > return varName+"="+value; > } > > function symbolicLinkTarget(filepath) { > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > if (!file.isSymlink()) return ""; > if (!file.target.match(tzRegex)) return ""; > return filepath +" -> "+file.target; > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function fileFirstZoneLineString(filepath) { > // return first line of file that matches tzRegex (ZoneInfo id), > // or "" if no file or no matching line. > try { > let file = Components.classes["@mozilla.org/file/local;1"] > .createInstance(Components.interfaces.nsILocalFile); > file.initWithPath(filepath); > file.QueryInterface(Components.interfaces.nsIFile); > if (!file.exists()) return ""; > let fileInstream = Components.classes["@mozilla.org/network/file-input-stream;1"] > .createInstance(Components.interfaces.nsIFileInputStream); > const PR_RDONLY = 0x1; > fileInstream.init(file, PR_RDONLY, 0, 0); > fileInstream.QueryInterface(Components.interfaces.nsILineInputStream); > try { > let line = {}, hasMore = true, MAXLINES = 10; > for (let i = 0; hasMore && i < MAXLINES; i++) { > hasMore = fileInstream.readLine(line); > if (line.value && line.value.match(tzRegex)) { > return filepath+": "+line.value; > } > } > return ""; // not found > } finally { > fileInstream.close(); > } > } catch (ex) { > Components.utils.reportError(filepath+": "+ex); > return ""; > } > } > > function weekday(icsDate, tz) { > let calDate = cal.createDateTime(icsDate); > calDate.timezone = tz; > return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); > } > 562,623d643 < var continent = "Africa|America|Antarctica|Asia|Australia|Europe"; < var ocean = "Arctic|Atlantic|Indian|Pacific"; < var tzRegex = new RegExp(".*((?:"+continent+"|"+ocean+")"+ < "(?:[/][-A-Z_a-z]+)+)"); < const CC = Components.classes; < const CI = Components.interfaces; < var envSvc = (CC["@mozilla.org/process/environment;1"] < .getService(Components.interfaces.nsIEnvironment)); < function environmentVariableValue(varName) { < var value = envSvc.get(varName); < if (!value) return ""; < if (!value.match(tzRegex)) return ""; < return varName+"="+value; < } < function symbolicLinkTarget(filepath) { < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < if (!file.isSymlink()) return ""; < if (!file.target.match(tzRegex)) return ""; < return filepath +" -> "+file.target; < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < } < function fileFirstZoneLineString(filepath) { < // return first line of file that matches tzRegex (ZoneInfo id), < // or "" if no file or no matching line. < try { < var file = (CC["@mozilla.org/file/local;1"] < .createInstance(CI.nsILocalFile)); < file.initWithPath(filepath); < file.QueryInterface(CI.nsIFile); < if (!file.exists()) return ""; < var fileInstream = < (CC["@mozilla.org/network/file-input-stream;1"]. < createInstance(CI.nsIFileInputStream)); < const PR_RDONLY = 0x1; < fileInstream.init(file, PR_RDONLY, 0, 0); < fileInstream.QueryInterface(CI.nsILineInputStream); < try { < var line = {}, hasMore = true, MAXLINES = 10; < for (var i = 0; hasMore && i < MAXLINES; i++) { < hasMore = fileInstream.readLine(line); < if (line.value && line.value.match(tzRegex)) { < return filepath+": "+line.value; < } < } < return ""; // not found < } finally { < fileInstream.close(); < } < } catch (ex) { < Components.utils.reportError(filepath+": "+ex); < return ""; < } < < } 629c649 < var results = osUserTimeZone.match(tzRegex); --- > let results = osUserTimeZone.match(tzRegex); 752,757d771 < function weekday(icsDate) { < var calDate = cal.createDateTime(); < calDate.icalString = icsDate; < calDate.timezone = tz; < return cal.dateTimeToJsDate(calDate).toLocaleFormat("%a"); < } 759c773 < var standardStartWeekday = weekday(standardStart); --- > var standardStartWeekday = weekday(standardStart, tz); 765c779 < var daylightStartWeekday = weekday(daylightStart); --- > var daylightStartWeekday = weekday(daylightStart, tz); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.js 13,26c13,26 < const NS_OK = Components.results.NS_OK; < const NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; < const nsIException = Components.interfaces.nsIException; < const nsISupports = Components.interfaces.nsISupports; < const calIWcapSession = Components.interfaces.calIWcapSession; < const calIWcapCalendar = Components.interfaces.calIWcapCalendar; < const calIWcapErrors = Components.interfaces.calIWcapErrors; < const calICalendar = Components.interfaces.calICalendar; < const calIItemBase = Components.interfaces.calIItemBase; < const calIOperationListener = Components.interfaces.calIOperationListener; < const calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; < const calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; < const calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; < const calIErrors = Components.interfaces.calIErrors; --- > var NS_OK = Components.results.NS_OK; > var NS_ERROR_UNEXPECTED = Components.results.NS_ERROR_UNEXPECTED; > var nsIException = Components.interfaces.nsIException; > var nsISupports = Components.interfaces.nsISupports; > var calIWcapSession = Components.interfaces.calIWcapSession; > var calIWcapCalendar = Components.interfaces.calIWcapCalendar; > var calIWcapErrors = Components.interfaces.calIWcapErrors; > var calICalendar = Components.interfaces.calICalendar; > var calIItemBase = Components.interfaces.calIItemBase; > var calIOperationListener = Components.interfaces.calIOperationListener; > var calIFreeBusyProvider = Components.interfaces.calIFreeBusyProvider; > var calIFreeBusyInterval = Components.interfaces.calIFreeBusyInterval; > var calICalendarSearchProvider = Components.interfaces.calICalendarSearchProvider; > var calIErrors = Components.interfaces.calIErrors; 62c62 < const scriptLoadOrder = [ --- > var scriptLoadOrder = [ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbasecomps.dll differ Files source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt and target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.xpt differ diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js 9a10 > Components.utils.import("resource://calendar/modules/ltnInvitationUtils.jsm"); 15,16c16,17 < const ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); < const ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; --- > var ltnMimeConverterClassID = Components.ID("{c70acb08-464e-4e55-899d-b2c84c5409fa}"); > var ltnMimeConverterInterfaces = [Components.interfaces.nsISimpleMimeConverter]; 28,273d28 < /** < * Append the text to node, converting contained URIs to links. < * < * @param text The text to convert. < * @param node The node to append the text to. < */ < linkifyText: function linkifyText(text, node) { < let doc = node.ownerDocument; < let localText = text; < < // XXX This should be improved to also understand abbreviated urls, could be < // extended to only linkify urls that have an internal protocol handler, or < // have an external protocol handler that has an app assigned. The same < // could be done for mailto links which are not handled here either. < < // XXX Ideally use mozITXTToHTMLConv here, but last time I tried it didn't work. < < while (localText.length) { < let pos = localText.search(/(^|\s+)([a-zA-Z0-9]+):\/\/[^\s]+/); < if (pos == -1) { < node.appendChild(doc.createTextNode(localText)); < break; < } < pos += localText.substr(pos).match(/^\s*/)[0].length; < let endPos = pos + localText.substr(pos).search(/([.!,<>(){}]+)?(\s+|$)/); < let url = localText.substr(pos, endPos - pos); < < if (pos > 0) { < node.appendChild(doc.createTextNode(localText.substr(0, pos))); < } < let a = doc.createElement("a"); < a.setAttribute("href", url); < a.textContent = url; < < node.appendChild(a); < < localText = localText.substr(endPos); < } < }, < < /** < * Returns a header title for an ITIP item depending on the response method < * @param aItipItem the event < * @return string the header title < */ < getItipHeader: function getItipHeader(aItipItem) { < let header; < < if (aItipItem) { < let item = aItipItem.getItemList({})[0]; < let summary = item.getProperty("SUMMARY") || ""; < let organizer = item.organizer; < let organizerString = (organizer) ? < (organizer.commonName || organizer.toString()) : ""; < < switch (aItipItem.responseMethod) { < case "REQUEST": < header = cal.calGetString("lightning", < "itipRequestBody", < [organizerString, summary], < "lightning"); < break; < case "CANCEL": < header = cal.calGetString("lightning", < "itipCancelBody", < [organizerString, summary], < "lightning"); < break; < case "REPLY": { < // This is a reply received from someone else, there should < // be just one attendee, the attendee that replied. If < // there is more than one attendee, just take the first so < // code doesn't break here. < let attendees = item.getAttendees({}); < if (attendees && attendees.length >= 1) { < let sender = attendees[0]; < let statusString = (sender.participationStatus == "DECLINED" ? < "itipReplyBodyDecline" : < "itipReplyBodyAccept"); < < header = cal.calGetString("lightning", < statusString, < [sender.toString()], < "lightning"); < } else { < header = ""; < } < break; < } < } < } < < if (!header) { < header = cal.calGetString("lightning", "imipHtml.header", null, "lightning"); < } < < return header; < }, < < /** < * Returns the html representation of the event as a DOM document. < * < * @param event The calIItemBase to parse into html. < * @param aNewItipItem The parsed itip item. < * @return The DOM document with values filled in. < */ < createHtml: function createHtml(event, aNewItipItem) { < // Creates HTML using the Node strings in the properties file < let doc = cal.xml.parseFile("chrome://lightning/content/lightning-invitation.xhtml"); < let formatter = cal.getDateFormatter(); < < let self = this; < function field(field, contentText, linkify) { < let descr = doc.getElementById("imipHtml-" + field + "-descr"); < if (descr) { < let labelText = cal.calGetString("lightning", "imipHtml." + field, null, "lightning"); < descr.textContent = labelText; < } < < if (contentText) { < let content = doc.getElementById("imipHtml-" + field + "-content"); < doc.getElementById("imipHtml-" + field + "-row").hidden = false; < if (linkify) { < self.linkifyText(contentText, content); < } else { < content.textContent = contentText; < } < } < } < < // Simple fields < let headerDescr = doc.getElementById("imipHtml-header-descr"); < if (headerDescr) { < headerDescr.textContent = this.getItipHeader(aNewItipItem); < } < < field("summary", event.title); < field("location", event.getProperty("LOCATION")); < < let dateString = formatter.formatItemInterval(event); < < if (event.recurrenceInfo) { < let kDefaultTimezone = cal.calendarDefaultTimezone(); < let startDate = event.startDate; < let endDate = event.endDate; < startDate = startDate ? startDate.getInTimezone(kDefaultTimezone) : null; < endDate = endDate ? endDate.getInTimezone(kDefaultTimezone) : null; < let repeatString = recurrenceRule2String(event.recurrenceInfo, startDate, < endDate, startDate.isDate); < if (repeatString) { < dateString = repeatString; < } < < let formattedExDates = []; < let modifiedOccurrences = []; < function dateComptor(a,b) a.startDate.compare(b.startDate); < < // Show removed instances < for each (let exc in event.recurrenceInfo.getRecurrenceItems({})) { < if (exc instanceof Components.interfaces.calIRecurrenceDate) { < if (exc.isNegative) { < // This is an EXDATE < formattedExDates.push(formatter.formatDateTime(exc.date)); < } else { < // This is an RDATE, close enough to a modified occurrence < let excItem = event.recurrenceInfo.getOccurrenceFor(exc.date); < cal.binaryInsert(modifiedOccurrences, excItem, dateComptor, true) < } < } < } < if (formattedExDates.length > 0) { < field("canceledOccurrences", formattedExDates.join("\n")); < } < < // Show modified occurrences < for each (let recurrenceId in event.recurrenceInfo.getExceptionIds({})) { < let exc = event.recurrenceInfo.getExceptionFor(recurrenceId); < let excLocation = exc.getProperty("LOCATION"); < < // Only show modified occurrence if start, duration or location < // has changed. < if (exc.startDate.compare(exc.recurrenceId) != 0 || < exc.duration.compare(event.duration) != 0 || < excLocation != event.getProperty("LOCATION")) { < cal.binaryInsert(modifiedOccurrences, exc, dateComptor, true) < } < } < < function stringifyOcc(occ) { < let formattedExc = formatter.formatItemInterval(occ); < let occLocation = occ.getProperty("LOCATION"); < if (occLocation != event.getProperty("LOCATION")) { < let location = cal.calGetString("lightning", "imipHtml.newLocation", [occLocation], "lightning"); < formattedExc += " (" + location + ")"; < } < return formattedExc; < } < < if (modifiedOccurrences.length > 0) { < field("modifiedOccurrences", modifiedOccurrences.map(stringifyOcc).join("\n")); < } < } < < field("when", dateString); < field("comment", event.getProperty("COMMENT"), true); < < // DESCRIPTION field < let eventDescription = (event.getProperty("DESCRIPTION") || "") < /* Remove the useless "Outlookism" squiggle. */ < .replace("*~*~*~*~*~*~*~*~*~*", ""); < field("description", eventDescription, true); < < // ATTENDEE and ORGANIZER fields < let attendees = event.getAttendees({}); < let attendeeTemplate = doc.getElementById("attendee-template"); < let attendeeTable = doc.getElementById("attendee-table"); < let organizerTable = doc.getElementById("organizer-table"); < doc.getElementById("imipHtml-attendees-row").hidden = (attendees.length < 1); < doc.getElementById("imipHtml-organizer-row").hidden = !event.organizer; < < function setupAttendee(attendee) { < let row = attendeeTemplate.cloneNode(true); < row.removeAttribute("id"); < row.removeAttribute("hidden"); < row.getElementsByClassName("status-icon")[0].setAttribute("status", attendee.participationStatus); < row.getElementsByClassName("attendee-name")[0].textContent = attendee.toString(); < return row; < } < < // Fill rows for attendees and organizer < field("attendees"); < for each (let attendee in attendees) { < attendeeTable.appendChild(setupAttendee(attendee)); < } < < field("organizer"); < if (event.organizer) { < organizerTable.appendChild(setupAttendee(event.organizer)); < } < < return doc; < }, < < < /* nsISimpleMimeConverter */ < 281c36 < for each (let item in parser.getItems({})) { --- > for (let item of parser.getItems({})) { 299a55 > let msgOverlay = ''; 315c71 < .createInstance(Components.interfaces.calIItipItem); --- > .createInstance(Components.interfaces.calIItipItem); 316a73,74 > let dom = ltn.invitation.createInvitationOverlay(event, itipItem); > msgOverlay = cal.xml.serializeDOM(dom); 319a78 > sinkProps.setPropertyAsAUTF8String("msgOverlay", msgOverlay); 330c89 < return cal.xml.serializeDOM(this.createHtml(event, itipItem)); --- > return msgOverlay; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning-l10n.js 1,20c1,20 < //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < < //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < < //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < pref("calendar.week.start", 0); < < //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < pref("general.useragent.locale", "bg"); < < //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr38-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" < pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); --- > //@line 36 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > > //@line 38 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > > //@line 41 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > pref("calendar.week.start", 0); > > //@line 44 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > pref("general.useragent.locale", "bg"); > > //@line 55 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_rpk_1-00000\l10n\bg\calendar\lightning-l10n.js" > pref("calendar.categories.names", "Anniversary,Birthday,Business,Calls,Clients,Competition,Customer,Favorites,Follow up,Gifts,Holidays,Ideas,Issues,Meeting,Miscellaneous,Personal,Projects,Public Holiday,Status,Suppliers,Travel,Vacation"); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js 1,145c1,156 < /* This Source Code Form is subject to the terms of the Mozilla Public < * License, v. 2.0. If a copy of the MPL was not distributed with this < * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ < < // This file contains all of the default preference values for Lightning < < // Turns on basic calendar logging. < pref("calendar.debug.log", false); < // Turns on verbose calendar logging. < pref("calendar.debug.log.verbose", false); < < // addon description < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", < "chrome://lightning/locale/lightning.properties"); < pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", < "chrome://lightning/locale/lightning.properties"); < < // general settings < pref("calendar.date.format", 0); < pref("calendar.event.defaultlength", 60); < pref("calendar.task.defaultstart", "none"); < pref("calendar.task.defaultstartoffset", 0); < pref("calendar.task.defaultstartoffsetunits", "minutes"); < pref("calendar.task.defaultdue", "none"); < pref("calendar.task.defaultdueoffset", 60); < pref("calendar.task.defaultdueoffsetunits", "minutes"); < < // default transparency (free-busy status) of standard and all-day events < pref("calendar.events.defaultTransparency.allday.transparent", true); < pref("calendar.events.defaultTransparency.standard.transparent", false); < < // number of days in "Soon" section < pref("calendar.agendaListbox.soondays", 5); < < // alarm settings < pref("calendar.alarms.show", true); < pref("calendar.alarms.showmissed", true); < pref("calendar.alarms.playsound", true); < pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); < pref("calendar.alarms.defaultsnoozelength", 5); < pref("calendar.alarms.indicator.show", true); < pref("calendar.alarms.indicator.totaltime", 3600); < < // default alarm settings for new event < pref("calendar.alarms.onforevents", 0); < pref("calendar.alarms.eventalarmlen", 15); < pref("calendar.alarms.eventalarmunit", "minutes"); < < // default alarm settings for new task < pref("calendar.alarms.onfortodos", 0); < pref("calendar.alarms.todoalarmlen", 15); < pref("calendar.alarms.todoalarmunit", "minutes"); < < // open invitations autorefresh settings < pref("calendar.invitations.autorefresh.enabled", true); < pref("calendar.invitations.autorefresh.timeout", 3); < < // iTIP compatibility send mode < // 0 -- Outlook 2003 and following with text/plain and application/ics (default) < // 1 -- all Outlook, but no text/plain nor application/ics < // We may extend the compat mode if necessary. < pref("calendar.itip.compatSendMode", 0); < < // whether "notify" is checked by default when creating new events/todos with attendees < pref("calendar.itip.notify", true); < < // whether the organizer propagates replies of attendees to all attendees < pref("calendar.itip.notify-replies", false); < < // whether email invitation updates are send out to all attendees if (only) adding a new attendee < pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); < < // whether CalDAV (experimental) scheduling is enabled or not. < pref("calendar.caldav.sched.enabled", false); < < // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to < // a locale specific file. < pref("calendar.week.start", 0); < pref("calendar.weeks.inview", 4); < pref("calendar.previousweeks.inview", 0); < < // Default days off < pref("calendar.week.d0sundaysoff", true); < pref("calendar.week.d1mondaysoff", false); < pref("calendar.week.d2tuesdaysoff", false); < pref("calendar.week.d3wednesdaysoff", false); < pref("calendar.week.d4thursdaysoff", false); < pref("calendar.week.d5fridaysoff", false); < pref("calendar.week.d6saturdaysoff", true); < < // start and end work hour for day and week views < pref("calendar.view.daystarthour", 8); < pref("calendar.view.dayendhour", 17); < < // number of visible hours for day and week views < pref("calendar.view.visiblehours", 9); < < // time indicator update interval in minutes (0 = no indicator) < pref("calendar.view.timeIndicatorInterval", 15); < < // If true, mouse scrolling via shift+wheel will be enabled < pref("calendar.view.mousescroll", true); < < // Do not set this! If it's not there, then we guess the system timezone < //pref("calendar.timezone.local", ""); < < // Recent timezone list < pref("calendar.timezone.recent", "[]"); < < // categories settings < // XXX One day we might want to move this to a locale specific file < // and include a list of locale specific default categories < pref("calendar.categories.names", ""); < < // Make sure mouse wheel shift and no key actions to scroll lines. < pref("mousewheel.withnokey.action", 0); < pref("mousewheel.withshiftkey.action", 0); < < // Disable use of worker threads. Restart needed. < pref("calendar.threading.disabled", false); < < // The maximum time in microseconds that a cal.forEach event can take (soft limit). < pref("calendar.threading.latency ", 250); < < // Enable support for multiple realms on one server with the payoff that you < // will get multiple password dialogs (one for each calendar) < pref("calendar.network.multirealm", false); < < // Set up user agent < pref("calendar.useragent.extra", "Lightning/4.0.8"); < < // Disable use of system colors in minimonth and calendar views < pref("calendar.view.useSystemColors", false); < < // Maximum number of iterations allowed when searching for the next matching < // occurrence of a repeating item in calFilter < pref("calendar.filter.maxiterations", 50); < < // Backend to use. false: libical, true: ical.js < pref("calendar.icaljs", false); < < // Calendar integration notification < pref("calendar.integration.notify", true); --- > /* This Source Code Form is subject to the terms of the Mozilla Public > * License, v. 2.0. If a copy of the MPL was not distributed with this > * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ > > // This file contains all of the default preference values for Lightning > > // Turns on basic calendar logging. > pref("calendar.debug.log", false); > // Turns on verbose calendar logging. > pref("calendar.debug.log.verbose", false); > > // addon description > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name", > "chrome://lightning/locale/lightning.properties"); > pref("extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator", > "chrome://lightning/locale/lightning.properties"); > > // general settings > pref("calendar.date.format", 0); > pref("calendar.event.defaultlength", 60); > pref("calendar.task.defaultstart", "none"); > pref("calendar.task.defaultstartoffset", 0); > pref("calendar.task.defaultstartoffsetunits", "minutes"); > pref("calendar.task.defaultdue", "none"); > pref("calendar.task.defaultdueoffset", 60); > pref("calendar.task.defaultdueoffsetunits", "minutes"); > > // default transparency (free-busy status) of standard and all-day events > pref("calendar.events.defaultTransparency.allday.transparent", true); > pref("calendar.events.defaultTransparency.standard.transparent", false); > > // number of days in "Soon" section > pref("calendar.agendaListbox.soondays", 5); > > // alarm settings > pref("calendar.alarms.show", true); > pref("calendar.alarms.showmissed", true); > pref("calendar.alarms.playsound", true); > pref("calendar.alarms.soundURL", "chrome://calendar/content/sound.wav"); > pref("calendar.alarms.defaultsnoozelength", 5); > pref("calendar.alarms.indicator.show", true); > pref("calendar.alarms.indicator.totaltime", 3600); > > // default alarm settings for new event > pref("calendar.alarms.onforevents", 0); > pref("calendar.alarms.eventalarmlen", 15); > pref("calendar.alarms.eventalarmunit", "minutes"); > > // default alarm settings for new task > pref("calendar.alarms.onfortodos", 0); > pref("calendar.alarms.todoalarmlen", 15); > pref("calendar.alarms.todoalarmunit", "minutes"); > > // open invitations autorefresh settings > pref("calendar.invitations.autorefresh.enabled", true); > pref("calendar.invitations.autorefresh.timeout", 3); > > // iTIP compatibility send mode > // 0 -- Outlook 2003 and following with text/plain and application/ics (default) > // 1 -- all Outlook, but no text/plain nor application/ics > // We may extend the compat mode if necessary. > pref("calendar.itip.compatSendMode", 0); > > // whether "notify" is checked by default when creating new events/todos with attendees > pref("calendar.itip.notify", true); > > // whether the organizer propagates replies of attendees to all attendees > pref("calendar.itip.notify-replies", false); > > // whether email invitation updates are send out to all attendees if (only) adding a new attendee > pref("calendar.itip.updateInvitationForNewAttendeesOnly", false); > > //whether changes in email invitation updates should be displayed > pref("calendar.itip.displayInvitationChanges", true); > > //whether for delegated invitations a delegatee's replies will be send also to delegator(s) > pref("calendar.itip.notifyDelegatorOnReply", true); > > // whether CalDAV (experimental) scheduling is enabled or not. > pref("calendar.caldav.sched.enabled", false); > > // 0=Sunday, 1=Monday, 2=Tuesday, etc. One day we might want to move this to > // a locale specific file. > pref("calendar.week.start", 0); > pref("calendar.weeks.inview", 4); > pref("calendar.previousweeks.inview", 0); > > // Show week number in minimonth and multiweek/month views > pref("calendar.view-minimonth.showWeekNumber", true); > > // Default days off > pref("calendar.week.d0sundaysoff", true); > pref("calendar.week.d1mondaysoff", false); > pref("calendar.week.d2tuesdaysoff", false); > pref("calendar.week.d3wednesdaysoff", false); > pref("calendar.week.d4thursdaysoff", false); > pref("calendar.week.d5fridaysoff", false); > pref("calendar.week.d6saturdaysoff", true); > > // start and end work hour for day and week views > pref("calendar.view.daystarthour", 8); > pref("calendar.view.dayendhour", 17); > > // number of visible hours for day and week views > pref("calendar.view.visiblehours", 9); > > // time indicator update interval in minutes (0 = no indicator) > pref("calendar.view.timeIndicatorInterval", 15); > > // If true, mouse scrolling via shift+wheel will be enabled > pref("calendar.view.mousescroll", true); > > // Do not set this! If it's not there, then we guess the system timezone > //pref("calendar.timezone.local", ""); > > // Recent timezone list > pref("calendar.timezone.recent", "[]"); > > // categories settings > // XXX One day we might want to move this to a locale specific file > // and include a list of locale specific default categories > pref("calendar.categories.names", ""); > > // Make sure mouse wheel shift and no key actions to scroll lines. > pref("mousewheel.withnokey.action", 0); > pref("mousewheel.withshiftkey.action", 0); > > // Disable use of worker threads. Restart needed. > pref("calendar.threading.disabled", false); > > // The maximum time in microseconds that a cal.forEach event can take (soft limit). > pref("calendar.threading.latency ", 250); > > // Enable support for multiple realms on one server with the payoff that you > // will get multiple password dialogs (one for each calendar) > pref("calendar.network.multirealm", false); > > // Set up user agent > pref("calendar.useragent.extra", "Lightning/4.7.1"); > > // Disable use of system colors in minimonth and calendar views > pref("calendar.view.useSystemColors", false); > > // Maximum number of iterations allowed when searching for the next matching > // occurrence of a repeating item in calFilter > pref("calendar.filter.maxiterations", 50); > > // Backend to use. false: libical, true: ical.js > //@line 154 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > pref("calendar.icaljs", false); > //@line 156 "c:\builds\moz2_slave\tb-rel-c-esr45-w32_bld-0000000\build\calendar\lightning\content\lightning.js" > > // Calendar integration notification > pref("calendar.integration.notify", true); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf 17,18c17,18 < 38.8.0 < 38.* --- > 45.1.0 > 45.* 26,27c26,27 < 2.35 < 2.35.* --- > 2.42 > 2.42.* 33c33 < 4.0.8 --- > 4.7.1 diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm 8c8 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 25c25 < if (["weeks", "days", "hours", "minutes", "seconds"].indexOf(units) < 0) { --- > if (!["weeks", "days", "hours", "minutes", "seconds"].includes(units)) { 45c45 < alarm.action = (actionValues.indexOf("DISPLAY") < 0 ? actionValues[0] : "DISPLAY"); --- > alarm.action = (actionValues.includes("DISPLAY") ? "DISPLAY" : actionValues[0]); 100a101 > let offset = aAlarm.offset; 107a109 > 109c111 < return returnDate.subtractDate(aAlarm.alarmDate); --- > offset = aAlarm.alarmDate.subtractDate(returnDate); 111,114d112 < < return offset; < } else { < return aAlarm.offset; 115a114 > return offset; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm 7a8 > Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 13,15c14,16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this < const cIOL = Components.interfaces.calIOperationListener; < const cIC = Components.interfaces.calICalendar; --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this > var cIOL = Components.interfaces.calIOperationListener; > var cIC = Components.interfaces.calICalendar; 17c18 < const promisifyProxyHandler = { --- > var promisifyProxyHandler = { 94a96 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm 13c13 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 338c338 < let gAuthCache = { --- > var gAuthCache = { diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm 5c5 < const EXPORTED_SYMBOLS = ["Extractor"]; --- > this.EXPORTED_SYMBOLS = ["Extractor"]; 87c87 < let path = this.bundleUrl.replace("LOCALE", locale, "g"); --- > let path = this.bundleUrl.replace(/LOCALE/g, locale); 128c128 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 216c216 < path = this.bundleUrl.replace("LOCALE", "ko", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ko"); 220c220 < path = this.bundleUrl.replace("LOCALE", "zh-TW", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "zh-TW"); 223c223 < path = this.bundleUrl.replace("LOCALE", "ja", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ja"); 227c227 < path = this.bundleUrl.replace("LOCALE", "ru", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "ru"); 231c231 < path = this.bundleUrl.replace("LOCALE", mostLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, mostLocale); 235c235 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 240c240 < path = this.bundleUrl.replace("LOCALE", this.fallbackLocale, "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, this.fallbackLocale); 243c243 < path = this.bundleUrl.replace("LOCALE", "en-US", "g"); --- > path = this.bundleUrl.replace(/LOCALE/g, "en-US"); 299,300c299,300 < this.hourlyNumbers = this.hourlyNumbers.replace("|", this.marker, "g"); < this.dailyNumbers = this.dailyNumbers.replace("|", this.marker, "g"); --- > this.hourlyNumbers = this.hourlyNumbers.replace(/\|/g, this.marker); > this.dailyNumbers = this.dailyNumbers.replace(/\|/g, this.marker); 305c305 < this.allMonths = this.months.join(this.marker).replace("|", this.marker, "g"); --- > this.allMonths = this.months.join(this.marker).replace(/\|/g, this.marker); 394c394 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 406c406 < if (this.months[i].split("|").indexOf(month.toLowerCase()) != -1) { --- > if (this.months[i].split("|").includes(month.toLowerCase())) { 439c439 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 450,451c450,451 < let ms = this.months[i].unescape().split("|"); < if (ms.indexOf(month.toLowerCase()) != -1) { --- > let ms = this.unescape(this.months[i]).split("|"); > if (ms.includes(month.toLowerCase())) { 520c520 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 580c580 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 610c610 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 683c683 < let exp = alts[alt].pattern.replace(this.marker, "|", "g"); --- > let exp = alts[alt].pattern.split(this.marker).join("|"); 730,731c730,731 < if (!selection.contains(this.collected[j].str) && < !title.contains(this.collected[j].str) && --- > if (!selection.includes(this.collected[j].str) && > !title.includes(this.collected[j].str) && 786c786 < let startTimes = this.collected.filter(function(val) val.relation == "start"); --- > let startTimes = this.collected.filter(val => val.relation == "start"); 796c796 < let wDayInit = startTimes.filter(function(val) val.day != null && val.start === undefined); --- > let wDayInit = startTimes.filter(val => val.day != null && val.start === undefined); 808,809c808,809 < let wDay = startTimes.filter(function(val) val.day != null && val.start !== undefined); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); --- > let wDay = startTimes.filter(val => val.day != null && val.start !== undefined); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); 811,813c811,813 < let wMinute = startTimes.filter(function(val) val.minute != null && val.start !== undefined); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); < let wMinuteInit = startTimes.filter(function(val) val.minute != null && val.start === undefined); --- > let wMinute = startTimes.filter(val => val.minute != null && val.start !== undefined); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); > let wMinuteInit = startTimes.filter(val => val.minute != null && val.start === undefined); 863,864c863,864 < let endTimes = this.collected.filter(function(val) val.relation == "end"); < let durations = this.collected.filter(function(val) val.relation == "duration"); --- > let endTimes = this.collected.filter(val => val.relation == "end"); > let durations = this.collected.filter(val => val.relation == "duration"); 872,875c872,875 < let wDay = endTimes.filter(function(val) val.day != null); < let wDayNA = wDay.filter(function(val) val.ambiguous === undefined); < let wMinute = endTimes.filter(function(val) val.minute != null); < let wMinuteNA = wMinute.filter(function(val) val.ambiguous === undefined); --- > let wDay = endTimes.filter(val => val.day != null); > let wDayNA = wDay.filter(val => val.ambiguous === undefined); > let wMinute = endTimes.filter(val => val.minute != null); > let wMinuteNA = wMinute.filter(val => val.ambiguous === undefined); 1068c1068 < pattern = pattern.replace("%" + cnt + "$S", replaceables[cnt - 1], "g"); --- > pattern = pattern.split("#" + cnt).join(replaceables[cnt - 1]); 1091c1091 < let re = /\%(\d)\$S/g; --- > let re = /#(\d)/g; 1094c1094 < while (match = re.exec(s)) { --- > while ((match = re.exec(s))) { 1103c1103 < ", missing parameter %" + i + "$S"); --- > ", missing parameter #" + i); 1113c1113 < return value.sanitize().replace(/\s+/g, "\\s*"); --- > return this.sanitize(value).replace(/\s+/g, "\\s*"); 1255c1255 < if (ns.indexOf(number.toLowerCase()) != -1) { --- > if (ns.includes(number.toLowerCase())) { 1275,1276c1275 < } < }; --- > }, 1278,1281c1277,1279 < String.prototype.sanitize = function() { < return this.replace(/[-[\]{}()*+?.,\\^#]/g, "\\$&") < .replace(/([^\d])([$])/g, "$1\\$2"); < } --- > sanitize: function(str) { > return str.replace(/[-[\]{}()*+?.,\\^$]/g, "\\$&"); > }, 1283,1286c1281,1284 < String.prototype.unescape = function() { < let res = this.replace(/\\([\.])/g, "$1"); < return res; < } --- > unescape: function(str) { > return str.replace(/\\([\.])/g, "$1"); > } > }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > var EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItemUtils.jsm 5d4 < var EXPORTED_SYMBOLS = ["itemDiff"]; 7a7,8 > this.EXPORTED_SYMBOLS = ["itemDiff"]; > diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calIteratorUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 123,127c123,129 < function calVCALENDARIterator(aWantKeys) { < cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); < for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { < for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { < yield itemComp; --- > return { > __iterator__: function calVCALENDARIterator(aWantKeys) { > cal.ASSERT(aWantKeys, "Please use for() on the calendar component iterator"); > for (let calComp in cal.ical.subcomponentIterator(aComponent, "VCALENDAR")) { > for (let itemComp in cal.ical.subcomponentIterator(calComp, compType)) { > yield itemComp; > } 131d132 < return { __iterator__: calVCALENDARIterator }; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calItipUtils.jsm 15c15 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 148c148 < function isWritableCalendar(aCalendar) { --- > let isWritableCalendar = function (aCalendar) { 152c152 < } --- > }; 177a178 > let text = ""; 181,183c182,184 < case cIOL.ADD: return _gs("imipAddedItemToCal"); < case cIOL.MODIFY: return _gs("imipUpdatedItem"); < case cIOL.DELETE: return _gs("imipCanceledItem"); --- > case cIOL.ADD: text = _gs("imipAddedItemToCal"); break; > case cIOL.MODIFY: text = _gs("imipUpdatedItem"); break; > case cIOL.DELETE: text = _gs("imipCanceledItem"); break; 186c187 < return _gs("imipBarProcessingFailed", [aStatus.toString(16)]); --- > text = _gs("imipBarProcessingFailed", [aStatus.toString(16)]); 187a189 > return text; 619c621,648 < sendMessage(aItem, "REPLY", [aItem.organizer], autoResponse); --- > // if the event was delegated to the replying attendee, we may also notify also > // the delegator due to chapter 3.2.2.3. of RfC 5546 > let replyTo = new Array; > let delegatorIds = invitedAttendee.getProperty("DELEGATED-FROM"); > if (delegatorIds && > Preferences.get("calendar.itip.notifyDelegatorOnReply", false)) { > let getDelegator = function (aDelegatorId) { > let delegator = aOriginalItem.getAttendeeById(aDelegatorId); > if (delegator) { > replyTo.push(delegator); > } > }; > // Our backends currently do not support multi-value params. libical just > // swallows any value but the first, while ical.js fails to parse the item > // at all. Single values are handled properly by both backends though. > // Once bug 1206502 lands, ical.js will handle multi-value params, but > // we end up in different return types of getProperty. A native exposure of > // DELEGATED-FROM and DELEGATED-TO in calIAttendee may change this. > if (Array.isArray(delegatorIds)) { > for (let delegatorId of delegatorIds) { > getDelegator(delegatorId); > } > } else if (typeof delegatorIds == "string") { > getDelegator(delegatorIds); > } > } > replyTo.push(aItem.organizer); > sendMessage(aItem, "REPLY", replyTo, autoResponse); 622d650 < 760c788 < function hashMajorProps(aItem) { --- > let hashMajorProps = function (aItem) { 783c811 < } --- > }; 811c839 < (aItems || []).forEach(function(item) serializedItems += cal.getSerializedItem(item)); --- > (aItems || []).forEach(item => serializedItems += cal.getSerializedItem(item)); 991c1019 < function _sendItem(aSendToList, aSendItem) { --- > let _sendItem = function (aSendToList, aSendItem) { 1006c1034 < } --- > }; 1043a1072 > QueryInterface: XPCOMUtils.generateQI([Components.interfaces.calIOperationListener]), diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calPrintUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 86c86 < addItemToDaybox: function addItemToDaybox(document, item, dayContainer) { --- > addItemToDaybox: function addItemToDaybox(document, item, boxDate, dayContainer) { 93c93 < let itemInterval = cal.print.getItemIntervalString(item); --- > let itemInterval = cal.print.getItemIntervalString(item, boxDate); 152c152 < cal.binaryInsertNode(taskContainer, taskNode, item, function(a, b) collator.compareString(0, a, b), function(node) node.item.title); --- > cal.binaryInsertNode(taskContainer, taskNode, item, (a, b) => collator.compareString(0, a, b), node => node.item.title); 161c161 < getItemIntervalString: function getItemIntervalString(aItem) { --- > getItemIntervalString: function getItemIntervalString(aItem, aBoxDate) { 163c163 < let startDate = aItem[cal.calGetStartDateProp(aItem)] --- > let startDate = aItem[cal.calGetStartDateProp(aItem)]; 169,170c169,195 < // Bug 359007: will result in wrong time label for events that span two or more days < return cal.getDateFormatter().formatItemTimeInterval(aItem); --- > // check for tasks without start and/or due date > if (!startDate || !endDate) { > return cal.getDateFormatter().formatItemTimeInterval(aItem); > } > > let dateFormatter = cal.getDateFormatter(); > let defaultTimezone = cal.calendarDefaultTimezone(); > let start = startDate.getInTimezone(defaultTimezone).clone(); > let end = endDate.getInTimezone(defaultTimezone).clone(); > start.isDate = true; > end.isDate = true; > if (start.compare(end) == 0) { > // Events that start and end in the same day. > return dateFormatter.formatTimeInterval(startDate, endDate); > } else { > // Events that span two or more days. > let compareStart = aBoxDate.compare(start); > let compareEnd = aBoxDate.compare(end); > if (compareStart == 0) > return "\u21e4 " + dateFormatter.formatTime(startDate); // unicode '⇤' > else if (compareStart > 0 && compareEnd < 0) > return "\u21ff"; // unicode '↔' > else if (compareEnd == 0) > return "\u21e5 " + dateFormatter.formatTime(endDate); // unicode '⇥' > else > return ""; > } diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calProviderUtils.jsm 16c16 < EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this --- > this.EXPORTED_SYMBOLS = ["cal"]; // even though it's defined in calUtils.jsm, import needs this 33c33,38 < let channel = aExisting || Services.io.newChannelFromURI(aUri); --- > let channel = aExisting || Services.io.newChannelFromURI2(aUri, > null, > Services.scriptSecurityManager.getSystemPrincipal(), > null, > Components.interfaces.nsILoadInfo.SEC_NORMAL, > Components.interfaces.nsIContentPolicy.TYPE_OTHER); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calRecurrenceUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; --- > this.EXPORTED_SYMBOLS = ["recurrenceRule2String", "splitRecurrenceRules", "checkRecurrenceRule"]; 20c20,44 < function getRString(name, args) cal.calGetString("calendar-event-dialog", name, args); --- > function getRString(name, args) { > return cal.calGetString("calendar-event-dialog", name, args); > } > function day_of_week(day) { > return Math.abs(day) % 8; > } > function day_position(day) { > return (Math.abs(day) - day_of_week(day)) / 8 * (day < 0 ? -1 : 1); > } > function nounClass(aDayString, aRuleString) { > // Select noun class (grammatical gender) for rule string > let nounClass = getRString(aDayString + "Nounclass"); > return aRuleString + nounClass.substr(0, 1).toUpperCase() + > nounClass.substr(1); > } > function pluralWeekday(aDayString) { > let plural = getRString("pluralForWeekdays") == "true"; > return (plural ? aDayString + "Plural" : aDayString); > } > function everyWeekDay(aByDay) { > // Checks if aByDay contains only values from 1 to 7 with any order. > let mask = aByDay.reduce((v, c) => v | (1 << c), 1); > return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; > } > 40,62d63 < function day_of_week(day) { < return Math.abs(day) % 8; < } < function day_position(day) { < let dow = day_of_week(day); < return (Math.abs(day) - dow) / 8 * (day < 0 ? -1 : 1); < } < function nounClass(aDayString, aRuleString) { < // Select noun class (grammatical gender) for rule string < let nounClass = getRString(aDayString + "Nounclass"); < return aRuleString + nounClass.substr(0, 1).toUpperCase() + < nounClass.substr(1); < } < function pluralWeekday(aDayString) { < let plural = getRString("pluralForWeekdays") == "true"; < return (plural ? aDayString + "Plural" : aDayString); < } < function everyWeekDay(aByDay) { < // Checks if aByDay contains only values from 1 to 7 with any order. < let mask = aByDay.reduce(function(v, c) v | (1 << c), 1); < return aByDay.length == 7 && mask == Math.pow(2, 8) - 1; < } < diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm 257c257 < let func = function(db /* , ... */) { --- > return function(db, ...args) { 259,260d258 < let args = Array.slice(arguments); < args.shift(); 262c260 < return db[funcName].apply(db, args); --- > return db[funcName](...args); 270,272d267 < < func.name = "dbDelegate_" + funcName; < return func; 284c279 < let func = function(db) { --- > return function(db) { 287,289d281 < < func.name = "dbDelegate_get_" + getterAttr; < return func; 743a736,740 > function updateSql(tbl, field) { > executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + > " WHERE " + field + " IS NOT NULL"); > } > 791,795d787 < function updateSql(tbl, field) { < executeSimpleSQL(db, "UPDATE " + tbl + " SET " + field + "_tz='UTC'" + < " WHERE " + field + " IS NOT NULL"); < } < 1537a1530 > function parseInt10(x) { return parseInt(x, 10); } 1588d1580 < function parseInt10(x) parseInt(x, 10); diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm 18,19c18,19 < EXPORTED_SYMBOLS = ["cal"]; < let cal = { --- > this.EXPORTED_SYMBOLS = ["cal"]; > var cal = { 257,264c257,298 < // Resolve the list considering also configured display names < let result = compFields.splitRecipients(aRecipients, false, {}); < // Malformed e-mail addresses with display name in list will result in "Display name <>". < // So, we need an additional check on the e-mail address itself and sort out malformed < // entries from the previous list (both objects have always the same length) < if (result.length > 0) { < let resultAddress = compFields.splitRecipients(aRecipients, true, {}); < result = result.filter((v, idx) => !!resultAddress[idx]); --- > // Resolve the list considering also configured common names > let members = compFields.splitRecipients(aRecipients, false, {}); > let list = []; > let prefix = ""; > for (let member of members) { > if (prefix != "") { > // the previous member had no email address - this happens if a recipients CN > // contains a ',' or ';' (splitRecipients(..) behaves wrongly here and produces an > // additional member with only the first CN part of that recipient and no email > // address while the next has the second part of the CN and the according email > // address) - we still need to identify the original delimiter to append it to the > // prefix > let memberCnPart = member.match(/(.*) <.*>/); > if (memberCnPart) { > let pattern = new RegExp(prefix + "([;,] *)" + memberCnPart[1]); > let delimiter = aRecipients.match(pattern); > if (delimiter) { > prefix = prefix + delimiter[1]; > } > } > } > let parts = (prefix + member).match(/(.*)( <.*>)/); > if (parts) { > if (parts[2] == " <>") { > // CN but no email address - we keep the CN part to prefix the next member's CN > prefix = parts[1]; > } else { > // CN with email address > let cn = parts[1].trim(); > // in case of any special characters in the CN string, we make sure to enclose > // it with dquotes - simple spaces don't require dquotes > if (cn.match(/[\-\[\]{}()*+?.,;\\\^$|#\f\n\r\t\v]/)) { > cn = '"' + cn.replace(/\\"|"/, "").trim() + '"'; > } > list.push(cn + parts[2]); > prefix = ""; > } > } else if (member.length) { > // email address only > list.push(member); > prefix = ""; > } 266c300 < return result.join(","); --- > return list.join(", "); 273c307 < * @param aItem either calIAttendee or calIItemBase --- > * @param aItem either calIAttendee or calIItemBase 310a345,382 > * Resolves delegated-to/delegated-from calusers for a given attendee to also include the > * respective CNs if available in a given set of attendees > * > * @param aAttendee {calIAttendee} The attendee to resolve the delegation information for > * @param aAttendees {Array} An array of calIAttendee objects to look up > * @return {Object} An object with string attributes for delegators and delegatees > */ > resolveDelegation: function (aAttendee, aAttendees) { > let attendees = aAttendees || [aAttendee]; > > // this will be replaced by a direct property getter in calIAttendee > let delegators = []; > let delegatees = []; > let delegatorProp = aAttendee.getProperty("DELEGATED-FROM"); > if (delegatorProp) { > delegators = typeof delegatorProp == "string" ? [delegatorProp] : delegatorProp; > } > let delegateeProp = aAttendee.getProperty("DELEGATED-TO"); > if (delegateeProp) { > delegatees = typeof delegateeProp == "string" ? [delegateeProp] : delegateeProp; > } > > for (let att of attendees) { > let resolveDelegation = function (e, i, a) { > if (e == att.id) { > a[i] = att.toString(); > } > }; > delegators.forEach(resolveDelegation); > delegatees.forEach(resolveDelegation); > } > return { > delegatees: delegatees.join(", "), > delegators: delegators.join(", ") > }; > }, > > /** 325a398,444 > * Returns a wellformed email string like 'attendee@example.net', > * 'Common Name ' or '"Name, Common" ' > * > * @param {calIAttendee} aAttendee - the attendee to check > * @param {boolean} aIncludeCn - whether or not to return also the CN if available > * @return {string} valid email string or an empty string in case of error > */ > getAttendeeEmail: function (aAttendee, aIncludeCn) { > // If the recipient id is of type urn, we need to figure out the email address, otherwise > // we fall back to the attendee id > let email = aAttendee.id.match(/^urn:/i) ? aAttendee.getProperty("EMAIL") || "" : aAttendee.id; > // Strip leading "mailto:" if it exists. > email = email.replace(/^mailto:/i, ""); > // We add the CN if requested and available > let cn = aAttendee.commonName; > if (aIncludeCn && email.length > 0 && cn && cn.length > 0) { > if (cn.match(/[,;]/)) { > cn = '"' + cn + '"'; > } > cn = cn + " <" + email + ">"; > if (cal.validateRecipientList(cn) == cn) { > email = cn; > } > } > return email; > }, > > /** > * Provides a string to use in email "to" header for given attendees > * > * @param {array} aAttendees - array of calIAttendee's to check > * @return {string} Valid string to use in a 'to' header of an email > */ > getRecipientList: function (aAttendees) { > let cbEmail = function (aVal, aInd, aArr) { > let email = cal.getAttendeeEmail(aVal, true); > if (!email.length) { > cal.LOG("Dropping invalid recipient for email transport: " + aVal.toString()); > } > return email; > } > return aAttendees.map(cbEmail) > .filter(aVal => aVal.length > 0) > .join(', '); > }, > > /** 388c507 < function compareNumbers(sortEntryA, sortEntryB) { --- > return function compareNumbers(sortEntryA, sortEntryB) { 392,393c511 < } < return compareNumbers; --- > }; 395c513 < function compareTimes(sortEntryA, sortEntryB) { --- > return function compareTimes(sortEntryA, sortEntryB) { 399,400c517 < } < return compareTimes; --- > }; 402c519 < function compareTimesFilled(sortEntryA, sortEntryB) { --- > return function compareTimesFilled(sortEntryA, sortEntryB) { 410,411c527 < } < return compareTimesFilled --- > }; 413,414c529 < let collator = cal.createLocaleCollator(); < function compareStrings(sortEntryA, sortEntryB) { --- > return function compareStrings(sortEntryA, sortEntryB) { 422a538 > let collator = cal.createLocaleCollator(); 425,427c541 < } < return compareStrings; < --- > }; 429c543 < function compareOther(sortEntryA, sortEntryB) { --- > return function compareOther(sortEntryA, sortEntryB) { 431,432c545 < } < return compareOther; --- > }; 501a615,616 > default: > return "unknown"; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm 7c7 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm 9c9 < EXPORTED_SYMBOLS = ["cal"]; --- > this.EXPORTED_SYMBOLS = ["cal"]; diff -r source/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js 22c22 < return function(val) unwrapSetter.call(this, type, val, innerFunc); --- > return function(val) { return unwrapSetter.call(this, type, val, innerFunc); }; 4951,4952c4951,4956 < // found date or at the last BYMONTHDAY. < while (byMonthDay[dateIdx] <= lastDay && dateIdx < dateLen - 1) { --- > // found date or at the last BYMONTHDAY, unless we are > // initializing the iterator because in this case we have > // to consider the last found date too. > while (byMonthDay[dateIdx] <= lastDay && > !(isInit && byMonthDay[dateIdx] == lastDay) && > dateIdx < dateLen - 1) { 4973c4977,4982 < while (!dataIsValid) { --- > // Use a counter to avoid an infinite loop with malformed rules. > // Stop checking after 4 years so we consider also a leap year. > var monthsCounter = 48; > > while (!dataIsValid && monthsCounter) { > monthsCounter--; 5030a5040,5045 > if (monthsCounter <= 0) { > // Checked 4 years without finding a Byday that matches > // a Bymonthday. Maybe the rule is not correct. > throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); > } > Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnInvitationUtils.jsm Only in target/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules: ltnUtils.jsm Only in source/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd} Only in target/bin/extensions: {972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi Files source/bin/freebl3.chk and target/bin/freebl3.chk differ Files source/bin/freebl3.dll and target/bin/freebl3.dll differ Only in source/bin: icudt52.dll Only in target/bin: icudt56.dll Only in source/bin: icuin52.dll Only in target/bin: icuin56.dll Only in source/bin: icuuc52.dll Only in target/bin: icuuc56.dll Only in target/bin: ldap60.dll Only in target/bin: ldif60.dll Only in target/bin: lgpllibs.dll Files source/bin/libEGL.dll and target/bin/libEGL.dll differ Files source/bin/libGLESv2.dll and target/bin/libGLESv2.dll differ Files source/bin/maintenanceservice.exe and target/bin/maintenanceservice.exe differ Files source/bin/maintenanceservice_installer.exe and target/bin/maintenanceservice_installer.exe differ Files source/bin/mozMapi32.dll and target/bin/mozMapi32.dll differ Only in source/bin: mozalloc.dll Files source/bin/mozglue.dll and target/bin/mozglue.dll differ Only in source/bin: nsldap32v60.dll Only in source/bin: nsldappr32v60.dll Only in source/bin: nsldif32v60.dll Files source/bin/nss3.dll and target/bin/nss3.dll differ Files source/bin/nssckbi.dll and target/bin/nssckbi.dll differ Files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Files source/bin/nssdbm3.dll and target/bin/nssdbm3.dll differ Files source/bin/omni.ja and target/bin/omni.ja differ diff -r source/bin/platform.ini target/bin/platform.ini 2,5c2,5 < BuildID=20160503054940 < Milestone=38.8.0 < SourceStamp=e612dadc1a46 < SourceRepository=http://hg.mozilla.org/releases/mozilla-esr38 --- > BuildID=20160509110721 > Milestone=45.1.0 > SourceStamp=1f7c05ab920b7a5b400d2e91def69f292fa9a071 > SourceRepository=https://hg.mozilla.org/releases/mozilla-esr45 Files source/bin/plugin-container.exe and target/bin/plugin-container.exe differ diff -r source/bin/precomplete target/bin/precomplete 9,15d8 < remove "searchplugins/yahoo.xml" < remove "searchplugins/wikipedia.xml" < remove "searchplugins/twitter.xml" < remove "searchplugins/eBay.xml" < remove "searchplugins/bing.xml" < remove "searchplugins/aol-web-search.xml" < remove "searchplugins/amazondotcom.xml" 17a11 > remove "prldap60.dll" 26,28d19 < remove "nsldif32v60.dll" < remove "nsldappr32v60.dll" < remove "nsldap32v60.dll" 32d22 < remove "mozalloc.dll" 37a28,30 > remove "lgpllibs.dll" > remove "ldif60.dll" > remove "ldap60.dll" 44,46c37,39 < remove "icuuc52.dll" < remove "icuin52.dll" < remove "icudt52.dll" --- > remove "icuuc56.dll" > remove "icuin56.dll" > remove "icudt56.dll" 49,51c42 < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png" < remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png" --- > remove "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi" 71d61 < rmdir "searchplugins/" 73d62 < rmdir "extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/" Only in target/bin: prldap60.dll diff -r source/bin/removed-files target/bin/removed-files 269a270,272 > nsldap32v60.dll > nsldappr32v60.dll > nsldif32v60.dll 329a333,337 > #ifdef XP_UNIX > #ifndef XP_MACOSX > components/nsFilePicker.js > #endif > #endif 390a399 > #ifdef XP_WIN 391a401 > #endif 413a424,426 > #ifdef XP_MACOSX > modules/SpotlightIntegration.js > #endif 414a428 > #ifdef XP_WIN 415a430 > #endif 488a504 > #ifdef XP_WIN 489a506 > #endif Files source/bin/sandboxbroker.dll and target/bin/sandboxbroker.dll differ Only in source/bin: searchplugins Files source/bin/softokn3.chk and target/bin/softokn3.chk differ Files source/bin/softokn3.dll and target/bin/softokn3.dll differ Files source/bin/thunderbird.exe and target/bin/thunderbird.exe differ Files source/bin/uninstall/helper.exe and target/bin/uninstall/helper.exe differ Files source/bin/updater.exe and target/bin/updater.exe differ Files source/bin/voucher.bin and target/bin/voucher.bin differ Files source/bin/xul.dll and target/bin/xul.dll differ Contents of source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} dir only in source or target 1979732 1 -rw-r--r-- 1 cltbld Administrators 1221 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png 1979733 2 -rw-r--r-- 1 cltbld Administrators 2284 Apr 19:38 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png 1848397 1 -rw-r--r-- 1 cltbld Administrators 1614 May 17:51 source/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf Contents of source/bin/searchplugins dir only in source or target 1979770 1 -rw-r--r-- 1 cltbld Administrators 1531 Apr 03:28 source/bin/searchplugins/amazondotcom.xml 2045307 1 -rw-r--r-- 1 cltbld Administrators 1670 Apr 03:28 source/bin/searchplugins/aol-web-search.xml 2045308 2 -rw-r--r-- 1 cltbld Administrators 2453 Apr 03:28 source/bin/searchplugins/bing.xml 1979773 2 -rw-r--r-- 1 cltbld Administrators 2569 Apr 03:28 source/bin/searchplugins/eBay.xml 2045310 1 -rw-r--r-- 1 cltbld Administrators 899 Apr 03:28 source/bin/searchplugins/twitter.xml 2045311 1 -rw-r--r-- 1 cltbld Administrators 1338 Apr 03:28 source/bin/searchplugins/wikipedia.xml 2045312 1 -rw-r--r-- 1 cltbld Administrators 1363 Apr 03:28 source/bin/searchplugins/yahoo.xml FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 SUCCESS: partial updates are smaller than complete updates, all is well in the universe Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:51:58-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pa-IN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:00 GMT Keep-Alive: timeout=5, max=998 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.61M=0s 2016-05-09 17:51:59 (3.61 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pa-IN/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pa-IN/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:51:59-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pa-IN/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41662638 Connection: keep-alive Date: Tue, 10 May 2016 00:26:50 GMT x-amz-replication-status: COMPLETED x-amz-version-id: FU1k3_Z1ogsWMqVi4FvSOArqVClVqqDC Last-Modified: Tue, 03 May 2016 14:47:45 GMT ETag: "260fcb6d21dc1f626aa0a335adb3a642" Accept-Ranges: bytes Server: AmazonS3 Age: 1512 X-Cache: Hit from cloudfront Via: 1.1 0ffb9964022445351e635c66ad0176ff.cloudfront.net (CloudFront) X-Amz-Cf-Id: cbGnXfHakYZv3gx5R3fwbGkON2GPMeWmLCi_NuzGyDK74pKbkiInYQ== Length: 41662638 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.76M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 15.8M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 19.6M 3s 9216K ........ ........ ........ ........ ........ ........ 30% 27.2M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 30.0M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 36.2M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 41.2M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 47.0M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 40.8M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 33.6M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 39.5M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 44.1M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 48.1M 0s 39936K ........ ... 100% 52.4M=1.8s 2016-05-09 17:52:01 (22.2 MB/s) - 'update/complete.mar' saved [41662638/41662638] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:02-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:03 GMT Keep-Alive: timeout=5, max=995 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.24M=0s 2016-05-09 17:52:02 (3.24 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pl/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pl/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:02-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pl/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42737394 Connection: keep-alive Date: Tue, 10 May 2016 00:28:01 GMT x-amz-replication-status: COMPLETED x-amz-version-id: kKdDF3sw2.vyPIHLxDOUcq8oLFUJ5fO_ Last-Modified: Tue, 03 May 2016 15:02:33 GMT ETag: "3806e33938f9f80dec34184c452c2d48" Accept-Ranges: bytes Server: AmazonS3 Age: 1444 X-Cache: Hit from cloudfront Via: 1.1 ff09df097f823b2834408d17e9779d62.cloudfront.net (CloudFront) X-Amz-Cf-Id: y_5vIeZFSiKPEF0XvJbr46_rToW1oWOmF9vqL5459gCrApOTdjKRYA== Length: 42737394 (41M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.31M 9s 3072K ........ ........ ........ ........ ........ ........ 14% 12.7M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 17.8M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 22.6M 3s 12288K ........ ........ ........ ........ ........ ........ 36% 28.0M 2s 15360K ........ ........ ........ ........ ........ ........ 44% 33.7M 2s 18432K ........ ........ ........ ........ ........ ........ 51% 37.9M 1s 21504K ........ ........ ........ ........ ........ ........ 58% 41.6M 1s 24576K ........ ........ ........ ........ ........ ........ 66% 47.9M 1s 27648K ........ ........ ........ ........ ........ ........ 73% 47.8M 1s 30720K ........ ........ ........ ........ ........ ........ 80% 53.0M 0s 33792K ........ ........ ........ ........ ........ ........ 88% 50.9M 0s 36864K ........ ........ ........ ........ ........ ........ 95% 51.9M 0s 39936K ........ ........ ........ .... 100% 56.5M=1.9s 2016-05-09 17:52:04 (21.3 MB/s) - 'update/complete.mar' saved [42737394/42737394] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:05-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-BR/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:07 GMT Keep-Alive: timeout=5, max=870 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.21M=0s 2016-05-09 17:52:05 (3.21 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-BR/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-BR/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:11-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-BR/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41775330 Connection: keep-alive Date: Tue, 10 May 2016 00:29:14 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 2fj0emApXevE4lQod180EaIfVncpflmb Last-Modified: Tue, 03 May 2016 15:17:49 GMT ETag: "e83f94134dc699d74c3c27beb529d72e" Accept-Ranges: bytes Server: AmazonS3 Age: 1380 X-Cache: Hit from cloudfront Via: 1.1 ff09df097f823b2834408d17e9779d62.cloudfront.net (CloudFront) X-Amz-Cf-Id: PxZrTmVm_WKYUi0JfiqdGFlDdHFEV3Nd2QOLBGoAQRaosYd1QtRKjA== Length: 41775330 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.42M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 12.8M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 18.8M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 23.3M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 31.4M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 31.8M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 38.8M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 44.7M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 48.7M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 50.8M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 48.4M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 48.5M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 51.0M 0s 39936K ........ ..... 100% 55.7M=1.9s 2016-05-09 17:52:13 (21.5 MB/s) - 'update/complete.mar' saved [41775330/41775330] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:14-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/pt-PT/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:16 GMT Keep-Alive: timeout=5, max=987 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.12M=0s 2016-05-09 17:52:14 (3.12 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-PT/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-PT/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:15-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/pt-PT/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41788979 Connection: keep-alive Date: Tue, 10 May 2016 00:30:11 GMT x-amz-replication-status: COMPLETED x-amz-version-id: S.f9cApoQyowWHNSG0XWryP1ULA80OY_ Last-Modified: Tue, 03 May 2016 15:32:04 GMT ETag: "acf0322098d2ba9056a7ea0f7b69ef20" Accept-Ranges: bytes Server: AmazonS3 Age: 1327 X-Cache: Hit from cloudfront Via: 1.1 9767e262e4af15c8d83a726bb0f44fa5.cloudfront.net (CloudFront) X-Amz-Cf-Id: jPqFoErzQB6bIbSmkIZz6GFk2Kv2d5QiIoKXeinL5-rNYstDwapqTA== Length: 41788979 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 2.72M 14s 3072K ........ ........ ........ ........ ........ ........ 15% 7.94M 8s 6144K ........ ........ ........ ........ ........ ........ 22% 12.8M 6s 9216K ........ ........ ........ ........ ........ ........ 30% 18.4M 4s 12288K ........ ........ ........ ........ ........ ........ 37% 23.7M 3s 15360K ........ ........ ........ ........ ........ ........ 45% 29.8M 3s 18432K ........ ........ ........ ........ ........ ........ 52% 32.1M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 40.6M 2s 24576K ........ ........ ........ ........ ........ ........ 67% 41.7M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 49.1M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 51.8M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 52.1M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 51.9M 0s 39936K ........ ..... 100% 57.1M=2.6s 2016-05-09 17:52:18 (15.4 MB/s) - 'update/complete.mar' saved [41788979/41788979] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:31-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/rm/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:32 GMT Keep-Alive: timeout=5, max=991 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.29M=0s 2016-05-09 17:52:31 (3.29 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/rm/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/rm/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:31-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/rm/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41600008 Connection: keep-alive Date: Tue, 10 May 2016 00:31:04 GMT x-amz-replication-status: COMPLETED x-amz-version-id: MoMbDWRJ3tYC7iJ8aLbllLzp9sDDoTL4 Last-Modified: Tue, 03 May 2016 14:29:17 GMT ETag: "2d01551b62ebed12cdfe008255b32bb4" Accept-Ranges: bytes Server: AmazonS3 Age: 1290 X-Cache: Hit from cloudfront Via: 1.1 f46e4d7bc5419470a70eb57aa9c935c8.cloudfront.net (CloudFront) X-Amz-Cf-Id: iSEnKCcqpWQBa5r1PWCIoM7munuxXzriK1fQ9_Tlhl39uBxUiYzUhw== Length: 41600008 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.51M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 13.9M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 17.8M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 25.3M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 29.0M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 35.9M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 40.0M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 44.4M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 50.8M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 52.9M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 42.9M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 48.4M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 54.0M 0s 39936K ........ .. 100% 57.9M=1.8s 2016-05-09 17:52:33 (21.9 MB/s) - 'update/complete.mar' saved [41600008/41600008] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:34-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ro/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:35 GMT Keep-Alive: timeout=5, max=996 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.24M=0s 2016-05-09 17:52:34 (3.24 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ro/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ro/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:35-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ro/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42239221 Connection: keep-alive Date: Tue, 10 May 2016 00:32:03 GMT x-amz-replication-status: COMPLETED x-amz-version-id: hkAbeOkMqkFgcoSm_K1xWuEevIP.q54e Last-Modified: Tue, 03 May 2016 14:44:23 GMT ETag: "b3ef748b7054abb59cebcef502f13ffe" Accept-Ranges: bytes Server: AmazonS3 Age: 1234 X-Cache: Hit from cloudfront Via: 1.1 96255a5b0caf50bcafcd101c1ff13691.cloudfront.net (CloudFront) X-Amz-Cf-Id: 2wGiKfnJdCbPSzPWSUuJOg-TixqQS3Z67txHM1m7UsBYtEs-0cAAsQ== Length: 42239221 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.42M 8s 3072K ........ ........ ........ ........ ........ ........ 14% 12.8M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 18.7M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 23.0M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 28.6M 2s 15360K ........ ........ ........ ........ ........ ........ 44% 35.9M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 38.9M 1s 21504K ........ ........ ........ ........ ........ ........ 59% 43.8M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 50.5M 1s 27648K ........ ........ ........ ........ ........ ........ 74% 52.1M 1s 30720K ........ ........ ........ ........ ........ ........ 81% 48.3M 0s 33792K ........ ........ ........ ........ ........ ........ 89% 50.2M 0s 36864K ........ ........ ........ ........ ........ ........ 96% 53.0M 0s 39936K ........ ........ .... 100% 55.1M=1.9s 2016-05-09 17:52:37 (21.7 MB/s) - 'update/complete.mar' saved [42239221/42239221] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:43-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/si/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:45 GMT Keep-Alive: timeout=5, max=940 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.25M=0s 2016-05-09 17:52:44 (3.25 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/si/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/si/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:44-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/si/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41668002 Connection: keep-alive Date: Tue, 10 May 2016 00:34:33 GMT x-amz-replication-status: COMPLETED x-amz-version-id: hhx4mWQYNx1gvNByVpRZw2eposJ_t1s9 Last-Modified: Tue, 03 May 2016 15:14:52 GMT ETag: "e6b7f4ff9343d09970caf1496fea6cbe" Accept-Ranges: bytes Server: AmazonS3 Age: 1094 X-Cache: Hit from cloudfront Via: 1.1 ff09df097f823b2834408d17e9779d62.cloudfront.net (CloudFront) X-Amz-Cf-Id: 8dbeTtIZFbqPl0WRFNEZm9LLBqPLn3ElPnM1vviIXiLX92OODSPU0Q== Length: 41668002 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.90M 9s 3072K ........ ........ ........ ........ ........ ........ 15% 11.0M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 16.2M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 20.6M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 27.1M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 34.1M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 37.3M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 41.0M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 48.5M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 51.4M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 51.3M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 52.0M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 52.3M 0s 39936K ........ ... 100% 59.6M=2.0s 2016-05-09 17:52:46 (19.6 MB/s) - 'update/complete.mar' saved [41668002/41668002] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:52:47-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:52:49 GMT Keep-Alive: timeout=5, max=991 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.30M=0s 2016-05-09 17:52:47 (3.30 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sk/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sk/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:52:48-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sk/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42513509 Connection: keep-alive Date: Tue, 10 May 2016 00:35:36 GMT x-amz-replication-status: COMPLETED x-amz-version-id: ndrJLfEx90gUpLgdiFGcYOaTSzINkasP Last-Modified: Tue, 03 May 2016 15:29:53 GMT ETag: "06a4c83bc1fdd7738b326ebf2d034a8e" Accept-Ranges: bytes Server: AmazonS3 Age: 1034 X-Cache: Hit from cloudfront Via: 1.1 4a7b695b8ae560fe9087da065a2b7812.cloudfront.net (CloudFront) X-Amz-Cf-Id: YBytoOC1-vD-bQjrEZ7zNv-HwTU6rCOckXC4OFOV4GaRGCMcbKEBrQ== Length: 42513509 (41M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.78M 10s 3072K ........ ........ ........ ........ ........ ........ 14% 8.58M 7s 6144K ........ ........ ........ ........ ........ ........ 22% 5.94M 6s 9216K ........ ........ ........ ........ ........ ........ 29% 4.59M 5s 12288K ........ ........ ........ ........ ........ ........ 36% 6.82M 5s 15360K ........ ........ ........ ........ ........ ........ 44% 6.69M 4s 18432K ........ ........ ........ ........ ........ ........ 51% 6.76M 3s 21504K ........ ........ ........ ........ ........ ........ 59% 7.01M 3s 24576K ........ ........ ........ ........ ........ ........ 66% 7.00M 2s 27648K ........ ........ ........ ........ ........ ........ 73% 6.84M 2s 30720K ........ ........ ........ ........ ........ ........ 81% 7.02M 1s 33792K ........ ........ ........ ........ ........ ........ 88% 6.86M 1s 36864K ........ ........ ........ ........ ........ ........ 96% 7.02M 0s 39936K ........ ........ ........ 100% 6.90M=6.4s 2016-05-09 17:52:54 (6.29 MB/s) - 'update/complete.mar' saved [42513509/42513509] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:10-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sl/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:11 GMT Keep-Alive: timeout=5, max=991 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 2.88M=0s 2016-05-09 17:53:10 (2.88 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sl/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sl/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:53:10-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sl/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41609453 Connection: keep-alive Date: Tue, 10 May 2016 00:36:35 GMT x-amz-replication-status: COMPLETED x-amz-version-id: ybe_5sA3P0Z9Lb5P7xNMUi3l6Q2hCfGg Last-Modified: Tue, 03 May 2016 14:19:52 GMT ETag: "8dd85b20509ea1232949a8ab1f88c925" Accept-Ranges: bytes Server: AmazonS3 Age: 998 X-Cache: Hit from cloudfront Via: 1.1 30bb04916f91d64c600e15c15000042d.cloudfront.net (CloudFront) X-Amz-Cf-Id: gNh3VTQHb5ybTrtwIckwrDdOnor4Ict-kpzDf39JcJjt86mbfCpuwQ== Length: 41609453 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 5.43M 7s 3072K ........ ........ ........ ........ ........ ........ 15% 24.8M 4s 6144K ........ ........ ........ ........ ........ ........ 22% 47.1M 3s 9216K ........ ........ ........ ........ ........ ........ 30% 32.4M 2s 12288K ........ ........ ........ ........ ........ ........ 37% 30.8M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 34.4M 1s 18432K ........ ........ ........ ........ ........ ........ 52% 30.9M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 34.4M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 31.4M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 34.0M 0s 30720K ........ ........ ........ ........ ........ ........ 83% 34.0M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 34.6M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 35.0M 0s 39936K ........ .. 100% 34.6M=1.7s 2016-05-09 17:53:12 (23.9 MB/s) - 'update/complete.mar' saved [41609453/41609453] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:15-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sq/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:17 GMT Keep-Alive: timeout=5, max=944 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.25M=0s 2016-05-09 17:53:15 (3.25 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sq/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sq/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:53:15-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sq/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41605146 Connection: keep-alive Date: Tue, 10 May 2016 00:37:31 GMT x-amz-replication-status: COMPLETED x-amz-version-id: G2qIzZ5atasIT4Wkldgplfc_aUp.e7ut Last-Modified: Tue, 03 May 2016 14:35:03 GMT ETag: "08d1d55685e6cfea75cb07c8c7b7c235" Accept-Ranges: bytes Server: AmazonS3 Age: 947 X-Cache: Hit from cloudfront Via: 1.1 ccf10d437e3b13a9b947840075a4df94.cloudfront.net (CloudFront) X-Amz-Cf-Id: bNghZsoXvII6AcS1Y8POekeMC9jW8KlwrHdcfAGSm3KkM_nEO1Ws9Q== Length: 41605146 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.51M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 12.4M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 18.5M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 22.4M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 28.4M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 34.8M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 39.3M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 43.5M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 49.0M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 52.5M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 51.1M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 50.2M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 54.3M 0s 39936K ........ .. 100% 58.0M=1.8s 2016-05-09 17:53:17 (21.5 MB/s) - 'update/complete.mar' saved [41605146/41605146] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:20-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:22 GMT Keep-Alive: timeout=5, max=933 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.29M=0s 2016-05-09 17:53:21 (3.29 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sr/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sr/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:53:21-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sr/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 43573823 Connection: keep-alive Date: Tue, 10 May 2016 00:38:28 GMT x-amz-replication-status: COMPLETED x-amz-version-id: HKL5b_q5zMGOMA0fZGt8kY49RgsTU9x6 Last-Modified: Tue, 03 May 2016 14:50:52 GMT ETag: "5b15ed1b56726247c37b9010f5198330" Accept-Ranges: bytes Server: AmazonS3 Age: 896 X-Cache: Hit from cloudfront Via: 1.1 aa96a51fedae85199c643eb5c8eca4e4.cloudfront.net (CloudFront) X-Amz-Cf-Id: sOqPxj8hhi8xTBh7K9erD62Q9hmAwVxI0KxHkTqFzZAftJUwepLJrQ== Length: 43573823 (42M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.92M 10s 3072K ........ ........ ........ ........ ........ ........ 14% 11.2M 6s 6144K ........ ........ ........ ........ ........ ........ 21% 16.3M 4s 9216K ........ ........ ........ ........ ........ ........ 28% 22.0M 3s 12288K ........ ........ ........ ........ ........ ........ 36% 24.9M 3s 15360K ........ ........ ........ ........ ........ ........ 43% 34.4M 2s 18432K ........ ........ ........ ........ ........ ........ 50% 37.5M 2s 21504K ........ ........ ........ ........ ........ ........ 57% 42.8M 1s 24576K ........ ........ ........ ........ ........ ........ 64% 48.6M 1s 27648K ........ ........ ........ ........ ........ ........ 72% 42.3M 1s 30720K ........ ........ ........ ........ ........ ........ 79% 29.8M 1s 33792K ........ ........ ........ ........ ........ ........ 86% 47.2M 0s 36864K ........ ........ ........ ........ ........ ........ 93% 52.4M 0s 39936K ........ ........ ........ ........ ........ 100% 54.2M=2.1s 2016-05-09 17:53:23 (19.7 MB/s) - 'update/complete.mar' saved [43573823/43573823] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:28-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/sv-SE/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:29 GMT Keep-Alive: timeout=5, max=972 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 2.73M=0s 2016-05-09 17:53:28 (2.73 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sv-SE/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sv-SE/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:53:28-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/sv-SE/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42232568 Connection: keep-alive Date: Tue, 10 May 2016 00:39:28 GMT x-amz-replication-status: COMPLETED x-amz-version-id: THwFGQGeOnHfur451oZut9_op9fAgByI Last-Modified: Tue, 03 May 2016 15:06:16 GMT ETag: "e8b8fdfbb6c9e9407966bb5ab778e31e" Accept-Ranges: bytes Server: AmazonS3 Age: 843 X-Cache: Hit from cloudfront Via: 1.1 296faebadd40feee8b2eb0e10d5786d2.cloudfront.net (CloudFront) X-Amz-Cf-Id: uIVI8cXQSZRwHtWDiW9FVRKAuGVURaNyhODbFM2rNyxFARHNlbkDHQ== Length: 42232568 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.22M 9s 3072K ........ ........ ........ ........ ........ ........ 14% 11.6M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 18.4M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 22.9M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 28.2M 2s 15360K ........ ........ ........ ........ ........ ........ 44% 34.4M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 38.1M 1s 21504K ........ ........ ........ ........ ........ ........ 59% 19.6M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 30.4M 1s 27648K ........ ........ ........ ........ ........ ........ 74% 17.9M 1s 30720K ........ ........ ........ ........ ........ ........ 81% 28.1M 0s 33792K ........ ........ ........ ........ ........ ........ 89% 34.0M 0s 36864K ........ ........ ........ ........ ........ ........ 96% 39.1M 0s 39936K ........ ........ .... 100% 42.6M=2.3s 2016-05-09 17:53:31 (17.8 MB/s) - 'update/complete.mar' saved [42232568/42232568] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:32-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/ta-LK/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:34 GMT Keep-Alive: timeout=5, max=959 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.34M=0s 2016-05-09 17:53:33 (3.34 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ta-LK/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ta-LK/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:53:33-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ta-LK/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41693486 Connection: keep-alive Date: Tue, 10 May 2016 00:40:22 GMT x-amz-replication-status: COMPLETED x-amz-version-id: p.2CX7tlahBxzhrSmIhIx77XlLl_9xKF Last-Modified: Tue, 03 May 2016 15:21:56 GMT ETag: "8a2d90ce5b2a6238f07ab1ad2adff73d" Accept-Ranges: bytes Server: AmazonS3 Age: 793 X-Cache: Hit from cloudfront Via: 1.1 6eaa7f856e226a0db7cef6201d3b8393.cloudfront.net (CloudFront) X-Amz-Cf-Id: klkBAV0CK2KqeQ7Kei0M3VmOpoZt8LLdC0XM15Po4sKeLu8rX-bcrg== Length: 41693486 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.40M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 12.4M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 18.3M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 22.7M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 22.3M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 31.2M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 22.8M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 22.9M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 24.5M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 23.2M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 23.5M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 23.7M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 25.9M 0s 39936K ........ .... 100% 27.1M=2.4s 2016-05-09 17:53:35 (16.8 MB/s) - 'update/complete.mar' saved [41693486/41693486] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:36-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/tr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:38 GMT Keep-Alive: timeout=5, max=919 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.25M=0s 2016-05-09 17:53:36 (3.25 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/tr/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/tr/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:53:37-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/tr/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41603851 Connection: keep-alive Date: Tue, 10 May 2016 00:41:32 GMT x-amz-replication-status: COMPLETED x-amz-version-id: NxoKlfaRBf.srRWYxrNXQB3fp4ewIn9V Last-Modified: Tue, 03 May 2016 14:18:11 GMT ETag: "3d7f3255ea969f2c92de39cfa1665abb" Accept-Ranges: bytes Server: AmazonS3 Age: 726 X-Cache: Hit from cloudfront Via: 1.1 6eaa7f856e226a0db7cef6201d3b8393.cloudfront.net (CloudFront) X-Amz-Cf-Id: 7suDeFQ6CIUuxG9zqt-XlDD3yhck3-Kz5lBUfbh0mpCWKPcpUmSLjg== Length: 41603851 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.81M 10s 3072K ........ ........ ........ ........ ........ ........ 15% 8.19M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 7.12M 5s 9216K ........ ........ ........ ........ ........ ........ 30% 6.93M 5s 12288K ........ ........ ........ ........ ........ ........ 37% 8.80M 4s 15360K ........ ........ ........ ........ ........ ........ 45% 9.36M 3s 18432K ........ ........ ........ ........ ........ ........ 52% 9.34M 3s 21504K ........ ........ ........ ........ ........ ........ 60% 9.46M 2s 24576K ........ ........ ........ ........ ........ ........ 68% 9.09M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 9.37M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 9.50M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 9.16M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 9.46M 0s 39936K ........ .. 100% 9.02M=5.0s 2016-05-09 17:53:42 (7.94 MB/s) - 'update/complete.mar' saved [41603851/41603851] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:53:44-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/uk/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:53:46 GMT Keep-Alive: timeout=5, max=999 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 2.93M=0s 2016-05-09 17:53:44 (2.93 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/uk/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/uk/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:53:44-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/uk/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42070304 Connection: keep-alive Date: Tue, 10 May 2016 00:42:30 GMT x-amz-replication-status: COMPLETED x-amz-version-id: oaKA3uknvdneOZkOqOMG2DNME7sD7nvG Last-Modified: Tue, 03 May 2016 14:34:10 GMT ETag: "0f15044b8de69747b32d1fd05977a0b7" Accept-Ranges: bytes Server: AmazonS3 Age: 677 X-Cache: Hit from cloudfront Via: 1.1 3d3d633d266d05d90a4eea7a6a59b514.cloudfront.net (CloudFront) X-Amz-Cf-Id: LQ--Fhoba2HW_YqnPUUV-T7P77za3s4e1yGm0JedcIjyZOhqHv2j-w== Length: 42070304 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.67M 10s 3072K ........ ........ ........ ........ ........ ........ 14% 10.1M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 16.0M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 19.6M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 27.0M 3s 15360K ........ ........ ........ ........ ........ ........ 44% 30.5M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 36.2M 2s 21504K ........ ........ ........ ........ ........ ........ 59% 43.8M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 45.8M 1s 27648K ........ ........ ........ ........ ........ ........ 74% 52.8M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 53.4M 0s 33792K ........ ........ ........ ........ ........ ........ 89% 38.2M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 49.3M 0s 39936K ........ ........ . 100% 58.6M=2.2s 2016-05-09 17:53:47 (18.6 MB/s) - 'update/complete.mar' saved [42070304/42070304] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:05-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/vi/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:07 GMT Keep-Alive: timeout=5, max=999 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.26M=0s 2016-05-09 17:54:05 (3.26 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/vi/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/vi/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:54:06-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/vi/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41688847 Connection: keep-alive Date: Tue, 10 May 2016 00:43:27 GMT x-amz-replication-status: COMPLETED x-amz-version-id: D4e0qd9Uc4Nj8XJBhnH1U3ZzQ1xwY8Mr Last-Modified: Tue, 03 May 2016 14:48:32 GMT ETag: "fb7a30a7cfd1fbbb1ce96eba9f69995f" Accept-Ranges: bytes Server: AmazonS3 Age: 641 X-Cache: Hit from cloudfront Via: 1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront) X-Amz-Cf-Id: JfmeEchWrE5VJxrkRdZb0DMpwKXXhmcr9ZPwPiTC40qxyADfKDxT0A== Length: 41688847 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.05M 9s 3072K ........ ........ ........ ........ ........ ........ 15% 12.6M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 19.0M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 19.7M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 25.4M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 24.9M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 34.1M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 35.8M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 38.6M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 40.2M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 46.7M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 46.6M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 51.8M 0s 39936K ........ .... 100% 57.7M=2.1s 2016-05-09 17:54:08 (19.4 MB/s) - 'update/complete.mar' saved [41688847/41688847] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:09-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-CN/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:10 GMT Keep-Alive: timeout=5, max=950 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 2.93M=0s 2016-05-09 17:54:09 (2.93 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-CN/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-CN/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:54:09-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-CN/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41613413 Connection: keep-alive Date: Tue, 10 May 2016 00:44:23 GMT x-amz-replication-status: COMPLETED x-amz-version-id: rSUnzYb_MDdZbuTLNT2H0DpgMCtgrKAT Last-Modified: Tue, 03 May 2016 15:03:00 GMT ETag: "c65dd1c315056c377819823050d71a2f" Accept-Ranges: bytes Server: AmazonS3 Age: 588 X-Cache: Hit from cloudfront Via: 1.1 515297ac55a7ae01bf8c7d03df4fecb1.cloudfront.net (CloudFront) X-Amz-Cf-Id: h3HJTJqUK8-uAJX1lduQR23kVPZ3p2RXJOdtd5-7lWX91s52hXcYlg== Length: 41613413 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 5.00M 7s 3072K ........ ........ ........ ........ ........ ........ 15% 16.3M 4s 6144K ........ ........ ........ ........ ........ ........ 22% 20.1M 3s 9216K ........ ........ ........ ........ ........ ........ 30% 27.1M 2s 12288K ........ ........ ........ ........ ........ ........ 37% 30.4M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 37.8M 1s 18432K ........ ........ ........ ........ ........ ........ 52% 44.5M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 46.0M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 41.0M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 47.1M 0s 30720K ........ ........ ........ ........ ........ ........ 83% 35.3M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 51.9M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 52.9M 0s 39936K ........ .. 100% 54.5M=1.7s 2016-05-09 17:54:11 (23.3 MB/s) - 'update/complete.mar' saved [41613413/41613413] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:31-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.1/20160323055719/WINNT_x86-msvc/zh-TW/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:32 GMT Keep-Alive: timeout=5, max=933 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.30M=0s 2016-05-09 17:54:31 (3.30 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-TW/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-TW/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:54:31-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/zh-TW/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41844154 Connection: keep-alive Date: Tue, 10 May 2016 00:45:20 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 7fDP29FjdokhTExLjO3MfUJd2cugAuZa Last-Modified: Tue, 03 May 2016 15:17:40 GMT ETag: "2389e48ef31f4bffa4e0f2a2bb40ecb7" Accept-Ranges: bytes Server: AmazonS3 Age: 554 X-Cache: Hit from cloudfront Via: 1.1 f4879b16ae11c9a08a3038de5ea0df75.cloudfront.net (CloudFront) X-Amz-Cf-Id: 2fl5N0cU2rE4a0dfE4ADyd_oXGw8rarzqcLYhNzWggn2ISrcvYe3Tg== Length: 41844154 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.29M 11s 3072K ........ ........ ........ ........ ........ ........ 15% 9.31M 7s 6144K ........ ........ ........ ........ ........ ........ 22% 14.2M 5s 9216K ........ ........ ........ ........ ........ ........ 30% 21.3M 4s 12288K ........ ........ ........ ........ ........ ........ 37% 23.6M 3s 15360K ........ ........ ........ ........ ........ ........ 45% 32.5M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 35.6M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 28.4M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 53.3M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 31.6M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 33.4M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 31.2M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 32.3M 0s 39936K ........ ...... 100% 32.7M=2.5s 2016-05-09 17:54:34 (16.3 MB/s) - 'update/complete.mar' saved [41844154/41844154] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:35-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ar/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:37 GMT Keep-Alive: timeout=5, max=836 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 2.94M=0s 2016-05-09 17:54:35 (2.94 MB/s) - 'update.xml' saved [943/943] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ar/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:36-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ast/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:38 GMT Keep-Alive: timeout=5, max=994 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 946 Length: 946 [text/xml] Saving to: 'update.xml' 0K 100% 3.38M=0s 2016-05-09 17:54:36 (3.38 MB/s) - 'update.xml' saved [946/946] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ast/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:50-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/be/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:52 GMT Keep-Alive: timeout=5, max=992 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.17M=0s 2016-05-09 17:54:51 (3.17 MB/s) - 'update.xml' saved [943/943] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/be/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:52-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bg/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:53 GMT Keep-Alive: timeout=5, max=993 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.33M=0s 2016-05-09 17:54:52 (3.33 MB/s) - 'update.xml' saved [943/943] Got this response: Retrieving 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bg/thunderbird-38.8.0.complete.mar' from cache... Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bn-BD/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bn-BD/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bn-BD/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:54:53-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/bn-BD/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:54:55 GMT Keep-Alive: timeout=5, max=998 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 2.88M=0s 2016-05-09 17:54:53 (2.88 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bn-BD/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bn-BD/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:54:54-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/bn-BD/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41668967 Connection: keep-alive Date: Tue, 10 May 2016 00:20:27 GMT x-amz-replication-status: COMPLETED x-amz-version-id: mtlAm5Acw8cHDM3IQtAYVRfCK6rEO96C Last-Modified: Tue, 03 May 2016 15:30:40 GMT ETag: "c42f3df53b0fffd04fdbdc07fda8215b" Accept-Ranges: bytes Server: AmazonS3 Age: 2069 X-Cache: Hit from cloudfront Via: 1.1 0576b942ae9f4fc9c0b62b0736e9bfd6.cloudfront.net (CloudFront) X-Amz-Cf-Id: EX80eZMYsUIjWLUWwI7MwkXuCmDCpKl8ImnXjc5WkQf_DmnANN2qGQ== Length: 41668967 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.30M 11s 3072K ........ ........ ........ ........ ........ ........ 15% 8.60M 7s 6144K ........ ........ ........ ........ ........ ........ 22% 13.9M 5s 9216K ........ ........ ........ ........ ........ ........ 30% 16.0M 4s 12288K ........ ........ ........ ........ ........ ........ 37% 18.5M 3s 15360K ........ ........ ........ ........ ........ ........ 45% 21.6M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 23.5M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 28.7M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 33.9M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 36.1M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 39.1M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 46.9M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 47.8M 0s 39936K ........ ... 100% 48.4M=2.6s 2016-05-09 17:54:56 (15.4 MB/s) - 'update/complete.mar' saved [41668967/41668967] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/br/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/br/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/br/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:16-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/br/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:18 GMT Keep-Alive: timeout=5, max=937 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.22M=0s 2016-05-09 17:55:16 (3.22 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/br/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/br/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:16-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/br/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42972488 Connection: keep-alive Date: Tue, 10 May 2016 00:22:10 GMT x-amz-replication-status: COMPLETED x-amz-version-id: _rLHXVcsAxXhHtC3Bcdw9E05chlxVuBK Last-Modified: Tue, 03 May 2016 15:45:30 GMT ETag: "bc07b57e2885700d4aca7a44142039e5" Accept-Ranges: bytes Server: AmazonS3 Age: 1989 X-Cache: Hit from cloudfront Via: 1.1 bfdd5909914586f5bc4851846228c27f.cloudfront.net (CloudFront) X-Amz-Cf-Id: chOf5-bE_6Vv9ZAzk8ZkTrFodBn-3No-1-RaJMlEP3K_S80qnnNMmg== Length: 42972488 (41M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.43M 11s 3072K ........ ........ ........ ........ ........ ........ 14% 9.51M 7s 6144K ........ ........ ........ ........ ........ ........ 21% 15.7M 5s 9216K ........ ........ ........ ........ ........ ........ 29% 19.9M 4s 12288K ........ ........ ........ ........ ........ ........ 36% 26.9M 3s 15360K ........ ........ ........ ........ ........ ........ 43% 29.9M 2s 18432K ........ ........ ........ ........ ........ ........ 51% 36.7M 2s 21504K ........ ........ ........ ........ ........ ........ 58% 44.4M 1s 24576K ........ ........ ........ ........ ........ ........ 65% 43.9M 1s 27648K ........ ........ ........ ........ ........ ........ 73% 51.2M 1s 30720K ........ ........ ........ ........ ........ ........ 80% 51.6M 1s 33792K ........ ........ ........ ........ ........ ........ 87% 51.0M 0s 36864K ........ ........ ........ ........ ........ ........ 95% 51.1M 0s 39936K ........ ........ ........ ....... 100% 57.1M=2.2s 2016-05-09 17:55:19 (18.4 MB/s) - 'update/complete.mar' saved [42972488/42972488] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ca/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ca/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ca/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:20-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/ca/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:21 GMT Keep-Alive: timeout=5, max=975 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.24M=0s 2016-05-09 17:55:20 (3.24 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ca/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ca/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:20-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/ca/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42013655 Connection: keep-alive Date: Tue, 10 May 2016 00:23:46 GMT x-amz-replication-status: COMPLETED x-amz-version-id: g6OvWhjbCXnBp5_ufzAVla0Vj9.aq5YY Last-Modified: Tue, 03 May 2016 14:18:42 GMT ETag: "77ec97605e7faaedeffdfea39696a3a6" Accept-Ranges: bytes Server: AmazonS3 Age: 1896 X-Cache: Hit from cloudfront Via: 1.1 dc7c4fb5024ff022cad1642ec506a6e8.cloudfront.net (CloudFront) X-Amz-Cf-Id: 4-RQ2AyRlrF1544RJVa_pAHrRbsrYrdfb_2YyzyCyyXaHoYOTgG-VQ== Length: 42013655 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.79M 10s 3072K ........ ........ ........ ........ ........ ........ 14% 11.3M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 16.5M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 22.6M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 24.9M 2s 15360K ........ ........ ........ ........ ........ ........ 44% 34.5M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 37.7M 2s 21504K ........ ........ ........ ........ ........ ........ 59% 43.0M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 34.6M 1s 27648K ........ ........ ........ ........ ........ ........ 74% 26.8M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 23.3M 0s 33792K ........ ........ ........ ........ ........ ........ 89% 27.3M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 24.0M 0s 39936K ........ ........ . 100% 28.1M=2.3s 2016-05-09 17:55:23 (17.2 MB/s) - 'update/complete.mar' saved [42013655/42013655] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cs/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cs/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cs/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:24-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cs/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:25 GMT Keep-Alive: timeout=5, max=982 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 2.97M=0s 2016-05-09 17:55:24 (2.97 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/cs/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/cs/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:24-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/cs/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41609539 Connection: keep-alive Date: Tue, 10 May 2016 00:25:03 GMT x-amz-replication-status: COMPLETED x-amz-version-id: LiPd3SUgn.ZWfkSuRlUVqRuHV22MS4a9 Last-Modified: Tue, 03 May 2016 14:33:07 GMT ETag: "325692f0fe2be5ec4aacd3fd3c48ff77" Accept-Ranges: bytes Server: AmazonS3 Age: 1824 X-Cache: Hit from cloudfront Via: 1.1 ccf10d437e3b13a9b947840075a4df94.cloudfront.net (CloudFront) X-Amz-Cf-Id: BehAhfvg7UQzS-b5u29QX0vlqz38-m7G8NyfRJbeHJ6QGgxAAp2xHQ== Length: 41609539 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.54M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 12.6M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 17.2M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 25.2M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 28.1M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 33.5M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 40.8M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 42.0M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 49.8M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 52.4M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 52.1M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 51.3M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 52.5M 0s 39936K ........ .. 100% 57.9M=1.8s 2016-05-09 17:55:26 (21.6 MB/s) - 'update/complete.mar' saved [41609539/41609539] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cy/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cy/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cy/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:27-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/cy/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus4.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:29 GMT Keep-Alive: timeout=5, max=989 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.02M=0s 2016-05-09 17:55:27 (3.02 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/cy/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/cy/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:28-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/cy/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41608536 Connection: keep-alive Date: Tue, 10 May 2016 00:26:03 GMT x-amz-replication-status: COMPLETED x-amz-version-id: Z9Gdk7oCbIbTGGXF5Unfg7DahlIEUprV Last-Modified: Tue, 03 May 2016 14:47:39 GMT ETag: "139773a5798b2c71dfd9fa099b185c6f" Accept-Ranges: bytes Server: AmazonS3 Age: 1767 X-Cache: Hit from cloudfront Via: 1.1 0ffb9964022445351e635c66ad0176ff.cloudfront.net (CloudFront) X-Amz-Cf-Id: pK3MNR242QAPsbsFMlTBfjUUkDO3RhbcKlimum0uiIYFd3T0_1w9ew== Length: 41608536 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 5.21M 7s 3072K ........ ........ ........ ........ ........ ........ 15% 33.0M 4s 6144K ........ ........ ........ ........ ........ ........ 22% 48.6M 2s 9216K ........ ........ ........ ........ ........ ........ 30% 50.4M 2s 12288K ........ ........ ........ ........ ........ ........ 37% 54.0M 1s 15360K ........ ........ ........ ........ ........ ........ 45% 53.8M 1s 18432K ........ ........ ........ ........ ........ ........ 52% 50.7M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 53.6M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 52.1M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 53.5M 0s 30720K ........ ........ ........ ........ ........ ........ 83% 53.0M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 54.0M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 54.5M 0s 39936K ........ .. 100% 57.6M=1.3s 2016-05-09 17:55:29 (30.4 MB/s) - 'update/complete.mar' saved [41608536/41608536] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/da/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/da/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/da/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:30-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/da/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:31 GMT Keep-Alive: timeout=5, max=942 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.28M=0s 2016-05-09 17:55:30 (3.28 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/da/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/da/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:30-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/da/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42235366 Connection: keep-alive Date: Tue, 10 May 2016 00:26:54 GMT x-amz-replication-status: COMPLETED x-amz-version-id: exkXK6hu_YBaj.P0fi5bm7oMGAUjTr71 Last-Modified: Tue, 03 May 2016 15:04:16 GMT ETag: "89a2ef07be6df5da8184e6fa7d418096" Accept-Ranges: bytes Server: AmazonS3 Age: 1719 X-Cache: Hit from cloudfront Via: 1.1 5574699f9d8b8aad21acf2edbb25dc62.cloudfront.net (CloudFront) X-Amz-Cf-Id: VeBPzcrKe8DCsBum3c9Z799RBvq4bB-mPKvbv_TPCmJXsxsEATDekg== Length: 42235366 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.76M 10s 3072K ........ ........ ........ ........ ........ ........ 14% 11.5M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 16.4M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 20.9M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 26.9M 3s 15360K ........ ........ ........ ........ ........ ........ 44% 27.3M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 29.3M 2s 21504K ........ ........ ........ ........ ........ ........ 59% 27.2M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 24.4M 1s 27648K ........ ........ ........ ........ ........ ........ 74% 26.7M 1s 30720K ........ ........ ........ ........ ........ ........ 81% 27.6M 0s 33792K ........ ........ ........ ........ ........ ........ 89% 25.6M 0s 36864K ........ ........ ........ ........ ........ ........ 96% 26.7M 0s 39936K ........ ........ .... 100% 25.8M=2.4s 2016-05-09 17:55:33 (16.5 MB/s) - 'update/complete.mar' saved [42235366/42235366] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/dsb/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/dsb/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/dsb/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:34-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/dsb/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:36 GMT Keep-Alive: timeout=5, max=758 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 946 Length: 946 [text/xml] Saving to: 'update.xml' 0K 100% 3.29M=0s 2016-05-09 17:55:34 (3.29 MB/s) - 'update.xml' saved [946/946] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/dsb/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/dsb/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:35-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/dsb/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41612998 Connection: keep-alive Date: Tue, 10 May 2016 00:28:50 GMT x-amz-replication-status: COMPLETED x-amz-version-id: xidH9Kb_GxLQZCO1CRJ0.b1X2v4P0rP6 Last-Modified: Tue, 03 May 2016 15:34:16 GMT ETag: "0d33f1d23aa05edfebc81a22c6f51e1d" Accept-Ranges: bytes Server: AmazonS3 Age: 1607 X-Cache: Hit from cloudfront Via: 1.1 aa89533ad2ec5e0edba466c9920bd000.cloudfront.net (CloudFront) X-Amz-Cf-Id: I71I47mwP19Z6Djxy6rL2JPRUgsKBj5IPfzGbYkb2YjWESV4R3eCog== Length: 41612998 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.88M 9s 3072K ........ ........ ........ ........ ........ ........ 15% 10.4M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 13.3M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 16.4M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 20.3M 3s 15360K ........ ........ ........ ........ ........ ........ 45% 27.8M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 34.2M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 30.1M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 42.2M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 48.1M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 52.1M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 54.7M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 54.3M 0s 39936K ........ .. 100% 59.1M=2.2s 2016-05-09 17:55:37 (17.8 MB/s) - 'update/complete.mar' saved [41612998/41612998] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/el/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/el/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/el/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:38-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/el/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.44, 63.245.213.45, 63.245.213.46 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.44|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:39 GMT Keep-Alive: timeout=5, max=985 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.13M=0s 2016-05-09 17:55:38 (3.13 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/el/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/el/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:38-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/el/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41617851 Connection: keep-alive Date: Tue, 10 May 2016 00:29:50 GMT x-amz-replication-status: COMPLETED x-amz-version-id: fGWMR2ce.oy_8iDZksZJ9ERDHgzUJBgU Last-Modified: Tue, 03 May 2016 14:29:25 GMT ETag: "60ee48c78dca71fe6463230e6be88253" Accept-Ranges: bytes Server: AmazonS3 Age: 1551 X-Cache: Hit from cloudfront Via: 1.1 81871f1c889cc44b6c25e3ef722a3801.cloudfront.net (CloudFront) X-Amz-Cf-Id: lJ7TQqITjlfbzR9mtHRw7uPj9Tgx0ycmGzFW00lvFjxJrrzUvSIx7A== Length: 41617851 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 52.0M 1s 3072K ........ ........ ........ ........ ........ ........ 15% 55.1M 1s 6144K ........ ........ ........ ........ ........ ........ 22% 6.60M 2s 9216K ........ ........ ........ ........ ........ ........ 30% 4.83M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 4.87M 3s 15360K ........ ........ ........ ........ ........ ........ 45% 6.40M 3s 18432K ........ ........ ........ ........ ........ ........ 52% 7.21M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 7.21M 2s 24576K ........ ........ ........ ........ ........ ........ 68% 7.14M 2s 27648K ........ ........ ........ ........ ........ ........ 75% 6.95M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 7.18M 1s 33792K ........ ........ ........ ........ ........ ........ 90% 7.00M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 7.15M 0s 39936K ........ ... 100% 6.75M=5.3s 2016-05-09 17:55:45 (7.45 MB/s) - 'update/complete.mar' saved [41617851/41617851] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/en-GB/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/en-GB/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/en-GB/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:55:56-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/en-GB/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus3.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:55:58 GMT Keep-Alive: timeout=5, max=983 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.27M=0s 2016-05-09 17:55:56 (3.27 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/en-GB/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/en-GB/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:55:56-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/en-GB/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41608348 Connection: keep-alive Date: Tue, 10 May 2016 00:31:02 GMT x-amz-replication-status: COMPLETED x-amz-version-id: HJqhEOreZy0b17BpTyzn6AiwPLs4IXEf Last-Modified: Tue, 03 May 2016 14:44:24 GMT ETag: "f3e0bbd32a94ceecb908d53646ed34f3" Accept-Ranges: bytes Server: AmazonS3 Age: 1496 X-Cache: Hit from cloudfront Via: 1.1 8e86372eaaa62fc64b70e7bcde725dd9.cloudfront.net (CloudFront) X-Amz-Cf-Id: MyKku9DyuB5XhhBBhbr763mL97RGWHNn-ztWnHEsp0lF8JgiOTthng== Length: 41608348 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.58M 10s 3072K ........ ........ ........ ........ ........ ........ 15% 10.3M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 16.2M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 19.7M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 27.4M 3s 15360K ........ ........ ........ ........ ........ ........ 45% 30.9M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 37.7M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 44.0M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 48.6M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 52.4M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 28.3M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 50.0M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 38.6M 0s 39936K ........ .. 100% 43.6M=2.2s 2016-05-09 17:55:59 (18.0 MB/s) - 'update/complete.mar' saved [41608348/41608348] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-AR/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-AR/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-AR/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:56:00-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-AR/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:56:01 GMT Keep-Alive: timeout=5, max=919 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.26M=0s 2016-05-09 17:56:00 (3.26 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/es-AR/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/es-AR/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:56:00-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/es-AR/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41600884 Connection: keep-alive Date: Tue, 10 May 2016 00:32:44 GMT x-amz-replication-status: COMPLETED x-amz-version-id: wuSrk8_T58lcccNhRyXt.EjeU75skjHP Last-Modified: Tue, 03 May 2016 14:59:41 GMT ETag: "bd2d95cfa52fa428043b008d70bf4d19" Accept-Ranges: bytes Server: AmazonS3 Age: 1399 X-Cache: Hit from cloudfront Via: 1.1 8d667b66bfb5cc8a8898a76f2ecc1d5a.cloudfront.net (CloudFront) X-Amz-Cf-Id: dRBXdP_hn680_kzGFQk4plPZG1f2siKDcKMEQrkQRNfnzJdJYp0fYg== Length: 41600884 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 5.04M 7s 3072K ........ ........ ........ ........ ........ ........ 15% 29.0M 4s 6144K ........ ........ ........ ........ ........ ........ 22% 46.3M 3s 9216K ........ ........ ........ ........ ........ ........ 30% 48.6M 2s 12288K ........ ........ ........ ........ ........ ........ 37% 52.9M 1s 15360K ........ ........ ........ ........ ........ ........ 45% 51.4M 1s 18432K ........ ........ ........ ........ ........ ........ 52% 51.0M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 44.2M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 30.9M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 34.4M 0s 30720K ........ ........ ........ ........ ........ ........ 83% 35.3M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 45.4M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 48.2M 0s 39936K ........ .. 100% 35.6M=1.5s 2016-05-09 17:56:02 (26.7 MB/s) - 'update/complete.mar' saved [41600884/41600884] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-ES/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-ES/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-ES/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:56:25-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/es-ES/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:56:27 GMT Keep-Alive: timeout=5, max=957 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 952 Length: 952 [text/xml] Saving to: 'update.xml' 0K 100% 3.18M=0s 2016-05-09 17:56:26 (3.18 MB/s) - 'update.xml' saved [952/952] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/es-ES/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/es-ES/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:56:26-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/es-ES/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41576576 Connection: keep-alive Date: Tue, 10 May 2016 00:33:44 GMT x-amz-replication-status: COMPLETED x-amz-version-id: fTjAPQKSkcsSloAN4fWtC2FcP86uuEKR Last-Modified: Tue, 03 May 2016 15:14:32 GMT ETag: "ad6867177c29f2379bf3175defc9547b" Accept-Ranges: bytes Server: AmazonS3 Age: 1364 X-Cache: Hit from cloudfront Via: 1.1 fc7da6323a08a2c16d48dd4939ce0898.cloudfront.net (CloudFront) X-Amz-Cf-Id: 3gxKZiLvA6JU9tywiSbQ5SaoHUlsFQbjFHsSqnyN-7MPeDyJNaGSUw== Length: 41576576 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.34M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 9.36M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 14.4M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 21.4M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 22.6M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 26.0M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 31.1M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 34.7M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 38.1M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 45.0M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 48.7M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 51.9M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 15.8M 0s 39936K ........ .. 100% 6.34M=2.3s 2016-05-09 17:56:28 (16.9 MB/s) - 'update/complete.mar' saved [41576576/41576576] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/et/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/et/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/et/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:56:29-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/et/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus5.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:56:31 GMT Keep-Alive: timeout=5, max=956 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 2.96M=0s 2016-05-09 17:56:29 (2.96 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/et/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/et/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:56:30-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/et/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 42443426 Connection: keep-alive Date: Tue, 10 May 2016 00:34:49 GMT x-amz-replication-status: COMPLETED x-amz-version-id: tFfubGMzcHf0reuPF_EX3rfAz8w.p4mm Last-Modified: Tue, 03 May 2016 15:29:48 GMT ETag: "b6c692845b34d05398d012f8bcbcd104" Accept-Ranges: bytes Server: AmazonS3 Age: 1303 X-Cache: Hit from cloudfront Via: 1.1 30bb04916f91d64c600e15c15000042d.cloudfront.net (CloudFront) X-Amz-Cf-Id: juVeSRbvk6HUV6Z8o1N5r40fbrNnUbTSqd2xOhH-w5YgBSDBV_eKRw== Length: 42443426 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.03M 9s 3072K ........ ........ ........ ........ ........ ........ 14% 12.9M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 17.0M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 23.4M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 28.8M 2s 15360K ........ ........ ........ ........ ........ ........ 44% 35.1M 2s 18432K ........ ........ ........ ........ ........ ........ 51% 39.4M 1s 21504K ........ ........ ........ ........ ........ ........ 59% 46.0M 1s 24576K ........ ........ ........ ........ ........ ........ 66% 47.9M 1s 27648K ........ ........ ........ ........ ........ ........ 74% 53.1M 1s 30720K ........ ........ ........ ........ ........ ........ 81% 31.9M 0s 33792K ........ ........ ........ ........ ........ ........ 88% 33.7M 0s 36864K ........ ........ ........ ........ ........ ........ 96% 37.3M 0s 39936K ........ ........ ....... 100% 25.6M=2.1s 2016-05-09 17:56:32 (19.7 MB/s) - 'update/complete.mar' saved [42443426/42443426] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/eu/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/eu/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/eu/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:56:33-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/eu/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus2.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:56:35 GMT Keep-Alive: timeout=5, max=653 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 2.99M=0s 2016-05-09 17:56:33 (2.99 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/eu/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/eu/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:56:33-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/eu/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41609150 Connection: keep-alive Date: Tue, 10 May 2016 00:35:50 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 4sauyEkgEe.1EMA8OxpqcJYTCSNsrsAo Last-Modified: Tue, 03 May 2016 15:45:05 GMT ETag: "a0073c19019ec36110bf081ba574d809" Accept-Ranges: bytes Server: AmazonS3 Age: 1245 X-Cache: Hit from cloudfront Via: 1.1 fc7da6323a08a2c16d48dd4939ce0898.cloudfront.net (CloudFront) X-Amz-Cf-Id: gvXJjvPfeT-sX2_WboI_yg6EmEj5guE6rfRLBG9vEFVMec1clndz7g== Length: 41609150 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.69M 8s 3072K ........ ........ ........ ........ ........ ........ 15% 14.1M 5s 6144K ........ ........ ........ ........ ........ ........ 22% 17.2M 4s 9216K ........ ........ ........ ........ ........ ........ 30% 23.2M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 28.2M 2s 15360K ........ ........ ........ ........ ........ ........ 45% 30.3M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 37.2M 1s 21504K ........ ........ ........ ........ ........ ........ 60% 40.3M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 36.2M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 29.0M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 31.2M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 30.6M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 32.3M 0s 39936K ........ .. 100% 29.6M=2.0s 2016-05-09 17:56:36 (19.7 MB/s) - 'update/complete.mar' saved [41609150/41609150] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fi/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fi/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fi/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:56:36-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fi/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus1.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:56:38 GMT Keep-Alive: timeout=5, max=982 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 3.24M=0s 2016-05-09 17:56:37 (3.24 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fi/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fi/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:56:37-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fi/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41606233 Connection: keep-alive Date: Tue, 10 May 2016 00:36:43 GMT x-amz-replication-status: COMPLETED x-amz-version-id: NRUDe22s2cMKl8ZJCLIvxDXYNY5rJ6UW Last-Modified: Tue, 03 May 2016 14:27:35 GMT ETag: "02e2e097b69c9a9eda8901d7b98e5aba" Accept-Ranges: bytes Server: AmazonS3 Age: 1196 X-Cache: Hit from cloudfront Via: 1.1 4a55d86b7263f73c6817c7c25d4b3643.cloudfront.net (CloudFront) X-Amz-Cf-Id: 3CXy9wNQNxfu57gwHV59JKN-NVGhGTHhpEa377FyLkf_S59kSTyXAQ== Length: 41606233 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 3.28M 11s 3072K ........ ........ ........ ........ ........ ........ 15% 9.56M 7s 6144K ........ ........ ........ ........ ........ ........ 22% 14.8M 5s 9216K ........ ........ ........ ........ ........ ........ 30% 18.8M 4s 12288K ........ ........ ........ ........ ........ ........ 37% 25.6M 3s 15360K ........ ........ ........ ........ ........ ........ 45% 28.9M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 34.2M 2s 21504K ........ ........ ........ ........ ........ ........ 60% 40.2M 1s 24576K ........ ........ ........ ........ ........ ........ 68% 42.1M 1s 27648K ........ ........ ........ ........ ........ ........ 75% 49.2M 1s 30720K ........ ........ ........ ........ ........ ........ 83% 53.0M 0s 33792K ........ ........ ........ ........ ........ ........ 90% 53.2M 0s 36864K ........ ........ ........ ........ ........ ........ 98% 53.4M 0s 39936K ........ .. 100% 59.7M=2.3s 2016-05-09 17:56:39 (17.3 MB/s) - 'update/complete.mar' saved [41606233/41606233] Using https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fr/release-localtest/default/default/default/update.xml?force=1 Downloading 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fr/release-localtest/default/default/default/update.xml?force=1' and placing in cache... Executing: ['wget.exe', '-O', 'update.xml', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fr/release-localtest/default/default/default/update.xml?force=1'] --2016-05-09 17:56:40-- https://aus4.mozilla.org/update/3/Thunderbird/38.7.0/20160310150025/WINNT_x86-msvc/fr/release-localtest/default/default/default/update.xml?force=1 Resolving aus4.mozilla.org (aus4.mozilla.org)... 63.245.213.46, 63.245.213.44, 63.245.213.45 Connecting to aus4.mozilla.org (aus4.mozilla.org)|63.245.213.46|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: Apache X-Backend-Server: aus6.webapp.phx1.mozilla.com Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0, private Content-Type: text/xml; charset=utf-8 Date: Tue, 10 May 2016 00:56:42 GMT Keep-Alive: timeout=5, max=958 Accept-Ranges: bytes Connection: Keep-Alive X-Cache-Info: caching Content-Length: 943 Length: 943 [text/xml] Saving to: 'update.xml' 0K 100% 2.90M=0s 2016-05-09 17:56:41 (2.90 MB/s) - 'update.xml' saved [943/943] Got this response: Downloading 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fr/thunderbird-38.8.0.complete.mar' and placing in cache... Executing: ['wget.exe', '-O', 'update/complete.mar', '--progress=dot:mega', '--server-response', '--no-check-certificate', 'http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fr/thunderbird-38.8.0.complete.mar'] --2016-05-09 17:56:41-- http://archive.mozilla.org/pub/thunderbird/candidates/38.8.0-candidates/build1/update/win32/fr/thunderbird-38.8.0.complete.mar Resolving archive.mozilla.org (archive.mozilla.org)... 52.84.242.143 Connecting to archive.mozilla.org (archive.mozilla.org)|52.84.242.143|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 41968104 Connection: keep-alive Date: Tue, 10 May 2016 00:38:01 GMT x-amz-replication-status: COMPLETED x-amz-version-id: 2vo_pS0MuOBH7ubcllgTca_arIl3KJLN Last-Modified: Tue, 03 May 2016 14:43:03 GMT ETag: "c3c3c836bc8bc20143ebb6542c2a9798" Accept-Ranges: bytes Server: AmazonS3 Age: 1121 X-Cache: Hit from cloudfront Via: 1.1 3344ddc09ccf1d185bb41add18940cc4.cloudfront.net (CloudFront) X-Amz-Cf-Id: g0vyYzfKhwYt7yTzKWnsjt1DswRzHNpL9xnoOsGEBnGKL9veOxHCiw== Length: 41968104 (40M) [application/octet-stream] Saving to: 'update/complete.mar' 0K ........ ........ ........ ........ ........ ........ 7% 4.24M 9s 3072K ........ ........ ........ ........ ........ ........ 14% 11.4M 6s 6144K ........ ........ ........ ........ ........ ........ 22% 16.1M 4s 9216K ........ ........ ........ ........ ........ ........ 29% 20.2M 3s 12288K ........ ........ ........ ........ ........ ........ 37% 27.9M 2s 15360K ........ ........ ........ ........ ........ ........ 44% 34.7M 2s 18432K ........ ........ ........ ........ ........ ........ 52% 37.6M 1s 21504K ........ ........ ........ ........ ........ ........ 59% 42.3M 1s 24576K ........ ........ ........ ........ ........ ........ 67% 47.3M 1s 27648K ........ ........ ........ ........ ........ ........ 74% 52.7M 1s 30720K ........ ........ ........ ........ ........ ........ 82% 51.8M 0s 33792K ........ ........ ........ ........ ........ ........ 89% 52.7M 0s 36864K ........ ........ ........ ........ ........ ........ 97% 52.0M 0s 39936K ........ ........ 100% 57.1M=2.0s 2016-05-09 17:56:43 (20.4 MB/s) - 'update/complete.mar' saved [41968104/41968104] command: END (2177.70s elapsed) Scanning log for failures ------------------------- + set +x FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/is/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/it/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ja/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ko/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/lt/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nb-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/nn-NO/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pa-IN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-BR/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/pt-PT/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/rm/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ro/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ru/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/si/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sl/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sq/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/sv-SE/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/ta-LK/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/tr/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/uk/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/vi/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-CN/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no complete update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 FAIL: no partial update found for https://aus4.mozilla.org/update/3/Thunderbird/45.0/20160407161913/WINNT_x86-msvc-x86/zh-TW/release-localtest/default/default/default/update.xml?force=1 FAIL: download_mars returned non-zero exit code: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 < var isSerious = (aErrNo == calIErrors.MODIFICATION_FAILED); > if (aErrNo == calIErrors.MODIFICATION_FAILED) { < const NS_ERROR_FAILURE = 2147500037; > var NS_ERROR_FAILURE = 2147500037; < const NS_BINDING_FAILED = generateNetFailure(1); > var NS_BINDING_FAILED = generateNetFailure(1); < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE, > notifyListener(Components.results.NS_ERROR_FAILURE, < return notifyListener(Components.results.NS_ERROR_FAILURE); > notifyListener(Components.results.NS_ERROR_FAILURE); FAIL: binary files found in diff FAIL: check_updates returned failure for WINNT_x86-msvc downloads/Thunderbird Setup 38.7.2.exe vs. downloads/Thunderbird Setup 45.1.0.exe: 1 ------------------------- This run has failed, see the above log program finished with exit code 1 elapsedTime=2203.756000 ========= master_lag: -0.02 ========= ========= Finished 'bash scripts/scripts/release/updates/chunked-verify.sh ...' failed (results: 2, elapsed: 36 mins, 43 secs) (at 2016-05-09 17:56:47.864534) ========= ========= Started no change (results: 0, elapsed: 0 secs) (at 2016-05-09 17:56:47.875416) ========= 'bash' '-c' 'for file in `ls -1`; do cat $file; done' in dir c:\builds\moz2_slave\tb-rel-c-esr45-w32_rel_u_v_2-0\properties (timeout 1200 secs) watching logfiles {} argv: ['bash', '-c', 'for file in `ls -1`; do cat $file; done'] environment: ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\cltbld\AppData\Roaming APR_ICONV_PATH=c:/mozilla-build/svn-win32-1.6.3/iconv BUILDBOTCUSTOM=https://hg.mozilla.org/build/buildbotcustom BUILDBOT_CONFIGS=https://hg.mozilla.org/build/buildbot-configs BUILDBOT_PATH=C:\mozilla-build\buildbotve CHOCOLATEYINSTALL=C:\ProgramData\chocolatey CLOBBERER_URL=https://api.pub.build.mozilla.org/clobberer/forceclobber COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files COMMONPROGRAMW6432=C:\Program Files\Common Files COMPUTERNAME=B-2008-SPOT-176 COMSPEC=C:\Windows\system32\cmd.exe CVS_RSH=ssh DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\ EDITOR=emacs.exe FP_NO_HOST_CHECK=NO GIT_SHARE_BASE_DIR=C:/mozilla-build/msys/builds/git-shared HG_SHARE_BASE_DIR=c:/builds/hg-shared HOME=c:/Users/cltbld HOMEDRIVE=C: HOMEPATH=\ HOSTTYPE=i686 IDLEIZER_HALT_ON_IDLE=true INPUTRC=C:/mozilla-build/msys/etc/inputrc LOCALAPPDATA=C:\Users\cltbld\AppData\Local LOG="c:\runner\buildbot-startup.log" LOGNAME=cltbld LOGONSERVER=\\B-2008-SPOT-176 MACHTYPE=i686-pc-msys MAKE_MODE=unix MOZBUILDDIR=C:\mozilla-build MOZILLABUILD=C:\mozilla-build MOZ_AUTOMATION=1 MOZ_CRASHREPORTER_NO_REPORT=1 MOZ_OBJDIR=objdir-tb MOZ_TOOLS=C:\mozilla-build\moztools-x64 MSYSTEM=MINGW32 NUMBER_OF_PROCESSORS=8 OLDPWD=c:/Users/cltbld OS=Windows_NT OSTYPE=msys OS_VERSION=2008 PATH=C:\mozilla-build\nsis-3.0b1;C:\mozilla-build\nsis-2.46u;C:\mozilla-build\python27;C:\mozilla-build\buildbotve\scripts;C:\mozilla-build\msys\local\bin;c:\mozilla-build\wget;c:\mozilla-build\7zip;c:\mozilla-build\blat261\full;c:\mozilla-build\python;c:\mozilla-build\svn-win32-1.6.3\bin;c:\mozilla-build\upx203w;c:\mozilla-build\emacs-24.3\bin;c:\mozilla-build\info-zip;c:\mozilla-build\nsis-2.46u;c:\mozilla-build\nsis-3.0a2;c:\mozilla-build\wix-351728;c:\mozilla-build\hg;c:\mozilla-build\python\Scripts;c:\mozilla-build\kdiff3;c:\mozilla-build\yasm;c:\mozilla-build\mozmake;.;C:\mozilla-build\msys\local\bin;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;c:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\facter\bin;c:\Program Files (x86)\Puppet Labs\Puppet\hiera\bin;c:\Program Files (x86)\Puppet Labs\Puppet\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\ruby\bin;c:\Program Files (x86)\Puppet Labs\Puppet\sys\tools\bin;c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Amazon\cfn-bootstrap\;c:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;c:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;c:\Program Files (x86)\Puppet Labs\Puppet\bin;C:\mozilla-build\msys\bin;c:\mozilla-build\python27\scripts;c:\mozilla-build\wget;c:\mozilla-build\info-zip;c:\mozilla-build;c:\mozilla-build\vim\vim72;c:\mozilla-build\python27;c:\mozilla-build\hg;c:\mozilla-build\buildbotve\Scripts;c:\ProgramData\chocolatey\bin;.;c:\opt\runner;c:\mozilla-build\buildbotve;c:\mozilla-build\python27;C:\mozilla-build\msys\mingw\bin;C:\mozilla-build\msys\bin;C:\mozilla-build\msys\local\bin;.;C:\mozilla-build\msys\local\bin;c:\mozilla-build\moztools-x64\bin;c:\mozilla-build\vim\vim72 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PDBSTR_PATH=/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe PROCESSOR_ARCHITECTURE=x86 PROCESSOR_ARCHITEW6432=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3e04 PROGRAMDATA=C:\ProgramData PROGRAMFILES=C:\Program Files (x86) PROGRAMFILES(X86)=C:\Program Files (x86) PROGRAMW6432=C:\Program Files PROMPT=$P$G PS1=\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\AWS Tools\PowerShell\ PUBLIC=C:\Users\Public PWD=c:/Users/cltbld RUNNER_CONFIG_CMD=C:\opt\runner\Scripts\python2.7.exe C:\opt\runner\Scripts\runner-script.py -c c:\opt\runner\runner.cfg SHELL=C:/mozilla-build/msys/bin/sh SHLVL=1 SSH_AGENT_PID=3740 SSH_AUTH_SOCK=C:/Users/cltbld/AppData/Local/Temp/ssh-NqCFaP3684/agent.3684 SYSTEMDRIVE=C: SYSTEMROOT=C:\Windows TEMP=C:/Users/cltbld/AppData/Local/Temp TERM=cygwin TINDERBOX_OUTPUT=1 TMP=C:/Users/cltbld/AppData/Local/Temp USERDOMAIN=B-2008-SPOT-176 USERNAME=cltbld USERPROFILE=C:\Users\cltbld VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ WINDIR=C:\Windows WINDOWS_TRACING_FLAGS=3 WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log WIX_351728_PATH=c:/mozilla-build/wix-351728 _=C:\mozilla-build\buildbotve\Scripts\python using PTY: False program finished with exit code 0 elapsedTime=0.107000 ========= master_lag: 0.18 ========= ========= Finished no change (results: 0, elapsed: 0 secs) (at 2016-05-09 17:56:48.159228) ========= ========= Total master_lag: 0.20 =========