mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
42ac5146bd
--HG-- rename : mobile/LICENSE => mobile/xul/LICENSE rename : mobile/Makefile.in => mobile/xul/Makefile.in rename : mobile/app/Makefile.in => mobile/xul/app/Makefile.in rename : mobile/app/android/drawable-hdpi/alertaddons.png => mobile/xul/app/android/drawable-hdpi/alertaddons.png rename : mobile/app/android/drawable-hdpi/alertdownloads.png => mobile/xul/app/android/drawable-hdpi/alertdownloads.png rename : mobile/app/android/drawable/alertaddons.png => mobile/xul/app/android/drawable/alertaddons.png rename : mobile/app/android/drawable/alertdownloads.png => mobile/xul/app/android/drawable/alertdownloads.png rename : mobile/app/application.ini => mobile/xul/app/application.ini rename : mobile/app/macbuild/Contents/Info.plist.in => mobile/xul/app/macbuild/Contents/Info.plist.in rename : mobile/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in => mobile/xul/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in rename : mobile/app/maemo/toolbar_splash.png => mobile/xul/app/maemo/toolbar_splash.png rename : mobile/app/mobile.ico => mobile/xul/app/mobile.ico rename : mobile/app/mobile.js => mobile/xul/app/mobile.js rename : mobile/app/nsBrowserApp.cpp => mobile/xul/app/nsBrowserApp.cpp rename : mobile/app/profile/extensions/Makefile.in => mobile/xul/app/profile/extensions/Makefile.in rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/chrome.manifest => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/chrome.manifest rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/content.js => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/content/content.js rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.js => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.js rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.xul => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.xul rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/defaults/preferences/preferences.js => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/defaults/preferences/preferences.js rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/install.rdf.in => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/install.rdf.in rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/beta-hdpi.png => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/skin/beta-hdpi.png rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/dino-32.png => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/skin/dino-32.png rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/happy-32.png => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/skin/happy-32.png rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/overlay.css => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/skin/overlay.css rename : mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/sad-32.png => mobile/xul/app/profile/extensions/feedback@mobile.mozilla.org/skin/sad-32.png rename : mobile/branding/aurora/Makefile.in => mobile/xul/branding/aurora/Makefile.in rename : mobile/branding/aurora/android-resources.mn => mobile/xul/branding/aurora/android-resources.mn rename : mobile/branding/aurora/configure.sh => mobile/xul/branding/aurora/configure.sh rename : mobile/branding/aurora/content/Makefile.in => mobile/xul/branding/aurora/content/Makefile.in rename : mobile/branding/aurora/content/about.png => mobile/xul/branding/aurora/content/about.png rename : mobile/branding/aurora/content/favicon32.png => mobile/xul/branding/aurora/content/favicon32.png rename : mobile/branding/aurora/content/fennec_26x26.png => mobile/xul/branding/aurora/content/fennec_26x26.png rename : mobile/branding/aurora/content/fennec_40x40.png => mobile/xul/branding/aurora/content/fennec_40x40.png rename : mobile/branding/aurora/content/fennec_48x48.png => mobile/xul/branding/aurora/content/fennec_48x48.png rename : mobile/branding/aurora/content/fennec_72x72.png => mobile/xul/branding/aurora/content/fennec_72x72.png rename : mobile/branding/aurora/content/fennec_maemo_icon26.txt => mobile/xul/branding/aurora/content/fennec_maemo_icon26.txt rename : mobile/branding/aurora/content/fennec_scalable.png => mobile/xul/branding/aurora/content/fennec_scalable.png rename : mobile/branding/aurora/content/jar.mn => mobile/xul/branding/aurora/content/jar.mn rename : mobile/branding/aurora/content/logo.png => mobile/xul/branding/aurora/content/logo.png rename : mobile/branding/aurora/content/logoWordmark.png => mobile/xul/branding/aurora/content/logoWordmark.png rename : mobile/branding/aurora/content/splash.png => mobile/xul/branding/aurora/content/splash.png rename : mobile/branding/aurora/content/splash_v8.9.png => mobile/xul/branding/aurora/content/splash_v8.9.png rename : mobile/branding/aurora/content/splash_v9.9.png => mobile/xul/branding/aurora/content/splash_v9.9.png rename : mobile/branding/aurora/locales/Makefile.in => mobile/xul/branding/aurora/locales/Makefile.in rename : mobile/branding/aurora/locales/en-US/brand.dtd => mobile/xul/branding/aurora/locales/en-US/brand.dtd rename : mobile/branding/aurora/locales/en-US/brand.properties => mobile/xul/branding/aurora/locales/en-US/brand.properties rename : mobile/branding/aurora/locales/jar.mn => mobile/xul/branding/aurora/locales/jar.mn rename : mobile/branding/beta/Makefile.in => mobile/xul/branding/beta/Makefile.in rename : mobile/branding/beta/android-resources.mn => mobile/xul/branding/beta/android-resources.mn rename : mobile/branding/beta/configure.sh => mobile/xul/branding/beta/configure.sh rename : mobile/branding/beta/content/Makefile.in => mobile/xul/branding/beta/content/Makefile.in rename : mobile/branding/beta/content/about.png => mobile/xul/branding/beta/content/about.png rename : mobile/branding/beta/content/favicon32.png => mobile/xul/branding/beta/content/favicon32.png rename : mobile/branding/beta/content/fennec_26x26.png => mobile/xul/branding/beta/content/fennec_26x26.png rename : mobile/branding/beta/content/fennec_40x40.png => mobile/xul/branding/beta/content/fennec_40x40.png rename : mobile/branding/beta/content/fennec_48x48.png => mobile/xul/branding/beta/content/fennec_48x48.png rename : mobile/branding/beta/content/fennec_72x72.png => mobile/xul/branding/beta/content/fennec_72x72.png rename : mobile/branding/beta/content/fennec_maemo_icon26.txt => mobile/xul/branding/beta/content/fennec_maemo_icon26.txt rename : mobile/branding/beta/content/fennec_scalable.png => mobile/xul/branding/beta/content/fennec_scalable.png rename : mobile/branding/beta/content/jar.mn => mobile/xul/branding/beta/content/jar.mn rename : mobile/branding/beta/content/logo.png => mobile/xul/branding/beta/content/logo.png rename : mobile/branding/beta/content/logoWordmark.png => mobile/xul/branding/beta/content/logoWordmark.png rename : mobile/branding/beta/content/splash.png => mobile/xul/branding/beta/content/splash.png rename : mobile/branding/beta/content/splash_v8.9.png => mobile/xul/branding/beta/content/splash_v8.9.png rename : mobile/branding/beta/content/splash_v9.9.png => mobile/xul/branding/beta/content/splash_v9.9.png rename : mobile/branding/beta/locales/Makefile.in => mobile/xul/branding/beta/locales/Makefile.in rename : mobile/branding/beta/locales/en-US/brand.dtd => mobile/xul/branding/beta/locales/en-US/brand.dtd rename : mobile/branding/beta/locales/en-US/brand.properties => mobile/xul/branding/beta/locales/en-US/brand.properties rename : mobile/branding/beta/locales/jar.mn => mobile/xul/branding/beta/locales/jar.mn rename : mobile/branding/nightly/Makefile.in => mobile/xul/branding/nightly/Makefile.in rename : mobile/branding/nightly/android-resources.mn => mobile/xul/branding/nightly/android-resources.mn rename : mobile/branding/nightly/configure.sh => mobile/xul/branding/nightly/configure.sh rename : mobile/branding/nightly/content/Makefile.in => mobile/xul/branding/nightly/content/Makefile.in rename : mobile/branding/nightly/content/about.png => mobile/xul/branding/nightly/content/about.png rename : mobile/branding/nightly/content/favicon32.png => mobile/xul/branding/nightly/content/favicon32.png rename : mobile/branding/nightly/content/fennec_26x26.png => mobile/xul/branding/nightly/content/fennec_26x26.png rename : mobile/branding/nightly/content/fennec_40x40.png => mobile/xul/branding/nightly/content/fennec_40x40.png rename : mobile/branding/nightly/content/fennec_48x48.png => mobile/xul/branding/nightly/content/fennec_48x48.png rename : mobile/branding/nightly/content/fennec_72x72.png => mobile/xul/branding/nightly/content/fennec_72x72.png rename : mobile/branding/nightly/content/fennec_maemo_icon26.txt => mobile/xul/branding/nightly/content/fennec_maemo_icon26.txt rename : mobile/branding/nightly/content/fennec_scalable.png => mobile/xul/branding/nightly/content/fennec_scalable.png rename : mobile/branding/nightly/content/jar.mn => mobile/xul/branding/nightly/content/jar.mn rename : mobile/branding/nightly/content/logo.png => mobile/xul/branding/nightly/content/logo.png rename : mobile/branding/nightly/content/logoWordmark.png => mobile/xul/branding/nightly/content/logoWordmark.png rename : mobile/branding/nightly/content/splash.png => mobile/xul/branding/nightly/content/splash.png rename : mobile/branding/nightly/content/splash_v8.9.png => mobile/xul/branding/nightly/content/splash_v8.9.png rename : mobile/branding/nightly/content/splash_v9.9.png => mobile/xul/branding/nightly/content/splash_v9.9.png rename : mobile/branding/nightly/locales/Makefile.in => mobile/xul/branding/nightly/locales/Makefile.in rename : mobile/branding/nightly/locales/en-US/brand.dtd => mobile/xul/branding/nightly/locales/en-US/brand.dtd rename : mobile/branding/nightly/locales/en-US/brand.properties => mobile/xul/branding/nightly/locales/en-US/brand.properties rename : mobile/branding/nightly/locales/jar.mn => mobile/xul/branding/nightly/locales/jar.mn rename : mobile/branding/official/Makefile.in => mobile/xul/branding/official/Makefile.in rename : mobile/branding/official/android-resources.mn => mobile/xul/branding/official/android-resources.mn rename : mobile/branding/official/configure.sh => mobile/xul/branding/official/configure.sh rename : mobile/branding/official/content/Makefile.in => mobile/xul/branding/official/content/Makefile.in rename : mobile/branding/official/content/about.png => mobile/xul/branding/official/content/about.png rename : mobile/branding/official/content/favicon32.png => mobile/xul/branding/official/content/favicon32.png rename : mobile/branding/official/content/fennec_26x26.png => mobile/xul/branding/official/content/fennec_26x26.png rename : mobile/branding/official/content/fennec_40x40.png => mobile/xul/branding/official/content/fennec_40x40.png rename : mobile/branding/official/content/fennec_48x48.png => mobile/xul/branding/official/content/fennec_48x48.png rename : mobile/branding/official/content/fennec_72x72.png => mobile/xul/branding/official/content/fennec_72x72.png rename : mobile/branding/official/content/fennec_maemo_icon26.txt => mobile/xul/branding/official/content/fennec_maemo_icon26.txt rename : mobile/branding/official/content/fennec_scalable.png => mobile/xul/branding/official/content/fennec_scalable.png rename : mobile/branding/official/content/jar.mn => mobile/xul/branding/official/content/jar.mn rename : mobile/branding/official/content/logo.png => mobile/xul/branding/official/content/logo.png rename : mobile/branding/official/content/logoWordmark.png => mobile/xul/branding/official/content/logoWordmark.png rename : mobile/branding/official/content/splash.png => mobile/xul/branding/official/content/splash.png rename : mobile/branding/official/content/splash_v8.9.png => mobile/xul/branding/official/content/splash_v8.9.png rename : mobile/branding/official/content/splash_v9.9.png => mobile/xul/branding/official/content/splash_v9.9.png rename : mobile/branding/official/locales/Makefile.in => mobile/xul/branding/official/locales/Makefile.in rename : mobile/branding/official/locales/en-US/brand.dtd => mobile/xul/branding/official/locales/en-US/brand.dtd rename : mobile/branding/official/locales/en-US/brand.properties => mobile/xul/branding/official/locales/en-US/brand.properties rename : mobile/branding/official/locales/jar.mn => mobile/xul/branding/official/locales/jar.mn rename : mobile/branding/unofficial/Makefile.in => mobile/xul/branding/unofficial/Makefile.in rename : mobile/branding/unofficial/android-resources.mn => mobile/xul/branding/unofficial/android-resources.mn rename : mobile/branding/unofficial/configure.sh => mobile/xul/branding/unofficial/configure.sh rename : mobile/branding/unofficial/content/Makefile.in => mobile/xul/branding/unofficial/content/Makefile.in rename : mobile/branding/unofficial/content/about.png => mobile/xul/branding/unofficial/content/about.png rename : mobile/branding/unofficial/content/favicon32.png => mobile/xul/branding/unofficial/content/favicon32.png rename : mobile/branding/unofficial/content/fennec_26x26.png => mobile/xul/branding/unofficial/content/fennec_26x26.png rename : mobile/branding/unofficial/content/fennec_40x40.png => mobile/xul/branding/unofficial/content/fennec_40x40.png rename : mobile/branding/unofficial/content/fennec_48x48.png => mobile/xul/branding/unofficial/content/fennec_48x48.png rename : mobile/branding/unofficial/content/fennec_72x72.png => mobile/xul/branding/unofficial/content/fennec_72x72.png rename : mobile/branding/unofficial/content/fennec_maemo_icon26.txt => mobile/xul/branding/unofficial/content/fennec_maemo_icon26.txt rename : mobile/branding/unofficial/content/fennec_scalable.png => mobile/xul/branding/unofficial/content/fennec_scalable.png rename : mobile/branding/unofficial/content/jar.mn => mobile/xul/branding/unofficial/content/jar.mn rename : mobile/branding/unofficial/content/logo.png => mobile/xul/branding/unofficial/content/logo.png rename : mobile/branding/unofficial/content/logoWordmark.png => mobile/xul/branding/unofficial/content/logoWordmark.png rename : mobile/branding/unofficial/content/splash.png => mobile/xul/branding/unofficial/content/splash.png rename : mobile/branding/unofficial/content/splash_v8.9.png => mobile/xul/branding/unofficial/content/splash_v8.9.png rename : mobile/branding/unofficial/content/splash_v9.9.png => mobile/xul/branding/unofficial/content/splash_v9.9.png rename : mobile/branding/unofficial/locales/Makefile.in => mobile/xul/branding/unofficial/locales/Makefile.in rename : mobile/branding/unofficial/locales/en-US/brand.dtd => mobile/xul/branding/unofficial/locales/en-US/brand.dtd rename : mobile/branding/unofficial/locales/en-US/brand.properties => mobile/xul/branding/unofficial/locales/en-US/brand.properties rename : mobile/branding/unofficial/locales/jar.mn => mobile/xul/branding/unofficial/locales/jar.mn rename : mobile/build.mk => mobile/xul/build.mk rename : mobile/chrome/Makefile.in => mobile/xul/chrome/Makefile.in rename : mobile/chrome/content/AlertsHelper.js => mobile/xul/chrome/content/AlertsHelper.js rename : mobile/chrome/content/AnimatedZoom.js => mobile/xul/chrome/content/AnimatedZoom.js rename : mobile/chrome/content/AppMenu.js => mobile/xul/chrome/content/AppMenu.js rename : mobile/chrome/content/AwesomePanel.js => mobile/xul/chrome/content/AwesomePanel.js rename : mobile/chrome/content/BookmarkHelper.js => mobile/xul/chrome/content/BookmarkHelper.js rename : mobile/chrome/content/BookmarkPopup.js => mobile/xul/chrome/content/BookmarkPopup.js rename : mobile/chrome/content/CaptureDialog.js => mobile/xul/chrome/content/CaptureDialog.js rename : mobile/chrome/content/CaptureDialog.xul => mobile/xul/chrome/content/CaptureDialog.xul rename : mobile/chrome/content/CapturePickerUI.js => mobile/xul/chrome/content/CapturePickerUI.js rename : mobile/chrome/content/CharsetMenu.js => mobile/xul/chrome/content/CharsetMenu.js rename : mobile/chrome/content/ContentPopupHelper.js => mobile/xul/chrome/content/ContentPopupHelper.js rename : mobile/chrome/content/ContextCommands.js => mobile/xul/chrome/content/ContextCommands.js rename : mobile/chrome/content/IndexedDB.js => mobile/xul/chrome/content/IndexedDB.js rename : mobile/chrome/content/LoginManagerChild.js => mobile/xul/chrome/content/LoginManagerChild.js rename : mobile/chrome/content/MasterPasswordUI.js => mobile/xul/chrome/content/MasterPasswordUI.js rename : mobile/chrome/content/MenuListHelperUI.js => mobile/xul/chrome/content/MenuListHelperUI.js rename : mobile/chrome/content/OfflineApps.js => mobile/xul/chrome/content/OfflineApps.js rename : mobile/chrome/content/PageActions.js => mobile/xul/chrome/content/PageActions.js rename : mobile/chrome/content/SelectHelperUI.js => mobile/xul/chrome/content/SelectHelperUI.js rename : mobile/chrome/content/SelectionHelper.js => mobile/xul/chrome/content/SelectionHelper.js rename : mobile/chrome/content/SharingUI.js => mobile/xul/chrome/content/SharingUI.js rename : mobile/chrome/content/TabletSidebar.js => mobile/xul/chrome/content/TabletSidebar.js rename : mobile/chrome/content/TabsPopup.js => mobile/xul/chrome/content/TabsPopup.js rename : mobile/chrome/content/Util.js => mobile/xul/chrome/content/Util.js rename : mobile/chrome/content/WebappsUI.js => mobile/xul/chrome/content/WebappsUI.js rename : mobile/chrome/content/about.xhtml => mobile/xul/chrome/content/about.xhtml rename : mobile/chrome/content/aboutCertError.xhtml => mobile/xul/chrome/content/aboutCertError.xhtml rename : mobile/chrome/content/aboutHome.xhtml => mobile/xul/chrome/content/aboutHome.xhtml rename : mobile/chrome/content/aboutRights.xhtml => mobile/xul/chrome/content/aboutRights.xhtml rename : mobile/chrome/content/bindings.xml => mobile/xul/chrome/content/bindings.xml rename : mobile/chrome/content/bindings/arrowbox.xml => mobile/xul/chrome/content/bindings/arrowbox.xml rename : mobile/chrome/content/bindings/browser.js => mobile/xul/chrome/content/bindings/browser.js rename : mobile/chrome/content/bindings/browser.xml => mobile/xul/chrome/content/bindings/browser.xml rename : mobile/chrome/content/bindings/checkbox.xml => mobile/xul/chrome/content/bindings/checkbox.xml rename : mobile/chrome/content/bindings/console.xml => mobile/xul/chrome/content/bindings/console.xml rename : mobile/chrome/content/bindings/dialog.xml => mobile/xul/chrome/content/bindings/dialog.xml rename : mobile/chrome/content/bindings/downloads.xml => mobile/xul/chrome/content/bindings/downloads.xml rename : mobile/chrome/content/bindings/extensions.xml => mobile/xul/chrome/content/bindings/extensions.xml rename : mobile/chrome/content/bindings/pageaction.xml => mobile/xul/chrome/content/bindings/pageaction.xml rename : mobile/chrome/content/blockedSite.xhtml => mobile/xul/chrome/content/blockedSite.xhtml rename : mobile/chrome/content/browser-scripts.js => mobile/xul/chrome/content/browser-scripts.js rename : mobile/chrome/content/browser-ui.js => mobile/xul/chrome/content/browser-ui.js rename : mobile/chrome/content/browser.css => mobile/xul/chrome/content/browser.css rename : mobile/chrome/content/browser.js => mobile/xul/chrome/content/browser.js rename : mobile/chrome/content/browser.xul => mobile/xul/chrome/content/browser.xul rename : mobile/chrome/content/commandUtil.js => mobile/xul/chrome/content/commandUtil.js rename : mobile/chrome/content/common-ui.js => mobile/xul/chrome/content/common-ui.js rename : mobile/chrome/content/config.js => mobile/xul/chrome/content/config.js rename : mobile/chrome/content/config.xul => mobile/xul/chrome/content/config.xul rename : mobile/chrome/content/console.js => mobile/xul/chrome/content/console.js rename : mobile/chrome/content/content.js => mobile/xul/chrome/content/content.js rename : mobile/chrome/content/cursor.css => mobile/xul/chrome/content/cursor.css rename : mobile/chrome/content/downloads.js => mobile/xul/chrome/content/downloads.js rename : mobile/chrome/content/exceptions.js => mobile/xul/chrome/content/exceptions.js rename : mobile/chrome/content/extensions.js => mobile/xul/chrome/content/extensions.js rename : mobile/chrome/content/forms.js => mobile/xul/chrome/content/forms.js rename : mobile/chrome/content/fullscreen-video.js => mobile/xul/chrome/content/fullscreen-video.js rename : mobile/chrome/content/fullscreen-video.xhtml => mobile/xul/chrome/content/fullscreen-video.xhtml rename : mobile/chrome/content/input.js => mobile/xul/chrome/content/input.js rename : mobile/chrome/content/languages.properties => mobile/xul/chrome/content/languages.properties rename : mobile/chrome/content/localePicker.js => mobile/xul/chrome/content/localePicker.js rename : mobile/chrome/content/localePicker.xul => mobile/xul/chrome/content/localePicker.xul rename : mobile/chrome/content/masterPassword.xul => mobile/xul/chrome/content/masterPassword.xul rename : mobile/chrome/content/netError.xhtml => mobile/xul/chrome/content/netError.xhtml rename : mobile/chrome/content/notification.xml => mobile/xul/chrome/content/notification.xml rename : mobile/chrome/content/preferences.js => mobile/xul/chrome/content/preferences.js rename : mobile/chrome/content/prompt/alert.xul => mobile/xul/chrome/content/prompt/alert.xul rename : mobile/chrome/content/prompt/confirm.xul => mobile/xul/chrome/content/prompt/confirm.xul rename : mobile/chrome/content/prompt/prompt.js => mobile/xul/chrome/content/prompt/prompt.js rename : mobile/chrome/content/prompt/prompt.xul => mobile/xul/chrome/content/prompt/prompt.xul rename : mobile/chrome/content/prompt/promptPassword.xul => mobile/xul/chrome/content/prompt/promptPassword.xul rename : mobile/chrome/content/prompt/select.xul => mobile/xul/chrome/content/prompt/select.xul rename : mobile/chrome/content/removeMasterPassword.xul => mobile/xul/chrome/content/removeMasterPassword.xul rename : mobile/chrome/content/sanitize.js => mobile/xul/chrome/content/sanitize.js rename : mobile/chrome/content/share.xul => mobile/xul/chrome/content/share.xul rename : mobile/chrome/content/sync.js => mobile/xul/chrome/content/sync.js rename : mobile/chrome/content/tabs.xml => mobile/xul/chrome/content/tabs.xml rename : mobile/chrome/content/webapps.xul => mobile/xul/chrome/content/webapps.xul rename : mobile/chrome/jar.mn => mobile/xul/chrome/jar.mn rename : mobile/chrome/tests/Makefile.in => mobile/xul/chrome/tests/Makefile.in rename : mobile/chrome/tests/addons/browser_install1_1/bootstrap.js => mobile/xul/chrome/tests/addons/browser_install1_1/bootstrap.js rename : mobile/chrome/tests/addons/browser_install1_1/install.rdf => mobile/xul/chrome/tests/addons/browser_install1_1/install.rdf rename : mobile/chrome/tests/addons/browser_install1_2/install.rdf => mobile/xul/chrome/tests/addons/browser_install1_2/install.rdf rename : mobile/chrome/tests/addons/browser_install1_3/install.rdf => mobile/xul/chrome/tests/addons/browser_install1_3/install.rdf rename : mobile/chrome/tests/addons/browser_locale1/boostrap.js => mobile/xul/chrome/tests/addons/browser_locale1/boostrap.js rename : mobile/chrome/tests/addons/browser_locale1/chrome.manifest => mobile/xul/chrome/tests/addons/browser_locale1/chrome.manifest rename : mobile/chrome/tests/addons/browser_locale1/install.rdf => mobile/xul/chrome/tests/addons/browser_locale1/install.rdf rename : mobile/chrome/tests/browser_addons.js => mobile/xul/chrome/tests/browser_addons.js rename : mobile/chrome/tests/browser_addons_locales.js => mobile/xul/chrome/tests/browser_addons_locales.js rename : mobile/chrome/tests/browser_appmenu.js => mobile/xul/chrome/tests/browser_appmenu.js rename : mobile/chrome/tests/browser_autocomplete.html => mobile/xul/chrome/tests/browser_autocomplete.html rename : mobile/chrome/tests/browser_autocomplete.js => mobile/xul/chrome/tests/browser_autocomplete.js rename : mobile/chrome/tests/browser_autocompletesearch.js => mobile/xul/chrome/tests/browser_autocompletesearch.js rename : mobile/chrome/tests/browser_awesomescreen.js => mobile/xul/chrome/tests/browser_awesomescreen.js rename : mobile/chrome/tests/browser_blank_01.html => mobile/xul/chrome/tests/browser_blank_01.html rename : mobile/chrome/tests/browser_blank_02.html => mobile/xul/chrome/tests/browser_blank_02.html rename : mobile/chrome/tests/browser_blank_03.html => mobile/xul/chrome/tests/browser_blank_03.html rename : mobile/chrome/tests/browser_bookmarks.js => mobile/xul/chrome/tests/browser_bookmarks.js rename : mobile/chrome/tests/browser_bookmarks_star.js => mobile/xul/chrome/tests/browser_bookmarks_star.js rename : mobile/chrome/tests/browser_bookmarks_tags.js => mobile/xul/chrome/tests/browser_bookmarks_tags.js rename : mobile/chrome/tests/browser_click_content.html => mobile/xul/chrome/tests/browser_click_content.html rename : mobile/chrome/tests/browser_click_content.js => mobile/xul/chrome/tests/browser_click_content.js rename : mobile/chrome/tests/browser_contacts.js => mobile/xul/chrome/tests/browser_contacts.js rename : mobile/chrome/tests/browser_contentpopup.html => mobile/xul/chrome/tests/browser_contentpopup.html rename : mobile/chrome/tests/browser_contentpopup.js => mobile/xul/chrome/tests/browser_contentpopup.js rename : mobile/chrome/tests/browser_dragger.js => mobile/xul/chrome/tests/browser_dragger.js rename : mobile/chrome/tests/browser_escape.js => mobile/xul/chrome/tests/browser_escape.js rename : mobile/chrome/tests/browser_find.js => mobile/xul/chrome/tests/browser_find.js rename : mobile/chrome/tests/browser_focus.html => mobile/xul/chrome/tests/browser_focus.html rename : mobile/chrome/tests/browser_focus.js => mobile/xul/chrome/tests/browser_focus.js rename : mobile/chrome/tests/browser_forms.html => mobile/xul/chrome/tests/browser_forms.html rename : mobile/chrome/tests/browser_forms.js => mobile/xul/chrome/tests/browser_forms.js rename : mobile/chrome/tests/browser_formsZoom.html => mobile/xul/chrome/tests/browser_formsZoom.html rename : mobile/chrome/tests/browser_formsZoom.js => mobile/xul/chrome/tests/browser_formsZoom.js rename : mobile/chrome/tests/browser_history.js => mobile/xul/chrome/tests/browser_history.js rename : mobile/chrome/tests/browser_install.xml => mobile/xul/chrome/tests/browser_install.xml rename : mobile/chrome/tests/browser_localepicker.js => mobile/xul/chrome/tests/browser_localepicker.js rename : mobile/chrome/tests/browser_localepicker_escape.js => mobile/xul/chrome/tests/browser_localepicker_escape.js rename : mobile/chrome/tests/browser_localerepository.js => mobile/xul/chrome/tests/browser_localerepository.js rename : mobile/chrome/tests/browser_localerepository_buildid.js => mobile/xul/chrome/tests/browser_localerepository_buildid.js rename : mobile/chrome/tests/browser_localerepository_pref.js => mobile/xul/chrome/tests/browser_localerepository_pref.js rename : mobile/chrome/tests/browser_mainui.js => mobile/xul/chrome/tests/browser_mainui.js rename : mobile/chrome/tests/browser_navigation.js => mobile/xul/chrome/tests/browser_navigation.js rename : mobile/chrome/tests/browser_preferences_fulltoggle.js => mobile/xul/chrome/tests/browser_preferences_fulltoggle.js rename : mobile/chrome/tests/browser_preferences_text.js => mobile/xul/chrome/tests/browser_preferences_text.js rename : mobile/chrome/tests/browser_rect.js => mobile/xul/chrome/tests/browser_rect.js rename : mobile/chrome/tests/browser_rememberPassword.js => mobile/xul/chrome/tests/browser_rememberPassword.js rename : mobile/chrome/tests/browser_scroll.html => mobile/xul/chrome/tests/browser_scroll.html rename : mobile/chrome/tests/browser_scroll.js => mobile/xul/chrome/tests/browser_scroll.js rename : mobile/chrome/tests/browser_scrollbar.js => mobile/xul/chrome/tests/browser_scrollbar.js rename : mobile/chrome/tests/browser_scrollbar.sjs => mobile/xul/chrome/tests/browser_scrollbar.sjs rename : mobile/chrome/tests/browser_select.html => mobile/xul/chrome/tests/browser_select.html rename : mobile/chrome/tests/browser_select.js => mobile/xul/chrome/tests/browser_select.js rename : mobile/chrome/tests/browser_sessionstore.js => mobile/xul/chrome/tests/browser_sessionstore.js rename : mobile/chrome/tests/browser_sidebars.js => mobile/xul/chrome/tests/browser_sidebars.js rename : mobile/chrome/tests/browser_tabs.js => mobile/xul/chrome/tests/browser_tabs.js rename : mobile/chrome/tests/browser_tap_content.html => mobile/xul/chrome/tests/browser_tap_content.html rename : mobile/chrome/tests/browser_tap_contentedit.html => mobile/xul/chrome/tests/browser_tap_contentedit.html rename : mobile/chrome/tests/browser_tapping.js => mobile/xul/chrome/tests/browser_tapping.js rename : mobile/chrome/tests/browser_tapping_edit.js => mobile/xul/chrome/tests/browser_tapping_edit.js rename : mobile/chrome/tests/browser_test.js => mobile/xul/chrome/tests/browser_test.js rename : mobile/chrome/tests/browser_thumbnails.js => mobile/xul/chrome/tests/browser_thumbnails.js rename : mobile/chrome/tests/browser_title.sjs => mobile/xul/chrome/tests/browser_title.sjs rename : mobile/chrome/tests/browser_upgrade.rdf => mobile/xul/chrome/tests/browser_upgrade.rdf rename : mobile/chrome/tests/browser_viewport.js => mobile/xul/chrome/tests/browser_viewport.js rename : mobile/chrome/tests/browser_viewport.sjs => mobile/xul/chrome/tests/browser_viewport.sjs rename : mobile/chrome/tests/browser_vkb.js => mobile/xul/chrome/tests/browser_vkb.js rename : mobile/chrome/tests/head.js => mobile/xul/chrome/tests/head.js rename : mobile/chrome/tests/locales_list.sjs => mobile/xul/chrome/tests/locales_list.sjs rename : mobile/chrome/tests/mock_autocomplete.json => mobile/xul/chrome/tests/mock_autocomplete.json rename : mobile/chrome/tests/remote_autocomplete.js => mobile/xul/chrome/tests/remote_autocomplete.js rename : mobile/chrome/tests/remote_contentpopup.js => mobile/xul/chrome/tests/remote_contentpopup.js rename : mobile/chrome/tests/remote_focus.js => mobile/xul/chrome/tests/remote_focus.js rename : mobile/chrome/tests/remote_forms.js => mobile/xul/chrome/tests/remote_forms.js rename : mobile/chrome/tests/remote_formsZoom.js => mobile/xul/chrome/tests/remote_formsZoom.js rename : mobile/chrome/tests/remote_head.js => mobile/xul/chrome/tests/remote_head.js rename : mobile/chrome/tests/remote_vkb.js => mobile/xul/chrome/tests/remote_vkb.js rename : mobile/components/AboutRedirector.js => mobile/xul/components/AboutRedirector.js rename : mobile/components/AddonUpdateService.js => mobile/xul/components/AddonUpdateService.js rename : mobile/components/AlertsService.js => mobile/xul/components/AlertsService.js rename : mobile/components/AutoCompleteCache.js => mobile/xul/components/AutoCompleteCache.js rename : mobile/components/BlocklistPrompt.js => mobile/xul/components/BlocklistPrompt.js rename : mobile/components/BrowserCLH.js => mobile/xul/components/BrowserCLH.js rename : mobile/components/BrowserStartup.js => mobile/xul/components/BrowserStartup.js rename : mobile/components/CapturePicker.js => mobile/xul/components/CapturePicker.js rename : mobile/components/ContentDispatchChooser.js => mobile/xul/components/ContentDispatchChooser.js rename : mobile/components/ContentPermissionPrompt.js => mobile/xul/components/ContentPermissionPrompt.js rename : mobile/components/DirectoryProvider.js => mobile/xul/components/DirectoryProvider.js rename : mobile/components/DownloadManagerUI.js => mobile/xul/components/DownloadManagerUI.js rename : mobile/components/FormAutoComplete.js => mobile/xul/components/FormAutoComplete.js rename : mobile/components/HelperAppDialog.js => mobile/xul/components/HelperAppDialog.js rename : mobile/components/LoginManager.js => mobile/xul/components/LoginManager.js rename : mobile/components/LoginManagerPrompter.idl => mobile/xul/components/LoginManagerPrompter.idl rename : mobile/components/LoginManagerPrompter.js => mobile/xul/components/LoginManagerPrompter.js rename : mobile/components/Makefile.in => mobile/xul/components/Makefile.in rename : mobile/components/MobileComponents.manifest => mobile/xul/components/MobileComponents.manifest rename : mobile/components/PromptService.js => mobile/xul/components/PromptService.js rename : mobile/components/SafeBrowsing.js => mobile/xul/components/SafeBrowsing.js rename : mobile/components/SessionStore.idl => mobile/xul/components/SessionStore.idl rename : mobile/components/SessionStore.js => mobile/xul/components/SessionStore.js rename : mobile/components/Sidebar.js => mobile/xul/components/Sidebar.js rename : mobile/components/UpdatePrompt.js => mobile/xul/components/UpdatePrompt.js rename : mobile/components/XPIDialogService.js => mobile/xul/components/XPIDialogService.js rename : mobile/components/build/Makefile.in => mobile/xul/components/build/Makefile.in rename : mobile/components/build/nsBrowserComponents.h => mobile/xul/components/build/nsBrowserComponents.h rename : mobile/components/build/nsBrowserModule.cpp => mobile/xul/components/build/nsBrowserModule.cpp rename : mobile/components/build/nsIShellService.idl => mobile/xul/components/build/nsIShellService.idl rename : mobile/components/build/nsShellService.cpp => mobile/xul/components/build/nsShellService.cpp rename : mobile/components/build/nsShellService.h => mobile/xul/components/build/nsShellService.h rename : mobile/config/mozconfigs/android/debug => mobile/xul/config/mozconfigs/android/debug rename : mobile/config/mozconfigs/android/nightly => mobile/xul/config/mozconfigs/android/nightly rename : mobile/config/mozconfigs/linux-desktop/l10n-mozconfig => mobile/xul/config/mozconfigs/linux-desktop/l10n-mozconfig rename : mobile/config/mozconfigs/linux-desktop/nightly => mobile/xul/config/mozconfigs/linux-desktop/nightly rename : mobile/config/mozconfigs/macosx-desktop/l10n-mozconfig => mobile/xul/config/mozconfigs/macosx-desktop/l10n-mozconfig rename : mobile/config/mozconfigs/macosx-desktop/nightly => mobile/xul/config/mozconfigs/macosx-desktop/nightly rename : mobile/config/mozconfigs/win32-desktop/l10n-mozconfig => mobile/xul/config/mozconfigs/win32-desktop/l10n-mozconfig rename : mobile/config/mozconfigs/win32-desktop/nightly => mobile/xul/config/mozconfigs/win32-desktop/nightly rename : mobile/confvars.sh => mobile/xul/confvars.sh rename : mobile/installer/Makefile.in => mobile/xul/installer/Makefile.in rename : mobile/installer/debian/backup.in => mobile/xul/installer/debian/backup.in rename : mobile/installer/debian/changelog.in => mobile/xul/installer/debian/changelog.in rename : mobile/installer/debian/compat.in => mobile/xul/installer/debian/compat.in rename : mobile/installer/debian/control.in => mobile/xul/installer/debian/control.in rename : mobile/installer/debian/fennec-cud.sh.in => mobile/xul/installer/debian/fennec-cud.sh.in rename : mobile/installer/debian/fennec-rfs.sh.in => mobile/xul/installer/debian/fennec-rfs.sh.in rename : mobile/installer/debian/fennec.aegis.in => mobile/xul/installer/debian/fennec.aegis.in rename : mobile/installer/debian/fennec.conf.in => mobile/xul/installer/debian/fennec.conf.in rename : mobile/installer/debian/fennec.desktop.in => mobile/xul/installer/debian/fennec.desktop.in rename : mobile/installer/debian/fennec.links.in => mobile/xul/installer/debian/fennec.links.in rename : mobile/installer/debian/fennec.policy.in => mobile/xul/installer/debian/fennec.policy.in rename : mobile/installer/debian/fennec.postinst.in => mobile/xul/installer/debian/fennec.postinst.in rename : mobile/installer/debian/fennec.preinst.in => mobile/xul/installer/debian/fennec.preinst.in rename : mobile/installer/debian/fennec.prerm.in => mobile/xul/installer/debian/fennec.prerm.in rename : mobile/installer/debian/fennec.service.in => mobile/xul/installer/debian/fennec.service.in rename : mobile/installer/debian/files.in => mobile/xul/installer/debian/files.in rename : mobile/installer/debian/menu.in => mobile/xul/installer/debian/menu.in rename : mobile/installer/debian/restore.in => mobile/xul/installer/debian/restore.in rename : mobile/installer/mobile-l10n.js => mobile/xul/installer/mobile-l10n.js rename : mobile/installer/package-manifest.in => mobile/xul/installer/package-manifest.in rename : mobile/installer/removed-files.in => mobile/xul/installer/removed-files.in rename : mobile/locales/Makefile.in => mobile/xul/locales/Makefile.in rename : mobile/locales/all-locales => mobile/xul/locales/all-locales rename : mobile/locales/en-US/chrome/about.dtd => mobile/xul/locales/en-US/chrome/about.dtd rename : mobile/locales/en-US/chrome/aboutCertError.dtd => mobile/xul/locales/en-US/chrome/aboutCertError.dtd rename : mobile/locales/en-US/chrome/aboutHome.dtd => mobile/xul/locales/en-US/chrome/aboutHome.dtd rename : mobile/locales/en-US/chrome/browser.dtd => mobile/xul/locales/en-US/chrome/browser.dtd rename : mobile/locales/en-US/chrome/browser.properties => mobile/xul/locales/en-US/chrome/browser.properties rename : mobile/locales/en-US/chrome/checkbox.dtd => mobile/xul/locales/en-US/chrome/checkbox.dtd rename : mobile/locales/en-US/chrome/config.dtd => mobile/xul/locales/en-US/chrome/config.dtd rename : mobile/locales/en-US/chrome/feedback.dtd => mobile/xul/locales/en-US/chrome/feedback.dtd rename : mobile/locales/en-US/chrome/localepicker.properties => mobile/xul/locales/en-US/chrome/localepicker.properties rename : mobile/locales/en-US/chrome/notification.dtd => mobile/xul/locales/en-US/chrome/notification.dtd rename : mobile/locales/en-US/chrome/overrides/appstrings.properties => mobile/xul/locales/en-US/chrome/overrides/appstrings.properties rename : mobile/locales/en-US/chrome/overrides/netError.dtd => mobile/xul/locales/en-US/chrome/overrides/netError.dtd rename : mobile/locales/en-US/chrome/overrides/passwordmgr.properties => mobile/xul/locales/en-US/chrome/overrides/passwordmgr.properties rename : mobile/locales/en-US/chrome/phishing.dtd => mobile/xul/locales/en-US/chrome/phishing.dtd rename : mobile/locales/en-US/chrome/preferences.dtd => mobile/xul/locales/en-US/chrome/preferences.dtd rename : mobile/locales/en-US/chrome/prompt.dtd => mobile/xul/locales/en-US/chrome/prompt.dtd rename : mobile/locales/en-US/chrome/region.properties => mobile/xul/locales/en-US/chrome/region.properties rename : mobile/locales/en-US/chrome/sync.dtd => mobile/xul/locales/en-US/chrome/sync.dtd rename : mobile/locales/en-US/chrome/sync.properties => mobile/xul/locales/en-US/chrome/sync.properties rename : mobile/locales/en-US/chrome/webapps.dtd => mobile/xul/locales/en-US/chrome/webapps.dtd rename : mobile/locales/en-US/crashreporter/crashreporter-override.ini => mobile/xul/locales/en-US/crashreporter/crashreporter-override.ini rename : mobile/locales/en-US/defines.inc => mobile/xul/locales/en-US/defines.inc rename : mobile/locales/en-US/installer/setup.ini => mobile/xul/locales/en-US/installer/setup.ini rename : mobile/locales/en-US/mobile-l10n.js => mobile/xul/locales/en-US/mobile-l10n.js rename : mobile/locales/en-US/profile/bookmarks.inc => mobile/xul/locales/en-US/profile/bookmarks.inc rename : mobile/locales/en-US/searchplugins/amazondotcom.xml => mobile/xul/locales/en-US/searchplugins/amazondotcom.xml rename : mobile/locales/en-US/searchplugins/google.xml => mobile/xul/locales/en-US/searchplugins/google.xml rename : mobile/locales/en-US/searchplugins/list.txt => mobile/xul/locales/en-US/searchplugins/list.txt rename : mobile/locales/en-US/searchplugins/twitter.xml => mobile/xul/locales/en-US/searchplugins/twitter.xml rename : mobile/locales/en-US/searchplugins/wikipedia.xml => mobile/xul/locales/en-US/searchplugins/wikipedia.xml rename : mobile/locales/en-US/searchplugins/yahoo.xml => mobile/xul/locales/en-US/searchplugins/yahoo.xml rename : mobile/locales/en-US/updater/updater.ini => mobile/xul/locales/en-US/updater/updater.ini rename : mobile/locales/filter.py => mobile/xul/locales/filter.py rename : mobile/locales/generic/install.rdf => mobile/xul/locales/generic/install.rdf rename : mobile/locales/generic/profile/bookmarks.json.in => mobile/xul/locales/generic/profile/bookmarks.json.in rename : mobile/locales/jar.mn => mobile/xul/locales/jar.mn rename : mobile/locales/l10n-central.ini => mobile/xul/locales/l10n-central.ini rename : mobile/locales/l10n-mozilla-1.9.2.ini => mobile/xul/locales/l10n-mozilla-1.9.2.ini rename : mobile/locales/l10n-mozilla-2.0.ini => mobile/xul/locales/l10n-mozilla-2.0.ini rename : mobile/locales/l10n.ini => mobile/xul/locales/l10n.ini rename : mobile/locales/maemo-locales => mobile/xul/locales/maemo-locales rename : mobile/makefiles.sh => mobile/xul/makefiles.sh rename : mobile/modules/LocaleRepository.jsm => mobile/xul/modules/LocaleRepository.jsm rename : mobile/modules/Makefile.in => mobile/xul/modules/Makefile.in rename : mobile/modules/contacts.jsm => mobile/xul/modules/contacts.jsm rename : mobile/modules/linuxTypes.jsm => mobile/xul/modules/linuxTypes.jsm rename : mobile/modules/video.jsm => mobile/xul/modules/video.jsm rename : mobile/themes/core/Makefile.in => mobile/xul/themes/core/Makefile.in rename : mobile/themes/core/about.css => mobile/xul/themes/core/about.css rename : mobile/themes/core/aboutHome.css => mobile/xul/themes/core/aboutHome.css rename : mobile/themes/core/aboutPage.css => mobile/xul/themes/core/aboutPage.css rename : mobile/themes/core/browser.css => mobile/xul/themes/core/browser.css rename : mobile/themes/core/config.css => mobile/xul/themes/core/config.css rename : mobile/themes/core/content.css => mobile/xul/themes/core/content.css rename : mobile/themes/core/defines.inc => mobile/xul/themes/core/defines.inc rename : mobile/themes/core/forms.css => mobile/xul/themes/core/forms.css rename : mobile/themes/core/gingerbread/browser.css => mobile/xul/themes/core/gingerbread/browser.css rename : mobile/themes/core/gingerbread/content.css => mobile/xul/themes/core/gingerbread/content.css rename : mobile/themes/core/gingerbread/defines.inc => mobile/xul/themes/core/gingerbread/defines.inc rename : mobile/themes/core/gingerbread/forms.css => mobile/xul/themes/core/gingerbread/forms.css rename : mobile/themes/core/gingerbread/images/aboutBackground.jpg => mobile/xul/themes/core/gingerbread/images/aboutBackground.jpg rename : mobile/themes/core/gingerbread/images/addons-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/addons-default-hdpi.png rename : mobile/themes/core/gingerbread/images/alert-addons-30.png => mobile/xul/themes/core/gingerbread/images/alert-addons-30.png rename : mobile/themes/core/gingerbread/images/alert-downloads-30.png => mobile/xul/themes/core/gingerbread/images/alert-downloads-30.png rename : mobile/themes/core/gingerbread/images/allpages-48.png => mobile/xul/themes/core/gingerbread/images/allpages-48.png rename : mobile/themes/core/gingerbread/images/appmenu-active-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-active-hdpi.png rename : mobile/themes/core/gingerbread/images/appmenu-addons-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-addons-hdpi.png rename : mobile/themes/core/gingerbread/images/appmenu-downloads-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-downloads-hdpi.png rename : mobile/themes/core/gingerbread/images/appmenu-findinpage-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-findinpage-hdpi.png rename : mobile/themes/core/gingerbread/images/appmenu-more-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-more-hdpi.png rename : mobile/themes/core/gingerbread/images/appmenu-preferences-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-preferences-hdpi.png rename : mobile/themes/core/gingerbread/images/appmenu-share-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-share-hdpi.png rename : mobile/themes/core/gingerbread/images/appmenu-site-hdpi.png => mobile/xul/themes/core/gingerbread/images/appmenu-site-hdpi.png rename : mobile/themes/core/gingerbread/images/arrowbox-down.png => mobile/xul/themes/core/gingerbread/images/arrowbox-down.png rename : mobile/themes/core/gingerbread/images/arrowbox-horiz.png => mobile/xul/themes/core/gingerbread/images/arrowbox-horiz.png rename : mobile/themes/core/gingerbread/images/arrowbox-up.png => mobile/xul/themes/core/gingerbread/images/arrowbox-up.png rename : mobile/themes/core/gingerbread/images/arrowdown-16.png => mobile/xul/themes/core/gingerbread/images/arrowdown-16.png rename : mobile/themes/core/gingerbread/images/arrowdowndark-16.png => mobile/xul/themes/core/gingerbread/images/arrowdowndark-16.png rename : mobile/themes/core/gingerbread/images/arrowleft-16.png => mobile/xul/themes/core/gingerbread/images/arrowleft-16.png rename : mobile/themes/core/gingerbread/images/arrowleftdark-16.png => mobile/xul/themes/core/gingerbread/images/arrowleftdark-16.png rename : mobile/themes/core/gingerbread/images/arrowright-16.png => mobile/xul/themes/core/gingerbread/images/arrowright-16.png rename : mobile/themes/core/gingerbread/images/arrowrightdark-16.png => mobile/xul/themes/core/gingerbread/images/arrowrightdark-16.png rename : mobile/themes/core/gingerbread/images/arrowup-16.png => mobile/xul/themes/core/gingerbread/images/arrowup-16.png rename : mobile/themes/core/gingerbread/images/arrowupdark-16.png => mobile/xul/themes/core/gingerbread/images/arrowupdark-16.png rename : mobile/themes/core/gingerbread/images/autocomplete-bookmarked-hdpi.png => mobile/xul/themes/core/gingerbread/images/autocomplete-bookmarked-hdpi.png rename : mobile/themes/core/gingerbread/images/autocomplete-desktop-hdpi.png => mobile/xul/themes/core/gingerbread/images/autocomplete-desktop-hdpi.png rename : mobile/themes/core/gingerbread/images/autocomplete-search-hdpi.png => mobile/xul/themes/core/gingerbread/images/autocomplete-search-hdpi.png rename : mobile/themes/core/gingerbread/images/back-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/back-default-hdpi.png rename : mobile/themes/core/gingerbread/images/bookmark-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/bookmark-default-hdpi.png rename : mobile/themes/core/gingerbread/images/bookmark-starred-hdpi.png => mobile/xul/themes/core/gingerbread/images/bookmark-starred-hdpi.png rename : mobile/themes/core/gingerbread/images/bookmarks-48.png => mobile/xul/themes/core/gingerbread/images/bookmarks-48.png rename : mobile/themes/core/gingerbread/images/browseaddons-bg.jpg => mobile/xul/themes/core/gingerbread/images/browseaddons-bg.jpg rename : mobile/themes/core/gingerbread/images/button-bg.png => mobile/xul/themes/core/gingerbread/images/button-bg.png rename : mobile/themes/core/gingerbread/images/check-30.png => mobile/xul/themes/core/gingerbread/images/check-30.png rename : mobile/themes/core/gingerbread/images/check-selected-hdpi.png => mobile/xul/themes/core/gingerbread/images/check-selected-hdpi.png rename : mobile/themes/core/gingerbread/images/check-unselected-hdpi.png => mobile/xul/themes/core/gingerbread/images/check-unselected-hdpi.png rename : mobile/themes/core/gingerbread/images/close-active-hdpi.png => mobile/xul/themes/core/gingerbread/images/close-active-hdpi.png rename : mobile/themes/core/gingerbread/images/close-active-tablet-hdpi.png => mobile/xul/themes/core/gingerbread/images/close-active-tablet-hdpi.png rename : mobile/themes/core/gingerbread/images/close-background-hdpi-rtl.png => mobile/xul/themes/core/gingerbread/images/close-background-hdpi-rtl.png rename : mobile/themes/core/gingerbread/images/close-background-hdpi.png => mobile/xul/themes/core/gingerbread/images/close-background-hdpi.png rename : mobile/themes/core/gingerbread/images/close-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/close-default-hdpi.png rename : mobile/themes/core/gingerbread/images/close-default-tablet-hdpi.png => mobile/xul/themes/core/gingerbread/images/close-default-tablet-hdpi.png rename : mobile/themes/core/gingerbread/images/close-inactive-tab-hdpi.png => mobile/xul/themes/core/gingerbread/images/close-inactive-tab-hdpi.png rename : mobile/themes/core/gingerbread/images/close-inactive-tab-tablet-hdpi.png => mobile/xul/themes/core/gingerbread/images/close-inactive-tab-tablet-hdpi.png rename : mobile/themes/core/gingerbread/images/console-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/console-default-hdpi.png rename : mobile/themes/core/gingerbread/images/downloads-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/downloads-default-hdpi.png rename : mobile/themes/core/gingerbread/images/dropmarker-hdpi.png => mobile/xul/themes/core/gingerbread/images/dropmarker-hdpi.png rename : mobile/themes/core/gingerbread/images/endcap-active-bg.png => mobile/xul/themes/core/gingerbread/images/endcap-active-bg.png rename : mobile/themes/core/gingerbread/images/endcap-default-bg.png => mobile/xul/themes/core/gingerbread/images/endcap-default-bg.png rename : mobile/themes/core/gingerbread/images/endcap-ev-active-bg.png => mobile/xul/themes/core/gingerbread/images/endcap-ev-active-bg.png rename : mobile/themes/core/gingerbread/images/endcap-ev-default-bg.png => mobile/xul/themes/core/gingerbread/images/endcap-ev-default-bg.png rename : mobile/themes/core/gingerbread/images/endcap-ssl-active-bg.png => mobile/xul/themes/core/gingerbread/images/endcap-ssl-active-bg.png rename : mobile/themes/core/gingerbread/images/endcap-ssl-default-bg.png => mobile/xul/themes/core/gingerbread/images/endcap-ssl-default-bg.png rename : mobile/themes/core/gingerbread/images/errorpage-larry-black.png => mobile/xul/themes/core/gingerbread/images/errorpage-larry-black.png rename : mobile/themes/core/gingerbread/images/errorpage-larry-white.png => mobile/xul/themes/core/gingerbread/images/errorpage-larry-white.png rename : mobile/themes/core/gingerbread/images/errorpage-warning.png => mobile/xul/themes/core/gingerbread/images/errorpage-warning.png rename : mobile/themes/core/gingerbread/images/favicon-default-32.png => mobile/xul/themes/core/gingerbread/images/favicon-default-32.png rename : mobile/themes/core/gingerbread/images/folder-32.png => mobile/xul/themes/core/gingerbread/images/folder-32.png rename : mobile/themes/core/gingerbread/images/forward-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/forward-default-hdpi.png rename : mobile/themes/core/gingerbread/images/handle-end.png => mobile/xul/themes/core/gingerbread/images/handle-end.png rename : mobile/themes/core/gingerbread/images/handle-start.png => mobile/xul/themes/core/gingerbread/images/handle-start.png rename : mobile/themes/core/gingerbread/images/history-48.png => mobile/xul/themes/core/gingerbread/images/history-48.png rename : mobile/themes/core/gingerbread/images/identity-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/identity-default-hdpi.png rename : mobile/themes/core/gingerbread/images/identity-ev-hdpi.png => mobile/xul/themes/core/gingerbread/images/identity-ev-hdpi.png rename : mobile/themes/core/gingerbread/images/identity-ssl-hdpi.png => mobile/xul/themes/core/gingerbread/images/identity-ssl-hdpi.png rename : mobile/themes/core/gingerbread/images/locked-hdpi.png => mobile/xul/themes/core/gingerbread/images/locked-hdpi.png rename : mobile/themes/core/gingerbread/images/mute-hdpi.png => mobile/xul/themes/core/gingerbread/images/mute-hdpi.png rename : mobile/themes/core/gingerbread/images/navigation-magnifier-30.png => mobile/xul/themes/core/gingerbread/images/navigation-magnifier-30.png rename : mobile/themes/core/gingerbread/images/newtab-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/newtab-default-hdpi.png rename : mobile/themes/core/gingerbread/images/newtab-default-tablet-hdpi.png => mobile/xul/themes/core/gingerbread/images/newtab-default-tablet-hdpi.png rename : mobile/themes/core/gingerbread/images/next-disabled-hdpi.png => mobile/xul/themes/core/gingerbread/images/next-disabled-hdpi.png rename : mobile/themes/core/gingerbread/images/next-hdpi.png => mobile/xul/themes/core/gingerbread/images/next-hdpi.png rename : mobile/themes/core/gingerbread/images/pause-hdpi.png => mobile/xul/themes/core/gingerbread/images/pause-hdpi.png rename : mobile/themes/core/gingerbread/images/play-hdpi.png => mobile/xul/themes/core/gingerbread/images/play-hdpi.png rename : mobile/themes/core/gingerbread/images/popup-selected-item-hdpi.png => mobile/xul/themes/core/gingerbread/images/popup-selected-item-hdpi.png rename : mobile/themes/core/gingerbread/images/preferences-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/preferences-default-hdpi.png rename : mobile/themes/core/gingerbread/images/previous-disabled-hdpi.png => mobile/xul/themes/core/gingerbread/images/previous-disabled-hdpi.png rename : mobile/themes/core/gingerbread/images/previous-hdpi.png => mobile/xul/themes/core/gingerbread/images/previous-hdpi.png rename : mobile/themes/core/gingerbread/images/radio-selected-hdpi.png => mobile/xul/themes/core/gingerbread/images/radio-selected-hdpi.png rename : mobile/themes/core/gingerbread/images/radio-unselected-hdpi.png => mobile/xul/themes/core/gingerbread/images/radio-unselected-hdpi.png rename : mobile/themes/core/gingerbread/images/reload-hdpi.png => mobile/xul/themes/core/gingerbread/images/reload-hdpi.png rename : mobile/themes/core/gingerbread/images/remotetabs-32.png => mobile/xul/themes/core/gingerbread/images/remotetabs-32.png rename : mobile/themes/core/gingerbread/images/remotetabs-48.png => mobile/xul/themes/core/gingerbread/images/remotetabs-48.png rename : mobile/themes/core/gingerbread/images/row-header-bg.png => mobile/xul/themes/core/gingerbread/images/row-header-bg.png rename : mobile/themes/core/gingerbread/images/scrubber-hdpi.png => mobile/xul/themes/core/gingerbread/images/scrubber-hdpi.png rename : mobile/themes/core/gingerbread/images/search-clear-30.png => mobile/xul/themes/core/gingerbread/images/search-clear-30.png rename : mobile/themes/core/gingerbread/images/search-glass-30.png => mobile/xul/themes/core/gingerbread/images/search-glass-30.png rename : mobile/themes/core/gingerbread/images/settings-default-hdpi.png => mobile/xul/themes/core/gingerbread/images/settings-default-hdpi.png rename : mobile/themes/core/gingerbread/images/stop-hdpi.png => mobile/xul/themes/core/gingerbread/images/stop-hdpi.png rename : mobile/themes/core/gingerbread/images/tab-active-hdpi.png => mobile/xul/themes/core/gingerbread/images/tab-active-hdpi.png rename : mobile/themes/core/gingerbread/images/tab-closed-hdpi.png => mobile/xul/themes/core/gingerbread/images/tab-closed-hdpi.png rename : mobile/themes/core/gingerbread/images/tab-inactive-hdpi.png => mobile/xul/themes/core/gingerbread/images/tab-inactive-hdpi.png rename : mobile/themes/core/gingerbread/images/tab-reopen-hdpi.png => mobile/xul/themes/core/gingerbread/images/tab-reopen-hdpi.png rename : mobile/themes/core/gingerbread/images/tab-reopen-tablet-hdpi.png => mobile/xul/themes/core/gingerbread/images/tab-reopen-tablet-hdpi.png rename : mobile/themes/core/gingerbread/images/task-back-hdpi.png => mobile/xul/themes/core/gingerbread/images/task-back-hdpi.png rename : mobile/themes/core/gingerbread/images/task-back-rtl-hdpi.png => mobile/xul/themes/core/gingerbread/images/task-back-rtl-hdpi.png rename : mobile/themes/core/gingerbread/images/task-close-hdpi.png => mobile/xul/themes/core/gingerbread/images/task-close-hdpi.png rename : mobile/themes/core/gingerbread/images/task-switch-hdpi.png => mobile/xul/themes/core/gingerbread/images/task-switch-hdpi.png rename : mobile/themes/core/gingerbread/images/textbox-bg.png => mobile/xul/themes/core/gingerbread/images/textbox-bg.png rename : mobile/themes/core/gingerbread/images/throbber.png => mobile/xul/themes/core/gingerbread/images/throbber.png rename : mobile/themes/core/gingerbread/images/toggle-off.png => mobile/xul/themes/core/gingerbread/images/toggle-off.png rename : mobile/themes/core/gingerbread/images/toggle-on.png => mobile/xul/themes/core/gingerbread/images/toggle-on.png rename : mobile/themes/core/gingerbread/images/unlocked-hdpi.png => mobile/xul/themes/core/gingerbread/images/unlocked-hdpi.png rename : mobile/themes/core/gingerbread/images/unmute-hdpi.png => mobile/xul/themes/core/gingerbread/images/unmute-hdpi.png rename : mobile/themes/core/gingerbread/images/urlbar-bg.png => mobile/xul/themes/core/gingerbread/images/urlbar-bg.png rename : mobile/themes/core/gingerbread/localePicker.css => mobile/xul/themes/core/gingerbread/localePicker.css rename : mobile/themes/core/gingerbread/platform.css => mobile/xul/themes/core/gingerbread/platform.css rename : mobile/themes/core/header.css => mobile/xul/themes/core/header.css rename : mobile/themes/core/honeycomb/browser.css => mobile/xul/themes/core/honeycomb/browser.css rename : mobile/themes/core/honeycomb/defines.inc => mobile/xul/themes/core/honeycomb/defines.inc rename : mobile/themes/core/honeycomb/forms.css => mobile/xul/themes/core/honeycomb/forms.css rename : mobile/themes/core/honeycomb/images/aboutBackground.jpg => mobile/xul/themes/core/honeycomb/images/aboutBackground.jpg rename : mobile/themes/core/honeycomb/images/addons-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/addons-default-hdpi.png rename : mobile/themes/core/honeycomb/images/alert-addons-30.png => mobile/xul/themes/core/honeycomb/images/alert-addons-30.png rename : mobile/themes/core/honeycomb/images/alert-downloads-30.png => mobile/xul/themes/core/honeycomb/images/alert-downloads-30.png rename : mobile/themes/core/honeycomb/images/allpages-48.png => mobile/xul/themes/core/honeycomb/images/allpages-48.png rename : mobile/themes/core/honeycomb/images/appmenu-active-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-active-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-addons-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-addons-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-addsearch-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-addsearch-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-downloads-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-downloads-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-findinpage-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-findinpage-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-more-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-more-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-preferences-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-preferences-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-saveas-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-saveas-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-share-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-share-hdpi.png rename : mobile/themes/core/honeycomb/images/appmenu-site-hdpi.png => mobile/xul/themes/core/honeycomb/images/appmenu-site-hdpi.png rename : mobile/themes/core/honeycomb/images/arrowbox-down.png => mobile/xul/themes/core/honeycomb/images/arrowbox-down.png rename : mobile/themes/core/honeycomb/images/arrowbox-horiz.png => mobile/xul/themes/core/honeycomb/images/arrowbox-horiz.png rename : mobile/themes/core/honeycomb/images/arrowbox-up.png => mobile/xul/themes/core/honeycomb/images/arrowbox-up.png rename : mobile/themes/core/honeycomb/images/arrowdown-16.png => mobile/xul/themes/core/honeycomb/images/arrowdown-16.png rename : mobile/themes/core/honeycomb/images/arrowdowndark-16.png => mobile/xul/themes/core/honeycomb/images/arrowdowndark-16.png rename : mobile/themes/core/honeycomb/images/arrowleft-16.png => mobile/xul/themes/core/honeycomb/images/arrowleft-16.png rename : mobile/themes/core/honeycomb/images/arrowleftdark-16.png => mobile/xul/themes/core/honeycomb/images/arrowleftdark-16.png rename : mobile/themes/core/honeycomb/images/arrowright-16.png => mobile/xul/themes/core/honeycomb/images/arrowright-16.png rename : mobile/themes/core/honeycomb/images/arrowrightdark-16.png => mobile/xul/themes/core/honeycomb/images/arrowrightdark-16.png rename : mobile/themes/core/honeycomb/images/arrowup-16.png => mobile/xul/themes/core/honeycomb/images/arrowup-16.png rename : mobile/themes/core/honeycomb/images/arrowupdark-16.png => mobile/xul/themes/core/honeycomb/images/arrowupdark-16.png rename : mobile/themes/core/honeycomb/images/autocomplete-all-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-all-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-all-selected-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-all-selected-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-bookmarked-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-bookmarked-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-bookmarked-selected-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-bookmarked-selected-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-desktop-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-desktop-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-desktop-selected-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-desktop-selected-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-history-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-history-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-history-selected-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-history-selected-hdpi.png rename : mobile/themes/core/honeycomb/images/autocomplete-search-hdpi.png => mobile/xul/themes/core/honeycomb/images/autocomplete-search-hdpi.png rename : mobile/themes/core/honeycomb/images/back-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/back-default-hdpi.png rename : mobile/themes/core/honeycomb/images/bookmark-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/bookmark-default-hdpi.png rename : mobile/themes/core/honeycomb/images/bookmark-starred-hdpi.png => mobile/xul/themes/core/honeycomb/images/bookmark-starred-hdpi.png rename : mobile/themes/core/honeycomb/images/bookmarks-48.png => mobile/xul/themes/core/honeycomb/images/bookmarks-48.png rename : mobile/themes/core/honeycomb/images/browseaddons-bg.jpg => mobile/xul/themes/core/honeycomb/images/browseaddons-bg.jpg rename : mobile/themes/core/honeycomb/images/button-bg.png => mobile/xul/themes/core/honeycomb/images/button-bg.png rename : mobile/themes/core/honeycomb/images/check-selected-hdpi.png => mobile/xul/themes/core/honeycomb/images/check-selected-hdpi.png rename : mobile/themes/core/honeycomb/images/check-selected-tap-hdpi.png => mobile/xul/themes/core/honeycomb/images/check-selected-tap-hdpi.png rename : mobile/themes/core/honeycomb/images/check-unselected-hdpi.png => mobile/xul/themes/core/honeycomb/images/check-unselected-hdpi.png rename : mobile/themes/core/honeycomb/images/check-unselected-tap-hdpi.png => mobile/xul/themes/core/honeycomb/images/check-unselected-tap-hdpi.png rename : mobile/themes/core/honeycomb/images/close-active-hdpi.png => mobile/xul/themes/core/honeycomb/images/close-active-hdpi.png rename : mobile/themes/core/honeycomb/images/close-active-tablet-hdpi.png => mobile/xul/themes/core/honeycomb/images/close-active-tablet-hdpi.png rename : mobile/themes/core/honeycomb/images/close-background-hdpi-rtl.png => mobile/xul/themes/core/honeycomb/images/close-background-hdpi-rtl.png rename : mobile/themes/core/honeycomb/images/close-background-hdpi.png => mobile/xul/themes/core/honeycomb/images/close-background-hdpi.png rename : mobile/themes/core/honeycomb/images/close-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/close-default-hdpi.png rename : mobile/themes/core/honeycomb/images/close-default-tablet-hdpi.png => mobile/xul/themes/core/honeycomb/images/close-default-tablet-hdpi.png rename : mobile/themes/core/honeycomb/images/close-inactive-tab-hdpi.png => mobile/xul/themes/core/honeycomb/images/close-inactive-tab-hdpi.png rename : mobile/themes/core/honeycomb/images/close-inactive-tab-tablet-hdpi.png => mobile/xul/themes/core/honeycomb/images/close-inactive-tab-tablet-hdpi.png rename : mobile/themes/core/honeycomb/images/console-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/console-default-hdpi.png rename : mobile/themes/core/honeycomb/images/downloads-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/downloads-default-hdpi.png rename : mobile/themes/core/honeycomb/images/dropmarker-hdpi.png => mobile/xul/themes/core/honeycomb/images/dropmarker-hdpi.png rename : mobile/themes/core/honeycomb/images/errorpage-larry-black.png => mobile/xul/themes/core/honeycomb/images/errorpage-larry-black.png rename : mobile/themes/core/honeycomb/images/errorpage-larry-white.png => mobile/xul/themes/core/honeycomb/images/errorpage-larry-white.png rename : mobile/themes/core/honeycomb/images/errorpage-warning.png => mobile/xul/themes/core/honeycomb/images/errorpage-warning.png rename : mobile/themes/core/honeycomb/images/favicon-default-32.png => mobile/xul/themes/core/honeycomb/images/favicon-default-32.png rename : mobile/themes/core/honeycomb/images/folder-32.png => mobile/xul/themes/core/honeycomb/images/folder-32.png rename : mobile/themes/core/honeycomb/images/forward-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/forward-default-hdpi.png rename : mobile/themes/core/honeycomb/images/history-48.png => mobile/xul/themes/core/honeycomb/images/history-48.png rename : mobile/themes/core/honeycomb/images/identity-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/identity-default-hdpi.png rename : mobile/themes/core/honeycomb/images/identity-ev-hdpi.png => mobile/xul/themes/core/honeycomb/images/identity-ev-hdpi.png rename : mobile/themes/core/honeycomb/images/identity-ssl-hdpi.png => mobile/xul/themes/core/honeycomb/images/identity-ssl-hdpi.png rename : mobile/themes/core/honeycomb/images/locked-hdpi.png => mobile/xul/themes/core/honeycomb/images/locked-hdpi.png rename : mobile/themes/core/honeycomb/images/menu-hdpi.png => mobile/xul/themes/core/honeycomb/images/menu-hdpi.png rename : mobile/themes/core/honeycomb/images/menu-top-insideglow-green.png => mobile/xul/themes/core/honeycomb/images/menu-top-insideglow-green.png rename : mobile/themes/core/honeycomb/images/menu-top-insideglow-grey.png => mobile/xul/themes/core/honeycomb/images/menu-top-insideglow-grey.png rename : mobile/themes/core/honeycomb/images/menu-top-insideglow.png => mobile/xul/themes/core/honeycomb/images/menu-top-insideglow.png rename : mobile/themes/core/honeycomb/images/mute-hdpi.png => mobile/xul/themes/core/honeycomb/images/mute-hdpi.png rename : mobile/themes/core/honeycomb/images/navigation-magnifier-30.png => mobile/xul/themes/core/honeycomb/images/navigation-magnifier-30.png rename : mobile/themes/core/honeycomb/images/newtab-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/newtab-default-hdpi.png rename : mobile/themes/core/honeycomb/images/newtab-default-tablet-hdpi.png => mobile/xul/themes/core/honeycomb/images/newtab-default-tablet-hdpi.png rename : mobile/themes/core/honeycomb/images/newtab-tabmenu-tablet-hdpi.png => mobile/xul/themes/core/honeycomb/images/newtab-tabmenu-tablet-hdpi.png rename : mobile/themes/core/honeycomb/images/next-disabled-hdpi.png => mobile/xul/themes/core/honeycomb/images/next-disabled-hdpi.png rename : mobile/themes/core/honeycomb/images/next-hdpi.png => mobile/xul/themes/core/honeycomb/images/next-hdpi.png rename : mobile/themes/core/honeycomb/images/panelrow-active-hdpi.png => mobile/xul/themes/core/honeycomb/images/panelrow-active-hdpi.png rename : mobile/themes/core/honeycomb/images/panelrow-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/panelrow-default-hdpi.png rename : mobile/themes/core/honeycomb/images/panelrow-selected-hdpi.png => mobile/xul/themes/core/honeycomb/images/panelrow-selected-hdpi.png rename : mobile/themes/core/honeycomb/images/pause-hdpi.png => mobile/xul/themes/core/honeycomb/images/pause-hdpi.png rename : mobile/themes/core/honeycomb/images/play-hdpi.png => mobile/xul/themes/core/honeycomb/images/play-hdpi.png rename : mobile/themes/core/honeycomb/images/popup-bg-hdpi.png => mobile/xul/themes/core/honeycomb/images/popup-bg-hdpi.png rename : mobile/themes/core/honeycomb/images/popup-selected-item-hdpi.png => mobile/xul/themes/core/honeycomb/images/popup-selected-item-hdpi.png rename : mobile/themes/core/honeycomb/images/preferences-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/preferences-default-hdpi.png rename : mobile/themes/core/honeycomb/images/previous-disabled-hdpi.png => mobile/xul/themes/core/honeycomb/images/previous-disabled-hdpi.png rename : mobile/themes/core/honeycomb/images/previous-hdpi.png => mobile/xul/themes/core/honeycomb/images/previous-hdpi.png rename : mobile/themes/core/honeycomb/images/reload-hdpi.png => mobile/xul/themes/core/honeycomb/images/reload-hdpi.png rename : mobile/themes/core/honeycomb/images/remotetabs-32.png => mobile/xul/themes/core/honeycomb/images/remotetabs-32.png rename : mobile/themes/core/honeycomb/images/remotetabs-48.png => mobile/xul/themes/core/honeycomb/images/remotetabs-48.png rename : mobile/themes/core/honeycomb/images/row-header-bg.png => mobile/xul/themes/core/honeycomb/images/row-header-bg.png rename : mobile/themes/core/honeycomb/images/scrubber-hdpi.png => mobile/xul/themes/core/honeycomb/images/scrubber-hdpi.png rename : mobile/themes/core/honeycomb/images/search-clear-30.png => mobile/xul/themes/core/honeycomb/images/search-clear-30.png rename : mobile/themes/core/honeycomb/images/search-glass-30.png => mobile/xul/themes/core/honeycomb/images/search-glass-30.png rename : mobile/themes/core/honeycomb/images/settings-default-hdpi.png => mobile/xul/themes/core/honeycomb/images/settings-default-hdpi.png rename : mobile/themes/core/honeycomb/images/sidebarbutton-active-hdpi.png => mobile/xul/themes/core/honeycomb/images/sidebarbutton-active-hdpi.png rename : mobile/themes/core/honeycomb/images/stop-hdpi.png => mobile/xul/themes/core/honeycomb/images/stop-hdpi.png rename : mobile/themes/core/honeycomb/images/tab-active-hdpi.png => mobile/xul/themes/core/honeycomb/images/tab-active-hdpi.png rename : mobile/themes/core/honeycomb/images/tab-closed-hdpi.png => mobile/xul/themes/core/honeycomb/images/tab-closed-hdpi.png rename : mobile/themes/core/honeycomb/images/tab-inactive-hdpi.png => mobile/xul/themes/core/honeycomb/images/tab-inactive-hdpi.png rename : mobile/themes/core/honeycomb/images/tab-reopen-hdpi.png => mobile/xul/themes/core/honeycomb/images/tab-reopen-hdpi.png rename : mobile/themes/core/honeycomb/images/tab-reopen-tablet-hdpi.png => mobile/xul/themes/core/honeycomb/images/tab-reopen-tablet-hdpi.png rename : mobile/themes/core/honeycomb/images/tabs-default-bg-rtl.png => mobile/xul/themes/core/honeycomb/images/tabs-default-bg-rtl.png rename : mobile/themes/core/honeycomb/images/tabs-default-bg.png => mobile/xul/themes/core/honeycomb/images/tabs-default-bg.png rename : mobile/themes/core/honeycomb/images/tabs-hdpi.png => mobile/xul/themes/core/honeycomb/images/tabs-hdpi.png rename : mobile/themes/core/honeycomb/images/tabs-selected-bg-rtl.png => mobile/xul/themes/core/honeycomb/images/tabs-selected-bg-rtl.png rename : mobile/themes/core/honeycomb/images/tabs-selected-bg.png => mobile/xul/themes/core/honeycomb/images/tabs-selected-bg.png rename : mobile/themes/core/honeycomb/images/task-back-hdpi.png => mobile/xul/themes/core/honeycomb/images/task-back-hdpi.png rename : mobile/themes/core/honeycomb/images/task-back-rtl-hdpi.png => mobile/xul/themes/core/honeycomb/images/task-back-rtl-hdpi.png rename : mobile/themes/core/honeycomb/images/task-close-hdpi.png => mobile/xul/themes/core/honeycomb/images/task-close-hdpi.png rename : mobile/themes/core/honeycomb/images/task-switch-hdpi.png => mobile/xul/themes/core/honeycomb/images/task-switch-hdpi.png rename : mobile/themes/core/honeycomb/images/textbox-bg.png => mobile/xul/themes/core/honeycomb/images/textbox-bg.png rename : mobile/themes/core/honeycomb/images/throbber.png => mobile/xul/themes/core/honeycomb/images/throbber.png rename : mobile/themes/core/honeycomb/images/toggle-off.png => mobile/xul/themes/core/honeycomb/images/toggle-off.png rename : mobile/themes/core/honeycomb/images/toggle-on.png => mobile/xul/themes/core/honeycomb/images/toggle-on.png rename : mobile/themes/core/honeycomb/images/unlocked-hdpi.png => mobile/xul/themes/core/honeycomb/images/unlocked-hdpi.png rename : mobile/themes/core/honeycomb/images/unmute-hdpi.png => mobile/xul/themes/core/honeycomb/images/unmute-hdpi.png rename : mobile/themes/core/honeycomb/images/urlbar-border-bottom-active.png => mobile/xul/themes/core/honeycomb/images/urlbar-border-bottom-active.png rename : mobile/themes/core/honeycomb/images/urlbar-border-bottom.png => mobile/xul/themes/core/honeycomb/images/urlbar-border-bottom.png rename : mobile/themes/core/honeycomb/images/urlbar-border-side-active.png => mobile/xul/themes/core/honeycomb/images/urlbar-border-side-active.png rename : mobile/themes/core/honeycomb/images/urlbar-border-side.png => mobile/xul/themes/core/honeycomb/images/urlbar-border-side.png rename : mobile/themes/core/honeycomb/platform.css => mobile/xul/themes/core/honeycomb/platform.css rename : mobile/themes/core/images/aboutBackground.jpg => mobile/xul/themes/core/images/aboutBackground.jpg rename : mobile/themes/core/images/addons-32.png => mobile/xul/themes/core/images/addons-32.png rename : mobile/themes/core/images/addons-default-hdpi.png => mobile/xul/themes/core/images/addons-default-hdpi.png rename : mobile/themes/core/images/alert-addons-30.png => mobile/xul/themes/core/images/alert-addons-30.png rename : mobile/themes/core/images/alert-downloads-30.png => mobile/xul/themes/core/images/alert-downloads-30.png rename : mobile/themes/core/images/allpages-48.png => mobile/xul/themes/core/images/allpages-48.png rename : mobile/themes/core/images/appmenu-active-hdpi.png => mobile/xul/themes/core/images/appmenu-active-hdpi.png rename : mobile/themes/core/images/appmenu-addons-hdpi.png => mobile/xul/themes/core/images/appmenu-addons-hdpi.png rename : mobile/themes/core/images/appmenu-downloads-hdpi.png => mobile/xul/themes/core/images/appmenu-downloads-hdpi.png rename : mobile/themes/core/images/appmenu-findinpage-hdpi.png => mobile/xul/themes/core/images/appmenu-findinpage-hdpi.png rename : mobile/themes/core/images/appmenu-more-hdpi.png => mobile/xul/themes/core/images/appmenu-more-hdpi.png rename : mobile/themes/core/images/appmenu-preferences-hdpi.png => mobile/xul/themes/core/images/appmenu-preferences-hdpi.png rename : mobile/themes/core/images/appmenu-share-hdpi.png => mobile/xul/themes/core/images/appmenu-share-hdpi.png rename : mobile/themes/core/images/appmenu-site-hdpi.png => mobile/xul/themes/core/images/appmenu-site-hdpi.png rename : mobile/themes/core/images/arrowbox-down.png => mobile/xul/themes/core/images/arrowbox-down.png rename : mobile/themes/core/images/arrowbox-horiz.png => mobile/xul/themes/core/images/arrowbox-horiz.png rename : mobile/themes/core/images/arrowbox-up.png => mobile/xul/themes/core/images/arrowbox-up.png rename : mobile/themes/core/images/arrowdown-16.png => mobile/xul/themes/core/images/arrowdown-16.png rename : mobile/themes/core/images/arrowdowndark-16.png => mobile/xul/themes/core/images/arrowdowndark-16.png rename : mobile/themes/core/images/arrowleft-16.png => mobile/xul/themes/core/images/arrowleft-16.png rename : mobile/themes/core/images/arrowleftdark-16.png => mobile/xul/themes/core/images/arrowleftdark-16.png rename : mobile/themes/core/images/arrowright-16.png => mobile/xul/themes/core/images/arrowright-16.png rename : mobile/themes/core/images/arrowrightdark-16.png => mobile/xul/themes/core/images/arrowrightdark-16.png rename : mobile/themes/core/images/arrowup-16.png => mobile/xul/themes/core/images/arrowup-16.png rename : mobile/themes/core/images/arrowupdark-16.png => mobile/xul/themes/core/images/arrowupdark-16.png rename : mobile/themes/core/images/aurora-lightbox-bg.jpg => mobile/xul/themes/core/images/aurora-lightbox-bg.jpg rename : mobile/themes/core/images/aurora-lightbox-close.png => mobile/xul/themes/core/images/aurora-lightbox-close.png rename : mobile/themes/core/images/aurora-lightbox-logo.png => mobile/xul/themes/core/images/aurora-lightbox-logo.png rename : mobile/themes/core/images/autocomplete-bookmarked-hdpi.png => mobile/xul/themes/core/images/autocomplete-bookmarked-hdpi.png rename : mobile/themes/core/images/autocomplete-desktop-hdpi.png => mobile/xul/themes/core/images/autocomplete-desktop-hdpi.png rename : mobile/themes/core/images/autocomplete-search-hdpi.png => mobile/xul/themes/core/images/autocomplete-search-hdpi.png rename : mobile/themes/core/images/back-default-hdpi.png => mobile/xul/themes/core/images/back-default-hdpi.png rename : mobile/themes/core/images/bookmark-default-hdpi.png => mobile/xul/themes/core/images/bookmark-default-hdpi.png rename : mobile/themes/core/images/bookmark-starred-hdpi.png => mobile/xul/themes/core/images/bookmark-starred-hdpi.png rename : mobile/themes/core/images/bookmarks-48.png => mobile/xul/themes/core/images/bookmarks-48.png rename : mobile/themes/core/images/browseaddons-bg.jpg => mobile/xul/themes/core/images/browseaddons-bg.jpg rename : mobile/themes/core/images/button-bg.png => mobile/xul/themes/core/images/button-bg.png rename : mobile/themes/core/images/check-30.png => mobile/xul/themes/core/images/check-30.png rename : mobile/themes/core/images/check-selected-30.png => mobile/xul/themes/core/images/check-selected-30.png rename : mobile/themes/core/images/check-unselected-30.png => mobile/xul/themes/core/images/check-unselected-30.png rename : mobile/themes/core/images/checkmark-hdpi.png => mobile/xul/themes/core/images/checkmark-hdpi.png rename : mobile/themes/core/images/close-active-hdpi.png => mobile/xul/themes/core/images/close-active-hdpi.png rename : mobile/themes/core/images/close-active-tablet-hdpi.png => mobile/xul/themes/core/images/close-active-tablet-hdpi.png rename : mobile/themes/core/images/close-background-hdpi-rtl.png => mobile/xul/themes/core/images/close-background-hdpi-rtl.png rename : mobile/themes/core/images/close-background-hdpi.png => mobile/xul/themes/core/images/close-background-hdpi.png rename : mobile/themes/core/images/close-default-hdpi.png => mobile/xul/themes/core/images/close-default-hdpi.png rename : mobile/themes/core/images/close-default-tablet-hdpi.png => mobile/xul/themes/core/images/close-default-tablet-hdpi.png rename : mobile/themes/core/images/close-inactive-tab-hdpi.png => mobile/xul/themes/core/images/close-inactive-tab-hdpi.png rename : mobile/themes/core/images/close-inactive-tab-tablet-hdpi.png => mobile/xul/themes/core/images/close-inactive-tab-tablet-hdpi.png rename : mobile/themes/core/images/console-default-hdpi.png => mobile/xul/themes/core/images/console-default-hdpi.png rename : mobile/themes/core/images/downloads-default-hdpi.png => mobile/xul/themes/core/images/downloads-default-hdpi.png rename : mobile/themes/core/images/dropmarker-hdpi.png => mobile/xul/themes/core/images/dropmarker-hdpi.png rename : mobile/themes/core/images/endcap-active-bg.png => mobile/xul/themes/core/images/endcap-active-bg.png rename : mobile/themes/core/images/endcap-default-bg.png => mobile/xul/themes/core/images/endcap-default-bg.png rename : mobile/themes/core/images/endcap-ev-active-bg.png => mobile/xul/themes/core/images/endcap-ev-active-bg.png rename : mobile/themes/core/images/endcap-ev-default-bg.png => mobile/xul/themes/core/images/endcap-ev-default-bg.png rename : mobile/themes/core/images/endcap-ssl-active-bg.png => mobile/xul/themes/core/images/endcap-ssl-active-bg.png rename : mobile/themes/core/images/endcap-ssl-default-bg.png => mobile/xul/themes/core/images/endcap-ssl-default-bg.png rename : mobile/themes/core/images/errorpage-larry-black.png => mobile/xul/themes/core/images/errorpage-larry-black.png rename : mobile/themes/core/images/errorpage-larry-white.png => mobile/xul/themes/core/images/errorpage-larry-white.png rename : mobile/themes/core/images/errorpage-warning.png => mobile/xul/themes/core/images/errorpage-warning.png rename : mobile/themes/core/images/favicon-default-32.png => mobile/xul/themes/core/images/favicon-default-32.png rename : mobile/themes/core/images/folder-32.png => mobile/xul/themes/core/images/folder-32.png rename : mobile/themes/core/images/forward-default-hdpi.png => mobile/xul/themes/core/images/forward-default-hdpi.png rename : mobile/themes/core/images/handle-end.png => mobile/xul/themes/core/images/handle-end.png rename : mobile/themes/core/images/handle-start.png => mobile/xul/themes/core/images/handle-start.png rename : mobile/themes/core/images/history-48.png => mobile/xul/themes/core/images/history-48.png rename : mobile/themes/core/images/homescreen-blank-hdpi.png => mobile/xul/themes/core/images/homescreen-blank-hdpi.png rename : mobile/themes/core/images/homescreen-default-hdpi.png => mobile/xul/themes/core/images/homescreen-default-hdpi.png rename : mobile/themes/core/images/identity-default-hdpi.png => mobile/xul/themes/core/images/identity-default-hdpi.png rename : mobile/themes/core/images/identity-ev-hdpi.png => mobile/xul/themes/core/images/identity-ev-hdpi.png rename : mobile/themes/core/images/identity-ssl-hdpi.png => mobile/xul/themes/core/images/identity-ssl-hdpi.png rename : mobile/themes/core/images/locked-hdpi.png => mobile/xul/themes/core/images/locked-hdpi.png rename : mobile/themes/core/images/menu-hdpi.png => mobile/xul/themes/core/images/menu-hdpi.png rename : mobile/themes/core/images/mozilla-32.png => mobile/xul/themes/core/images/mozilla-32.png rename : mobile/themes/core/images/mute-hdpi.png => mobile/xul/themes/core/images/mute-hdpi.png rename : mobile/themes/core/images/navigation-magnifier-30.png => mobile/xul/themes/core/images/navigation-magnifier-30.png rename : mobile/themes/core/images/newtab-default-hdpi.png => mobile/xul/themes/core/images/newtab-default-hdpi.png rename : mobile/themes/core/images/newtab-default-tablet-hdpi.png => mobile/xul/themes/core/images/newtab-default-tablet-hdpi.png rename : mobile/themes/core/images/next-disabled-hdpi.png => mobile/xul/themes/core/images/next-disabled-hdpi.png rename : mobile/themes/core/images/next-hdpi.png => mobile/xul/themes/core/images/next-hdpi.png rename : mobile/themes/core/images/panelrow-active-hdpi.png => mobile/xul/themes/core/images/panelrow-active-hdpi.png rename : mobile/themes/core/images/panelrow-default-hdpi.png => mobile/xul/themes/core/images/panelrow-default-hdpi.png rename : mobile/themes/core/images/panelrow-selected-hdpi.png => mobile/xul/themes/core/images/panelrow-selected-hdpi.png rename : mobile/themes/core/images/pause-hdpi.png => mobile/xul/themes/core/images/pause-hdpi.png rename : mobile/themes/core/images/play-hdpi.png => mobile/xul/themes/core/images/play-hdpi.png rename : mobile/themes/core/images/popup-bg-hdpi.png => mobile/xul/themes/core/images/popup-bg-hdpi.png rename : mobile/themes/core/images/popup-selected-item-hdpi.png => mobile/xul/themes/core/images/popup-selected-item-hdpi.png rename : mobile/themes/core/images/preferences-default-hdpi.png => mobile/xul/themes/core/images/preferences-default-hdpi.png rename : mobile/themes/core/images/previous-disabled-hdpi.png => mobile/xul/themes/core/images/previous-disabled-hdpi.png rename : mobile/themes/core/images/previous-hdpi.png => mobile/xul/themes/core/images/previous-hdpi.png rename : mobile/themes/core/images/ratings-18.png => mobile/xul/themes/core/images/ratings-18.png rename : mobile/themes/core/images/reload-hdpi.png => mobile/xul/themes/core/images/reload-hdpi.png rename : mobile/themes/core/images/remotetabs-32.png => mobile/xul/themes/core/images/remotetabs-32.png rename : mobile/themes/core/images/remotetabs-48.png => mobile/xul/themes/core/images/remotetabs-48.png rename : mobile/themes/core/images/row-header-bg.png => mobile/xul/themes/core/images/row-header-bg.png rename : mobile/themes/core/images/scrubber-hdpi.png => mobile/xul/themes/core/images/scrubber-hdpi.png rename : mobile/themes/core/images/search-clear-30.png => mobile/xul/themes/core/images/search-clear-30.png rename : mobile/themes/core/images/search-glass-30.png => mobile/xul/themes/core/images/search-glass-30.png rename : mobile/themes/core/images/section-collapsed-16.png => mobile/xul/themes/core/images/section-collapsed-16.png rename : mobile/themes/core/images/section-expanded-16.png => mobile/xul/themes/core/images/section-expanded-16.png rename : mobile/themes/core/images/settings-default-hdpi.png => mobile/xul/themes/core/images/settings-default-hdpi.png rename : mobile/themes/core/images/sidebarbutton-active-hdpi.png => mobile/xul/themes/core/images/sidebarbutton-active-hdpi.png rename : mobile/themes/core/images/stop-hdpi.png => mobile/xul/themes/core/images/stop-hdpi.png rename : mobile/themes/core/images/tab-active-hdpi.png => mobile/xul/themes/core/images/tab-active-hdpi.png rename : mobile/themes/core/images/tab-closed-hdpi.png => mobile/xul/themes/core/images/tab-closed-hdpi.png rename : mobile/themes/core/images/tab-inactive-hdpi.png => mobile/xul/themes/core/images/tab-inactive-hdpi.png rename : mobile/themes/core/images/tab-reopen-hdpi.png => mobile/xul/themes/core/images/tab-reopen-hdpi.png rename : mobile/themes/core/images/tab-reopen-tablet-hdpi.png => mobile/xul/themes/core/images/tab-reopen-tablet-hdpi.png rename : mobile/themes/core/images/tabs-hdpi.png => mobile/xul/themes/core/images/tabs-hdpi.png rename : mobile/themes/core/images/task-back-hdpi.png => mobile/xul/themes/core/images/task-back-hdpi.png rename : mobile/themes/core/images/task-back-rtl-hdpi.png => mobile/xul/themes/core/images/task-back-rtl-hdpi.png rename : mobile/themes/core/images/task-close-hdpi.png => mobile/xul/themes/core/images/task-close-hdpi.png rename : mobile/themes/core/images/task-switch-hdpi.png => mobile/xul/themes/core/images/task-switch-hdpi.png rename : mobile/themes/core/images/textbox-bg.png => mobile/xul/themes/core/images/textbox-bg.png rename : mobile/themes/core/images/throbber.png => mobile/xul/themes/core/images/throbber.png rename : mobile/themes/core/images/toggle-off.png => mobile/xul/themes/core/images/toggle-off.png rename : mobile/themes/core/images/toggle-on.png => mobile/xul/themes/core/images/toggle-on.png rename : mobile/themes/core/images/unlocked-hdpi.png => mobile/xul/themes/core/images/unlocked-hdpi.png rename : mobile/themes/core/images/unmute-hdpi.png => mobile/xul/themes/core/images/unmute-hdpi.png rename : mobile/themes/core/jar.mn => mobile/xul/themes/core/jar.mn rename : mobile/themes/core/localePicker.css => mobile/xul/themes/core/localePicker.css rename : mobile/themes/core/netError.css => mobile/xul/themes/core/netError.css rename : mobile/themes/core/notification.css => mobile/xul/themes/core/notification.css rename : mobile/themes/core/platform.css => mobile/xul/themes/core/platform.css rename : mobile/themes/core/tablet.css => mobile/xul/themes/core/tablet.css rename : mobile/themes/core/touchcontrols.css => mobile/xul/themes/core/touchcontrols.css
803 lines
31 KiB
JavaScript
803 lines
31 KiB
JavaScript
/* ***** BEGIN LICENSE BLOCK *****
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is mozilla.org code.
|
|
*
|
|
* The Initial Developer of the Original Code is Mozilla Foundation.
|
|
* Portions created by the Initial Developer are Copyright (C) 2007
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Justin Dolske <dolske@mozilla.com> (original author)
|
|
* Ehsan Akhgari <ehsan.akhgari@gmail.com>
|
|
*
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
* the provisions above, a recipient may use your version of this file under
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
*
|
|
* ***** END LICENSE BLOCK ***** */
|
|
|
|
var Cc = Components.classes;
|
|
var Ci = Components.interfaces;
|
|
|
|
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
Components.utils.import("resource://gre/modules/Services.jsm");
|
|
|
|
var loginManager = {
|
|
|
|
/* ---------- private members ---------- */
|
|
|
|
|
|
get _formFillService() {
|
|
return this._formFillService =
|
|
Cc["@mozilla.org/satchel/form-fill-controller;1"].
|
|
getService(Ci.nsIFormFillController);
|
|
},
|
|
|
|
// Private Browsing Service
|
|
// If the service is not available, null will be returned.
|
|
__privateBrowsingService : undefined,
|
|
get _privateBrowsingService() {
|
|
if (this.__privateBrowsingService == undefined) {
|
|
if ("@mozilla.org/privatebrowsing;1" in Cc)
|
|
this.__privateBrowsingService = Cc["@mozilla.org/privatebrowsing;1"].
|
|
getService(Ci.nsIPrivateBrowsingService);
|
|
else
|
|
this.__privateBrowsingService = null;
|
|
}
|
|
return this.__privateBrowsingService;
|
|
},
|
|
|
|
|
|
// Whether we are in private browsing mode
|
|
get _inPrivateBrowsing() {
|
|
var pbSvc = this._privateBrowsingService;
|
|
if (pbSvc)
|
|
return pbSvc.privateBrowsingEnabled;
|
|
else
|
|
return false;
|
|
},
|
|
|
|
_nsLoginInfo : null, // Constructor for nsILoginInfo implementation
|
|
_debug : false, // mirrors signon.debug
|
|
_remember : true, // mirrors signon.rememberSignons preference
|
|
|
|
init : function () {
|
|
// Cache references to current |this| in utility objects
|
|
this._domEventListener._pwmgr = this;
|
|
this._observer._pwmgr = this;
|
|
|
|
// Form submit observer checks forms for new logins and pw changes.
|
|
Services.obs.addObserver(this._observer, "earlyformsubmit", false);
|
|
|
|
// Add event listener to process page when DOM is complete.
|
|
addEventListener("pageshow", this._domEventListener, false);
|
|
addEventListener("unload", this._domEventListener, false);
|
|
|
|
// Get constructor for nsILoginInfo
|
|
this._nsLoginInfo = new Components.Constructor(
|
|
"@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo);
|
|
|
|
// Preferences. Add observer so we get notified of changes.
|
|
Services.prefs.addObserver("signon.", this._observer, false);
|
|
|
|
// Get current preference values.
|
|
this._debug = Services.prefs.getBoolPref("signon.debug");
|
|
this._remember = Services.prefs.getBoolPref("signon.rememberSignons");
|
|
},
|
|
|
|
|
|
/*
|
|
* log
|
|
*
|
|
* Internal function for logging debug messages to the Error Console window
|
|
*/
|
|
log : function (message) {
|
|
if (!this._debug)
|
|
return;
|
|
dump("PasswordUtils: " + message + "\n");
|
|
Services.console.logStringMessage("PasswordUtils: " + message);
|
|
},
|
|
|
|
|
|
/* fillForm
|
|
*
|
|
* Fill the form with login information if we can find it.
|
|
*/
|
|
fillForm: function (form) {
|
|
this._fillForm(form, true, true, false, null);
|
|
},
|
|
|
|
|
|
/*
|
|
* _fillform
|
|
*
|
|
* Fill the form with login information if we can find it.
|
|
* autofillForm denotes if we should fill the form in automatically
|
|
* ignoreAutocomplete denotes if we should ignore autocomplete=off attributes
|
|
* foundLogins is an array of nsILoginInfo
|
|
*/
|
|
_fillForm : function (form, autofillForm, ignoreAutocomplete,
|
|
clobberPassword, foundLogins) {
|
|
// Heuristically determine what the user/pass fields are
|
|
// We do this before checking to see if logins are stored,
|
|
// so that the user isn't prompted for a master password
|
|
// without need.
|
|
var [usernameField, passwordField, ignored] =
|
|
this._getFormFields(form, false);
|
|
|
|
// Need a valid password field to do anything.
|
|
if (passwordField == null)
|
|
return false;
|
|
|
|
// If the fields are disabled or read-only, there's nothing to do.
|
|
if (passwordField.disabled || passwordField.readOnly ||
|
|
usernameField && (usernameField.disabled ||
|
|
usernameField.readOnly)) {
|
|
this.log("not filling form, login fields disabled");
|
|
return false;
|
|
}
|
|
|
|
// Discard logins which have username/password values that don't
|
|
// fit into the fields (as specified by the maxlength attribute).
|
|
// The user couldn't enter these values anyway, and it helps
|
|
// with sites that have an extra PIN to be entered (bug 391514)
|
|
var maxUsernameLen = Number.MAX_VALUE;
|
|
var maxPasswordLen = Number.MAX_VALUE;
|
|
|
|
// If attribute wasn't set, default is -1.
|
|
if (usernameField && usernameField.maxLength >= 0)
|
|
maxUsernameLen = usernameField.maxLength;
|
|
if (passwordField.maxLength >= 0)
|
|
maxPasswordLen = passwordField.maxLength;
|
|
|
|
var logins = foundLogins.filter(function (l) {
|
|
var fit = (l.username.length <= maxUsernameLen &&
|
|
l.password.length <= maxPasswordLen);
|
|
if (!fit)
|
|
this.log("Ignored " + l.username + " login: won't fit");
|
|
|
|
return fit;
|
|
}, this);
|
|
|
|
|
|
// Nothing to do if we have no matching logins available.
|
|
if (logins.length == 0)
|
|
return false;
|
|
|
|
|
|
// The reason we didn't end up filling the form, if any. We include
|
|
// this in the formInfo object we send with the passwordmgr-found-logins
|
|
// notification. See the _notifyFoundLogins docs for possible values.
|
|
var didntFillReason = null;
|
|
|
|
// Attach autocomplete stuff to the username field, if we have
|
|
// one. This is normally used to select from multiple accounts,
|
|
// but even with one account we should refill if the user edits.
|
|
if (usernameField)
|
|
this._attachToInput(usernameField);
|
|
|
|
// Don't clobber an existing password.
|
|
if (passwordField.value && !clobberPassword) {
|
|
didntFillReason = "existingPassword";
|
|
this._notifyFoundLogins(didntFillReason, usernameField,
|
|
passwordField, foundLogins, null);
|
|
return false;
|
|
}
|
|
|
|
// If the form has an autocomplete=off attribute in play, don't
|
|
// fill in the login automatically. We check this after attaching
|
|
// the autocomplete stuff to the username field, so the user can
|
|
// still manually select a login to be filled in.
|
|
var isFormDisabled = false;
|
|
if (!ignoreAutocomplete &&
|
|
(this._isAutocompleteDisabled(form) ||
|
|
this._isAutocompleteDisabled(usernameField) ||
|
|
this._isAutocompleteDisabled(passwordField))) {
|
|
|
|
isFormDisabled = true;
|
|
this.log("form not filled, has autocomplete=off");
|
|
}
|
|
|
|
// Variable such that we reduce code duplication and can be sure we
|
|
// should be firing notifications if and only if we can fill the form.
|
|
var selectedLogin = null;
|
|
|
|
if (usernameField && usernameField.value) {
|
|
// If username was specified in the form, only fill in the
|
|
// password if we find a matching login.
|
|
var username = usernameField.value.toLowerCase();
|
|
|
|
let matchingLogins = logins.filter(function(l)
|
|
l.username.toLowerCase() == username);
|
|
if (matchingLogins.length) {
|
|
selectedLogin = matchingLogins[0];
|
|
} else {
|
|
didntFillReason = "existingUsername";
|
|
this.log("Password not filled. None of the stored " +
|
|
"logins match the username already present.");
|
|
}
|
|
} else if (logins.length == 1) {
|
|
selectedLogin = logins[0];
|
|
} else {
|
|
// We have multiple logins. Handle a special case here, for sites
|
|
// which have a normal user+pass login *and* a password-only login
|
|
// (eg, a PIN). Prefer the login that matches the type of the form
|
|
// (user+pass or pass-only) when there's exactly one that matches.
|
|
let matchingLogins;
|
|
if (usernameField)
|
|
matchingLogins = logins.filter(function(l) l.username);
|
|
else
|
|
matchingLogins = logins.filter(function(l) !l.username);
|
|
if (matchingLogins.length == 1) {
|
|
selectedLogin = matchingLogins[0];
|
|
} else {
|
|
didntFillReason = "multipleLogins";
|
|
this.log("Multiple logins for form, so not filling any.");
|
|
}
|
|
}
|
|
|
|
var didFillForm = false;
|
|
if (selectedLogin && autofillForm && !isFormDisabled) {
|
|
// Fill the form
|
|
if (usernameField)
|
|
usernameField.value = selectedLogin.username;
|
|
passwordField.value = selectedLogin.password;
|
|
didFillForm = true;
|
|
} else if (selectedLogin && !autofillForm) {
|
|
// For when autofillForm is false, but we still have the information
|
|
// to fill a form, we notify observers.
|
|
didntFillReason = "noAutofillForms";
|
|
Services.obs.notifyObservers(form, "passwordmgr-found-form", didntFillReason);
|
|
this.log("autofillForms=false but form can be filled; notified observers");
|
|
} else if (selectedLogin && isFormDisabled) {
|
|
// For when autocomplete is off, but we still have the information
|
|
// to fill a form, we notify observers.
|
|
didntFillReason = "autocompleteOff";
|
|
Services.obs.notifyObservers(form, "passwordmgr-found-form", didntFillReason);
|
|
this.log("autocomplete=off but form can be filled; notified observers");
|
|
}
|
|
|
|
this._notifyFoundLogins(didntFillReason, usernameField, passwordField,
|
|
foundLogins, selectedLogin);
|
|
|
|
return didFillForm;
|
|
},
|
|
|
|
|
|
/*
|
|
* _getPasswordOrigin
|
|
*
|
|
* Get the parts of the URL we want for identification.
|
|
*/
|
|
_getPasswordOrigin : function (uriString, allowJS) {
|
|
var realm = "";
|
|
try {
|
|
var uri = Services.io.newURI(uriString, null, null);
|
|
|
|
if (allowJS && uri.scheme == "javascript")
|
|
return "javascript:"
|
|
|
|
realm = uri.scheme + "://" + uri.host;
|
|
|
|
// If the URI explicitly specified a port, only include it when
|
|
// it's not the default. (We never want "http://foo.com:80")
|
|
var port = uri.port;
|
|
if (port != -1) {
|
|
var handler = Services.io.getProtocolHandler(uri.scheme);
|
|
if (port != handler.defaultPort)
|
|
realm += ":" + port;
|
|
}
|
|
|
|
} catch (e) {
|
|
// bug 159484 - disallow url types that don't support a hostPort.
|
|
// (although we handle "javascript:..." as a special case above.)
|
|
this.log("Couldn't parse origin for " + uriString);
|
|
realm = null;
|
|
}
|
|
|
|
return realm;
|
|
},
|
|
|
|
|
|
_getActionOrigin : function (form) {
|
|
var uriString = form.action;
|
|
|
|
// A blank or mission action submits to where it came from.
|
|
if (uriString == "")
|
|
uriString = form.baseURI; // ala bug 297761
|
|
|
|
return this._getPasswordOrigin(uriString, true);
|
|
},
|
|
|
|
|
|
/*
|
|
* _isAutoCompleteDisabled
|
|
*
|
|
* Returns true if the page requests autocomplete be disabled for the
|
|
* specified form input.
|
|
*/
|
|
_isAutocompleteDisabled : function (element) {
|
|
if (element && element.hasAttribute("autocomplete") &&
|
|
element.getAttribute("autocomplete").toLowerCase() == "off")
|
|
return true;
|
|
|
|
return false;
|
|
},
|
|
|
|
|
|
/*
|
|
* _getFormFields
|
|
*
|
|
* Returns the username and password fields found in the form.
|
|
* Can handle complex forms by trying to figure out what the
|
|
* relevant fields are.
|
|
*
|
|
* Returns: [usernameField, newPasswordField, oldPasswordField]
|
|
*
|
|
* usernameField may be null.
|
|
* newPasswordField will always be non-null.
|
|
* oldPasswordField may be null. If null, newPasswordField is just
|
|
* "theLoginField". If not null, the form is apparently a
|
|
* change-password field, with oldPasswordField containing the password
|
|
* that is being changed.
|
|
*/
|
|
_getFormFields : function (form, isSubmission) {
|
|
var usernameField = null;
|
|
|
|
// Locate the password field(s) in the form. Up to 3 supported.
|
|
// If there's no password field, there's nothing for us to do.
|
|
var pwFields = this._getPasswordFields(form, isSubmission);
|
|
if (!pwFields)
|
|
return [null, null, null];
|
|
|
|
|
|
// Locate the username field in the form by searching backwards
|
|
// from the first passwordfield, assume the first text field is the
|
|
// username. We might not find a username field if the user is
|
|
// already logged in to the site.
|
|
for (var i = pwFields[0].index - 1; i >= 0; i--) {
|
|
if (form.elements[i].type == "text") {
|
|
usernameField = form.elements[i];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!usernameField)
|
|
this.log("(form -- no username field found)");
|
|
|
|
|
|
// If we're not submitting a form (it's a page load), there are no
|
|
// password field values for us to use for identifying fields. So,
|
|
// just assume the first password field is the one to be filled in.
|
|
if (!isSubmission || pwFields.length == 1)
|
|
return [usernameField, pwFields[0].element, null];
|
|
|
|
|
|
// Try to figure out WTF is in the form based on the password values.
|
|
var oldPasswordField, newPasswordField;
|
|
var pw1 = pwFields[0].element.value;
|
|
var pw2 = pwFields[1].element.value;
|
|
var pw3 = (pwFields[2] ? pwFields[2].element.value : null);
|
|
|
|
if (pwFields.length == 3) {
|
|
// Look for two identical passwords, that's the new password
|
|
|
|
if (pw1 == pw2 && pw2 == pw3) {
|
|
// All 3 passwords the same? Weird! Treat as if 1 pw field.
|
|
newPasswordField = pwFields[0].element;
|
|
oldPasswordField = null;
|
|
} else if (pw1 == pw2) {
|
|
newPasswordField = pwFields[0].element;
|
|
oldPasswordField = pwFields[2].element;
|
|
} else if (pw2 == pw3) {
|
|
oldPasswordField = pwFields[0].element;
|
|
newPasswordField = pwFields[2].element;
|
|
} else if (pw1 == pw3) {
|
|
// A bit odd, but could make sense with the right page layout.
|
|
newPasswordField = pwFields[0].element;
|
|
oldPasswordField = pwFields[1].element;
|
|
} else {
|
|
// We can't tell which of the 3 passwords should be saved.
|
|
this.log("(form ignored -- all 3 pw fields differ)");
|
|
return [null, null, null];
|
|
}
|
|
} else { // pwFields.length == 2
|
|
if (pw1 == pw2) {
|
|
// Treat as if 1 pw field
|
|
newPasswordField = pwFields[0].element;
|
|
oldPasswordField = null;
|
|
} else {
|
|
// Just assume that the 2nd password is the new password
|
|
oldPasswordField = pwFields[0].element;
|
|
newPasswordField = pwFields[1].element;
|
|
}
|
|
}
|
|
|
|
return [usernameField, newPasswordField, oldPasswordField];
|
|
},
|
|
|
|
|
|
/* ---------- Private methods ---------- */
|
|
|
|
|
|
/*
|
|
* _getPasswordFields
|
|
*
|
|
* Returns an array of password field elements for the specified form.
|
|
* If no pw fields are found, or if more than 3 are found, then null
|
|
* is returned.
|
|
*
|
|
* skipEmptyFields can be set to ignore password fields with no value.
|
|
*/
|
|
_getPasswordFields : function (form, skipEmptyFields) {
|
|
// Locate the password fields in the form.
|
|
var pwFields = [];
|
|
for (var i = 0; i < form.elements.length; i++) {
|
|
var element = form.elements[i];
|
|
if (!(element instanceof Ci.nsIDOMHTMLInputElement) ||
|
|
element.type != "password")
|
|
continue;
|
|
|
|
if (skipEmptyFields && !element.value)
|
|
continue;
|
|
|
|
pwFields[pwFields.length] = {
|
|
index : i,
|
|
element : element
|
|
};
|
|
}
|
|
|
|
// If too few or too many fields, bail out.
|
|
if (pwFields.length == 0) {
|
|
this.log("(form ignored -- no password fields.)");
|
|
return null;
|
|
} else if (pwFields.length > 3) {
|
|
this.log("(form ignored -- too many password fields. [got " +
|
|
pwFields.length + "])");
|
|
return null;
|
|
}
|
|
|
|
return pwFields;
|
|
},
|
|
|
|
|
|
/**
|
|
* Notify observers about an attempt to fill a form that resulted in some
|
|
* saved logins being found for the form.
|
|
*
|
|
* This does not get called if the login manager attempts to fill a form
|
|
* but does not find any saved logins. It does, however, get called when
|
|
* the login manager does find saved logins whether or not it actually
|
|
* fills the form with one of them.
|
|
*
|
|
* @param didntFillReason {String}
|
|
* the reason the login manager didn't fill the form, if any;
|
|
* if the value of this parameter is null, then the form was filled;
|
|
* otherwise, this parameter will be one of these values:
|
|
* existingUsername: the username field already contains a username
|
|
* that doesn't match any stored usernames
|
|
* existingPassword: the password field already contains a password
|
|
* autocompleteOff: autocomplete has been disabled for the form
|
|
* or its username or password fields
|
|
* multipleLogins: we have multiple logins for the form
|
|
* noAutofillForms: the autofillForms pref is set to false
|
|
*
|
|
* @param usernameField {HTMLInputElement}
|
|
* the username field detected by the login manager, if any;
|
|
* otherwise null
|
|
*
|
|
* @param passwordField {HTMLInputElement}
|
|
* the password field detected by the login manager
|
|
*
|
|
* @param foundLogins {Array}
|
|
* an array of nsILoginInfos that can be used to fill the form
|
|
*
|
|
* @param selectedLogin {nsILoginInfo}
|
|
* the nsILoginInfo that was/would be used to fill the form, if any;
|
|
* otherwise null; whether or not it was actually used depends on
|
|
* the value of the didntFillReason parameter
|
|
*/
|
|
_notifyFoundLogins : function (didntFillReason, usernameField,
|
|
passwordField, foundLogins, selectedLogin) {
|
|
// We need .setProperty(), which is a method on the original
|
|
// nsIWritablePropertyBag. Strangley enough, nsIWritablePropertyBag2
|
|
// doesn't inherit from that, so the additional QI is needed.
|
|
let formInfo = Cc["@mozilla.org/hash-property-bag;1"].
|
|
createInstance(Ci.nsIWritablePropertyBag2).
|
|
QueryInterface(Ci.nsIWritablePropertyBag);
|
|
|
|
formInfo.setPropertyAsACString("didntFillReason", didntFillReason);
|
|
formInfo.setPropertyAsInterface("usernameField", usernameField);
|
|
formInfo.setPropertyAsInterface("passwordField", passwordField);
|
|
formInfo.setProperty("foundLogins", foundLogins.concat());
|
|
formInfo.setPropertyAsInterface("selectedLogin", selectedLogin);
|
|
|
|
Services.obs.notifyObservers(formInfo, "passwordmgr-found-logins", null);
|
|
},
|
|
|
|
/*
|
|
* _attachToInput
|
|
*
|
|
* Hooks up autocomplete support to a username field, to allow
|
|
* a user editing the field to select an existing login and have
|
|
* the password field filled in.
|
|
*/
|
|
_attachToInput : function (element) {
|
|
this.log("attaching autocomplete stuff");
|
|
element.addEventListener("blur",
|
|
this._domEventListener, false);
|
|
element.addEventListener("DOMAutoComplete",
|
|
this._domEventListener, false);
|
|
this._formFillService.markAsLoginManagerField(element);
|
|
},
|
|
|
|
/*
|
|
* _fillDocument
|
|
*
|
|
* Called when a page has loaded. For each form in the document,
|
|
* we ask the parent process to see if it can be filled with a stored login
|
|
* and fill them in with the results
|
|
*/
|
|
_fillDocument : function (doc) {
|
|
var forms = doc.forms;
|
|
if (!forms || forms.length == 0)
|
|
return;
|
|
|
|
this.log("_fillDocument processing " + forms.length +
|
|
" forms on " + doc.documentURI);
|
|
|
|
var autofillForm = !this._inPrivateBrowsing &&
|
|
Services.prefs.getBoolPref("signon.autofillForms");
|
|
|
|
// actionOrigins is a list of each form's action origins for this
|
|
// document. The parent process needs this to find the passwords
|
|
// for each action origin.
|
|
var actionOrigins = [];
|
|
|
|
for (var i = 0; i < forms.length; i++) {
|
|
var form = forms[i];
|
|
let [, passwordField, ] = this._getFormFields(form, false);
|
|
if (passwordField) {
|
|
var actionOrigin = this._getActionOrigin(form);
|
|
actionOrigins.push(actionOrigin);
|
|
}
|
|
} // foreach form
|
|
|
|
if (!actionOrigins.length)
|
|
return;
|
|
|
|
var formOrigin = this._getPasswordOrigin(doc.documentURI);
|
|
var foundLogins = this._getPasswords(actionOrigins, formOrigin);
|
|
|
|
for (var i = 0; i < forms.length; i++) {
|
|
var form = forms[i];
|
|
var actionOrigin = this._getActionOrigin(form);
|
|
if (foundLogins[actionOrigin]) {
|
|
this.log("_fillDocument processing form[" + i + "]");
|
|
this._fillForm(form, autofillForm, false, false,
|
|
foundLogins[actionOrigin]);
|
|
}
|
|
} // foreach form
|
|
},
|
|
|
|
/*
|
|
* _getPasswords
|
|
*
|
|
* Retrieve passwords from parent process and prepare logins to be passed to
|
|
* _fillForm. Returns map from action origins to passwords.
|
|
*/
|
|
_getPasswords: function(actionOrigins, formOrigin) {
|
|
// foundLogins will be a map from action origins to passwords.
|
|
var message = sendSyncMessage("PasswordMgr:GetPasswords", {
|
|
actionOrigins: actionOrigins,
|
|
formOrigin: formOrigin
|
|
})[0];
|
|
|
|
// XXX need to somehow respond to the UI being busy
|
|
// not needed for Fennec yet
|
|
|
|
var foundLogins = message.foundLogins;
|
|
|
|
// Each password will be a JSON-unserialized object, but they need to be
|
|
// nsILoginInfo's.
|
|
for (var key in foundLogins) {
|
|
var logins = foundLogins[key];
|
|
for (var i = 0; i < logins.length; i++) {
|
|
var obj = logins[i];
|
|
logins[i] = new this._nsLoginInfo();
|
|
logins[i].init(obj.hostname, obj.formSubmitURL, obj.httpRealm,
|
|
obj.username, obj.password,
|
|
obj.usernameField, obj.passwordField);
|
|
}
|
|
}
|
|
|
|
return foundLogins;
|
|
},
|
|
|
|
/*
|
|
* _onFormSubmit
|
|
*
|
|
* Called by the our observer when notified of a form submission.
|
|
* [Note that this happens before any DOM onsubmit handlers are invoked.]
|
|
* Looks for a password change in the submitted form, so we can update
|
|
* our stored password.
|
|
*/
|
|
_onFormSubmit : function (form) {
|
|
if (this._inPrivateBrowsing) {
|
|
// We won't do anything in private browsing mode anyway,
|
|
// so there's no need to perform further checks.
|
|
this.log("(form submission ignored in private browsing mode)");
|
|
return;
|
|
}
|
|
|
|
var doc = form.ownerDocument;
|
|
|
|
// If password saving is disabled (globally or for host), bail out now.
|
|
if (!this._remember)
|
|
return;
|
|
|
|
var hostname = this._getPasswordOrigin(doc.documentURI);
|
|
var formSubmitURL = this._getActionOrigin(form);
|
|
|
|
|
|
// Get the appropriate fields from the form.
|
|
var [usernameField, newPasswordField, oldPasswordField] =
|
|
this._getFormFields(form, true);
|
|
|
|
// Need at least 1 valid password field to do anything.
|
|
if (newPasswordField == null)
|
|
return;
|
|
|
|
// Check for autocomplete=off attribute. We don't use it to prevent
|
|
// autofilling (for existing logins), but won't save logins when it's
|
|
// present.
|
|
// XXX spin out a bug that we don't update timeLastUsed in this case?
|
|
if (this._isAutocompleteDisabled(form) ||
|
|
this._isAutocompleteDisabled(usernameField) ||
|
|
this._isAutocompleteDisabled(newPasswordField) ||
|
|
this._isAutocompleteDisabled(oldPasswordField)) {
|
|
this.log("(form submission ignored -- autocomplete=off found)");
|
|
return;
|
|
}
|
|
|
|
sendSyncMessage("PasswordMgr:FormSubmitted", {
|
|
hostname: hostname,
|
|
formSubmitURL: formSubmitURL,
|
|
usernameField: usernameField ? usernameField.name : "",
|
|
usernameValue: usernameField ? usernameField.value : "",
|
|
passwordField: newPasswordField.name,
|
|
passwordValue: newPasswordField.value,
|
|
hasOldPasswordField: !!oldPasswordField
|
|
});
|
|
},
|
|
|
|
/* ---------- Utility objects ---------- */
|
|
|
|
/*
|
|
* _observer object
|
|
*
|
|
* Internal utility object, implements the nsIObserver interface.
|
|
* Used to receive notification for: form submission, preference changes.
|
|
*/
|
|
_observer : {
|
|
_pwmgr : null,
|
|
|
|
QueryInterface : XPCOMUtils.generateQI([Ci.nsIObserver,
|
|
Ci.nsIFormSubmitObserver,
|
|
Ci.nsISupportsWeakReference]),
|
|
|
|
|
|
// nsFormSubmitObserver
|
|
notify : function (formElement, aWindow, actionURI) {
|
|
// Counterintuitively, form submit observers fire for content that
|
|
// may not be the content in this context.
|
|
if (aWindow.top != content)
|
|
return true;
|
|
|
|
this._pwmgr.log("observer notified for form submission.");
|
|
|
|
// We're invoked before the content's |onsubmit| handlers, so we
|
|
// can grab form data before it might be modified (see bug 257781).
|
|
|
|
try {
|
|
this._pwmgr._onFormSubmit(formElement);
|
|
} catch (e) {
|
|
this._pwmgr.log("Caught error in onFormSubmit: " + e);
|
|
}
|
|
|
|
return true; // Always return true, or form submit will be canceled.
|
|
},
|
|
|
|
observe : function (aSubject, aTopic, aData) {
|
|
this._pwmgr._debug = Services.prefs.getBoolPref("signon.debug");
|
|
this._pwmgr._remember = Services.prefs.getBoolPref("signon.rememberSignons");
|
|
}
|
|
},
|
|
|
|
|
|
/*
|
|
* _domEventListener object
|
|
*
|
|
* Internal utility object, implements nsIDOMEventListener
|
|
* Used to catch certain DOM events needed to properly implement form fill.
|
|
*/
|
|
_domEventListener : {
|
|
_pwmgr : null,
|
|
|
|
QueryInterface : XPCOMUtils.generateQI([Ci.nsIDOMEventListener,
|
|
Ci.nsISupportsWeakReference]),
|
|
|
|
|
|
handleEvent : function (event) {
|
|
if (!event.isTrusted)
|
|
return;
|
|
|
|
this._pwmgr.log("domEventListener: got event " + event.type);
|
|
|
|
switch (event.type) {
|
|
case "DOMAutoComplete":
|
|
case "blur":
|
|
var acInputField = event.target;
|
|
var acForm = acInputField.form;
|
|
|
|
// If the username is blank, bail out now -- we don't want
|
|
// _fillForm() to try filling in a login without a username
|
|
// to filter on (bug 471906).
|
|
if (!acInputField.value)
|
|
return;
|
|
|
|
// Make sure the username field _fillForm will use is the
|
|
// same field as the autocomplete was activated on. If
|
|
// not, the DOM has been altered and we'll just give up.
|
|
var [usernameField, passwordField, ignored] =
|
|
this._pwmgr._getFormFields(acForm, false);
|
|
if (usernameField == acInputField && passwordField) {
|
|
var actionOrigin = this._pwmgr._getActionOrigin(acForm);
|
|
var formOrigin = this._pwmgr._getPasswordOrigin(acForm.ownerDocument.documentURI);
|
|
var foundLogins = this._pwmgr._getPasswords([actionOrigin], formOrigin);
|
|
this._pwmgr._fillForm(acForm, true, true, true, foundLogins[actionOrigin]);
|
|
} else {
|
|
this._pwmgr.log("Oops, form changed before AC invoked");
|
|
}
|
|
return;
|
|
|
|
case "pageshow":
|
|
// Only process when we need to
|
|
if (this._pwmgr._remember && event.target instanceof Ci.nsIDOMHTMLDocument)
|
|
this._pwmgr._fillDocument(event.target);
|
|
break;
|
|
|
|
case "unload":
|
|
Services.prefs.removeObserver("signon.", this._pwmgr._observer);
|
|
Services.obs.removeObserver(this._pwmgr._observer, "earlyformsubmit");
|
|
break;
|
|
|
|
default:
|
|
this._pwmgr.log("Oops! This event unexpected.");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
loginManager.init();
|