From 1fe9c19305dadf2d5bcaa0e589fcd250389dfa8a Mon Sep 17 00:00:00 2001 From: Moonchild Date: Mon, 21 Jun 2021 17:52:42 +0000 Subject: [PATCH] Issue #1751 - Remove Mac code behind MOZ_WIDGET_TOOLKIT == 'cocoa' --- accessible/base/moz.build | 4 - accessible/generic/moz.build | 4 - accessible/html/moz.build | 4 - accessible/ipc/moz.build | 4 - accessible/ipc/other/moz.build | 4 - accessible/mac/ARIAGridAccessibleWrap.h | 22 - accessible/mac/AccessibleWrap.h | 103 -- accessible/mac/AccessibleWrap.mm | 256 ---- accessible/mac/ApplicationAccessibleWrap.h | 22 - accessible/mac/DocAccessibleWrap.h | 25 - accessible/mac/DocAccessibleWrap.mm | 21 - accessible/mac/HTMLTableAccessibleWrap.h | 24 - accessible/mac/HyperTextAccessibleWrap.h | 20 - accessible/mac/ImageAccessibleWrap.h | 22 - accessible/mac/MacUtils.h | 26 - accessible/mac/MacUtils.mm | 32 - accessible/mac/Platform.mm | 174 --- accessible/mac/RootAccessibleWrap.h | 34 - accessible/mac/RootAccessibleWrap.mm | 53 - accessible/mac/TextLeafAccessibleWrap.h | 19 - accessible/mac/XULListboxAccessibleWrap.h | 20 - accessible/mac/XULMenuAccessibleWrap.h | 19 - accessible/mac/XULTreeGridAccessibleWrap.h | 20 - accessible/mac/moz.build | 44 - accessible/mac/mozAccessible.h | 181 --- accessible/mac/mozAccessible.mm | 1197 ---------------- accessible/mac/mozAccessibleProtocol.h | 69 - accessible/mac/mozActionElements.h | 37 - accessible/mac/mozActionElements.mm | 340 ----- accessible/mac/mozDocAccessible.h | 31 - accessible/mac/mozDocAccessible.mm | 111 -- accessible/mac/mozHTMLAccessible.h | 16 - accessible/mac/mozHTMLAccessible.mm | 141 -- accessible/mac/mozTableAccessible.h | 28 - accessible/mac/mozTableAccessible.mm | 281 ---- accessible/mac/mozTextAccessible.h | 17 - accessible/mac/mozTextAccessible.mm | 627 --------- accessible/moz.build | 2 - accessible/xpcom/moz.build | 4 - accessible/xul/moz.build | 4 - build/gyp.mozbuild | 1 - db/sqlite3/src/moz.build | 4 - embedding/components/build/moz.build | 5 - embedding/components/printingui/mac/moz.build | 15 - .../printingui/mac/nsPrintProgress.cpp | 213 --- .../printingui/mac/nsPrintProgress.h | 44 - .../printingui/mac/nsPrintProgressParams.cpp | 47 - .../printingui/mac/nsPrintProgressParams.h | 28 - .../printingui/mac/nsPrintingPromptService.h | 43 - .../mac/nsPrintingPromptServiceX.mm | 128 -- embedding/components/printingui/moz.build | 2 - gfx/cairo/cairo/src/moz.build | 4 +- .../basic/MacIOSurfaceTextureHostBasic.cpp | 107 -- .../basic/MacIOSurfaceTextureHostBasic.h | 97 -- gfx/layers/ipc/ShadowLayerUtilsMac.cpp | 40 - gfx/layers/moz.build | 25 - gfx/layers/opengl/GLManager.cpp | 70 - gfx/layers/opengl/GLManager.h | 44 - .../opengl/MacIOSurfaceTextureClientOGL.cpp | 140 -- .../opengl/MacIOSurfaceTextureClientOGL.h | 58 - .../opengl/MacIOSurfaceTextureHostOGL.cpp | 180 --- .../opengl/MacIOSurfaceTextureHostOGL.h | 114 -- gfx/skia/generate_mozbuild.py | 3 +- gfx/skia/moz.build | 3 +- image/decoders/icon/mac/moz.build | 10 - image/decoders/icon/mac/nsIconChannel.h | 59 - image/decoders/icon/mac/nsIconChannelCocoa.mm | 565 -------- image/decoders/icon/moz.build | 3 - image/decoders/moz.build | 3 - intl/locale/mac/moz.build | 15 - intl/locale/mac/nsCollationMacUC.cpp | 253 ---- intl/locale/mac/nsCollationMacUC.h | 44 - intl/locale/mac/nsDateTimeFormatMac.cpp | 266 ---- intl/locale/mac/nsDateTimeFormatMac.h | 61 - intl/locale/mac/nsMacCharset.cpp | 59 - intl/locale/moz.build | 2 - intl/lwbrk/moz.build | 4 - intl/lwbrk/nsCarbonBreaker.cpp | 44 - js/xpconnect/shell/moz.build | 5 - js/xpconnect/shell/xpcshellMacUtils.h | 8 - js/xpconnect/shell/xpcshellMacUtils.mm | 18 - layout/build/moz.build | 4 - layout/reftests/reftest.list | 3 - mailnews/base/ispdata/moz.build | 4 +- mailnews/base/src/moz.build | 2 - mailnews/base/src/nsMessengerOSXIntegration.h | 63 - .../base/src/nsMessengerOSXIntegration.mm | 700 ---------- mailnews/build/moz.build | 4 - mailnews/compose/src/moz.build | 10 - mailnews/compose/src/nsMsgAppleCodes.h | 106 -- mailnews/compose/src/nsMsgAppleDouble.h | 207 --- .../compose/src/nsMsgAppleDoubleEncode.cpp | 266 ---- mailnews/compose/src/nsMsgAppleEncode.cpp | 703 ---------- mailnews/import/build/moz.build | 7 - media/libcubeb/src/cubeb_osx_run_loop.c | 11 - media/libcubeb/src/cubeb_osx_run_loop.h | 22 - media/libcubeb/src/moz.build | 4 - netwerk/base/NetworkInfoServiceCocoa.cpp | 103 -- netwerk/base/moz.build | 9 - netwerk/base/nsURLHelperOSX.cpp | 216 --- netwerk/build/moz.build | 7 +- .../mdns/libmdns/MDNSResponderOperator.cpp | 779 ----------- .../dns/mdns/libmdns/MDNSResponderOperator.h | 152 --- .../dns/mdns/libmdns/MDNSResponderReply.cpp | 302 ----- netwerk/dns/mdns/libmdns/MDNSResponderReply.h | 164 --- netwerk/dns/mdns/libmdns/moz.build | 38 +- .../mdns/libmdns/nsDNSServiceDiscovery.cpp | 262 ---- .../dns/mdns/libmdns/nsDNSServiceDiscovery.h | 49 - netwerk/streamconv/converters/moz.build | 6 +- netwerk/system/mac/moz.build | 13 - netwerk/system/mac/nsNetworkLinkService.h | 54 - netwerk/system/mac/nsNetworkLinkService.mm | 526 ------- netwerk/system/moz.build | 2 - toolkit/components/parentalcontrols/moz.build | 2 - .../nsParentalControlsServiceCocoa.mm | 79 -- toolkit/components/startup/moz.build | 6 +- toolkit/components/startup/nsUserInfoMac.h | 25 - toolkit/components/startup/nsUserInfoMac.mm | 84 -- toolkit/library/moz.build | 42 +- toolkit/modules/moz.build | 2 +- toolkit/moz.build | 2 - toolkit/moz.configure | 8 +- toolkit/mozapps/update/updater/Makefile.in | 13 - .../mozapps/update/updater/launchchild_osx.mm | 384 ------ .../updater/macbuild/Contents/Info.plist.in | 39 - .../update/updater/macbuild/Contents/PkgInfo | 1 - .../English.lproj/InfoPlist.strings.in | 7 - .../English.lproj/MainMenu.nib/classes.nib | 19 - .../English.lproj/MainMenu.nib/info.nib | 22 - .../MainMenu.nib/keyedobjects.nib | Bin 5567 -> 0 bytes .../macbuild/Contents/Resources/updater.icns | Bin 55969 -> 0 bytes toolkit/mozapps/update/updater/moz.build | 15 +- .../mozapps/update/updater/progressui_osx.mm | 144 -- .../update/updater/updater-common.build | 18 - toolkit/system/osxproxy/ProxyUtils.h | 21 - toolkit/system/osxproxy/ProxyUtils.mm | 182 --- toolkit/system/osxproxy/moz.build | 13 - .../osxproxy/nsOSXSystemProxySettings.mm | 326 ----- .../tests/gtest/TestProxyBypassRules.cpp | 41 - toolkit/system/osxproxy/tests/gtest/moz.build | 17 - toolkit/themes/moz.build | 4 +- .../osx/global/10pct_transparent_grey.png | Bin 123 -> 0 bytes .../osx/global/50pct_transparent_grey.png | Bin 107 -> 0 bytes toolkit/themes/osx/global/alerts/alert.css | 30 - toolkit/themes/osx/global/arrow.css | 38 - .../themes/osx/global/arrow/arrow-dn-dis.gif | Bin 65 -> 0 bytes .../themes/osx/global/arrow/arrow-dn-dis.png | Bin 185 -> 0 bytes .../osx/global/arrow/arrow-dn-sharp.gif | Bin 51 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-dn.gif | Bin 56 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-dn.png | Bin 191 -> 0 bytes .../themes/osx/global/arrow/arrow-lft-dis.gif | Bin 105 -> 0 bytes .../themes/osx/global/arrow/arrow-lft-hov.gif | Bin 57 -> 0 bytes .../osx/global/arrow/arrow-lft-sharp-end.gif | Bin 56 -> 0 bytes .../osx/global/arrow/arrow-lft-sharp.gif | Bin 53 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-lft.gif | Bin 57 -> 0 bytes .../themes/osx/global/arrow/arrow-rit-dis.gif | Bin 105 -> 0 bytes .../themes/osx/global/arrow/arrow-rit-hov.gif | Bin 57 -> 0 bytes .../osx/global/arrow/arrow-rit-sharp-end.gif | Bin 56 -> 0 bytes .../osx/global/arrow/arrow-rit-sharp.gif | Bin 53 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-rit.gif | Bin 57 -> 0 bytes .../themes/osx/global/arrow/arrow-up-dis.gif | Bin 65 -> 0 bytes .../osx/global/arrow/arrow-up-sharp.gif | Bin 52 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-up.gif | Bin 56 -> 0 bytes .../global/arrow/panelarrow-horizontal.png | Bin 117 -> 0 bytes .../global/arrow/panelarrow-horizontal@2x.png | Bin 267 -> 0 bytes .../osx/global/arrow/panelarrow-vertical.png | Bin 133 -> 0 bytes .../global/arrow/panelarrow-vertical@2x.png | Bin 227 -> 0 bytes toolkit/themes/osx/global/autocomplete.css | 174 --- toolkit/themes/osx/global/button.css | 85 -- toolkit/themes/osx/global/checkbox.css | 39 - .../osx/global/checkbox/cbox-check-dis.gif | Bin 60 -> 0 bytes .../themes/osx/global/checkbox/cbox-check.gif | Bin 54 -> 0 bytes toolkit/themes/osx/global/colorpicker.css | 41 - toolkit/themes/osx/global/commonDialog.css | 35 - .../global/console/console-error-caret.gif | Bin 55 -> 0 bytes .../osx/global/console/console-error-dash.gif | Bin 48 -> 0 bytes toolkit/themes/osx/global/console/console.css | 165 --- .../themes/osx/global/customizeToolbar.css | 38 - toolkit/themes/osx/global/datetimepicker.css | 126 -- toolkit/themes/osx/global/dialog.css | 77 -- .../osx/global/dirListing/dirListing.css | 104 -- .../themes/osx/global/dirListing/folder.png | Bin 325 -> 0 bytes .../themes/osx/global/dirListing/remote.png | Bin 563 -> 0 bytes toolkit/themes/osx/global/dirListing/up.png | Bin 617 -> 0 bytes toolkit/themes/osx/global/dropmarker.css | 31 - toolkit/themes/osx/global/filefield.css | 38 - toolkit/themes/osx/global/filters.svg | 14 - toolkit/themes/osx/global/findBar.css | 270 ---- toolkit/themes/osx/global/global.css | 378 ------ toolkit/themes/osx/global/groupbox.css | 30 - toolkit/themes/osx/global/icons/Error.png | Bin 1439 -> 0 bytes .../global/icons/autocomplete-dropmarker.png | Bin 234 -> 0 bytes .../osx/global/icons/autocomplete-search.svg | 22 - .../themes/osx/global/icons/autoscroll.png | Bin 2983 -> 0 bytes .../themes/osx/global/icons/blacklist_64.png | Bin 3771 -> 0 bytes .../osx/global/icons/blacklist_favicon.png | Bin 543 -> 0 bytes toolkit/themes/osx/global/icons/checkbox.png | Bin 1737 -> 0 bytes .../themes/osx/global/icons/checkbox@2x.png | Bin 1824 -> 0 bytes .../osx/global/icons/chevron-inverted.png | Bin 247 -> 0 bytes .../osx/global/icons/chevron-inverted@2x.png | Bin 481 -> 0 bytes toolkit/themes/osx/global/icons/chevron.png | Bin 251 -> 0 bytes .../themes/osx/global/icons/chevron@2x.png | Bin 462 -> 0 bytes toolkit/themes/osx/global/icons/close.png | Bin 1240 -> 0 bytes toolkit/themes/osx/global/icons/close@2x.png | Bin 2768 -> 0 bytes toolkit/themes/osx/global/icons/error-16.png | Bin 677 -> 0 bytes toolkit/themes/osx/global/icons/error-64.png | Bin 2533 -> 0 bytes .../themes/osx/global/icons/error-large.png | Bin 1996 -> 0 bytes .../osx/global/icons/glyph-dropdown.png | Bin 99 -> 0 bytes .../osx/global/icons/glyph-dropdown@2x.png | Bin 130 -> 0 bytes .../osx/global/icons/information-16.png | Bin 818 -> 0 bytes .../osx/global/icons/information-24.png | Bin 1289 -> 0 bytes .../osx/global/icons/information-32.png | Bin 1773 -> 0 bytes .../osx/global/icons/information-64.png | Bin 3687 -> 0 bytes .../osx/global/icons/information-large.png | Bin 2592 -> 0 bytes .../themes/osx/global/icons/loading_16.png | Bin 9025 -> 0 bytes .../osx/global/icons/menulist-dropmarker.png | Bin 158 -> 0 bytes toolkit/themes/osx/global/icons/notfound.png | Bin 597 -> 0 bytes .../themes/osx/global/icons/notloading_16.png | Bin 686 -> 0 bytes .../osx/global/icons/panebutton-active.png | Bin 400 -> 0 bytes .../osx/global/icons/panebutton-inactive.png | Bin 257 -> 0 bytes .../osx/global/icons/panel-dropmarker.png | Bin 161 -> 0 bytes .../themes/osx/global/icons/question-16.png | Bin 866 -> 0 bytes .../themes/osx/global/icons/question-32.png | Bin 1962 -> 0 bytes .../themes/osx/global/icons/question-64.png | Bin 3970 -> 0 bytes .../osx/global/icons/question-large.png | Bin 2851 -> 0 bytes .../themes/osx/global/icons/resizer-rtl.png | Bin 192 -> 0 bytes .../osx/global/icons/resizer-rtl@2x.png | Bin 284 -> 0 bytes toolkit/themes/osx/global/icons/resizer.png | Bin 196 -> 0 bytes .../themes/osx/global/icons/resizer@2x.png | Bin 288 -> 0 bytes .../osx/global/icons/search-textbox.svg | 13 - .../osx/global/icons/searchfield-cancel.svg | 20 - .../themes/osx/global/icons/sslWarning.png | Bin 4120 -> 0 bytes .../osx/global/icons/tabprompts-bgtexture.png | Bin 5940 -> 0 bytes .../themes/osx/global/icons/warning-16.png | Bin 690 -> 0 bytes .../themes/osx/global/icons/warning-32.png | Bin 1483 -> 0 bytes .../themes/osx/global/icons/warning-64.png | Bin 3308 -> 0 bytes .../themes/osx/global/icons/warning-large.png | Bin 2281 -> 0 bytes .../themes/osx/global/in-content/common.css | 121 -- .../osx/global/in-content/info-pages.css | 1 - toolkit/themes/osx/global/inContentUI.css | 144 -- toolkit/themes/osx/global/jar.mn | 156 --- toolkit/themes/osx/global/linkTree.css | 32 - toolkit/themes/osx/global/listbox.css | 113 -- toolkit/themes/osx/global/menu.css | 187 --- toolkit/themes/osx/global/menulist.css | 65 - toolkit/themes/osx/global/moz.build | 6 - .../themes/osx/global/nativescrollbars.css | 89 -- toolkit/themes/osx/global/netError.css | 145 -- toolkit/themes/osx/global/notification.css | 206 --- .../themes/osx/global/notification/close.png | Bin 795 -> 0 bytes .../osx/global/notification/error-icon.png | Bin 518 -> 0 bytes .../osx/global/notification/info-icon.png | Bin 533 -> 0 bytes .../osx/global/notification/warning-icon.png | Bin 626 -> 0 bytes toolkit/themes/osx/global/numberbox.css | 33 - toolkit/themes/osx/global/popup.css | 141 -- toolkit/themes/osx/global/preferences.css | 64 - toolkit/themes/osx/global/progressmeter.css | 22 - toolkit/themes/osx/global/radio.css | 43 - toolkit/themes/osx/global/resizer.css | 69 - toolkit/themes/osx/global/richlistbox.css | 27 - toolkit/themes/osx/global/scale.css | 46 - .../osx/global/scale/scale-tray-horiz.gif | Bin 50 -> 0 bytes .../osx/global/scale/scale-tray-vert.gif | Bin 50 -> 0 bytes toolkit/themes/osx/global/scrollbox.css | 62 - toolkit/themes/osx/global/shared.inc | 20 - toolkit/themes/osx/global/spinbuttons.css | 31 - toolkit/themes/osx/global/splitter.css | 124 -- toolkit/themes/osx/global/splitter/dimple.png | Bin 155 -> 0 bytes .../osx/global/splitter/grip-bottom.gif | Bin 145 -> 0 bytes .../themes/osx/global/splitter/grip-left.gif | Bin 157 -> 0 bytes .../themes/osx/global/splitter/grip-right.gif | Bin 157 -> 0 bytes .../themes/osx/global/splitter/grip-top.gif | Bin 144 -> 0 bytes toolkit/themes/osx/global/tabbox.css | 148 -- toolkit/themes/osx/global/tabprompts.css | 67 - toolkit/themes/osx/global/textbox.css | 102 -- toolkit/themes/osx/global/toolbar.css | 127 -- toolkit/themes/osx/global/toolbar/spring.png | Bin 239 -> 0 bytes .../osx/global/toolbar/toolbar-separator.png | Bin 115 -> 0 bytes toolkit/themes/osx/global/toolbarbutton.css | 124 -- toolkit/themes/osx/global/tree.css | 296 ---- .../osx/global/tree/arrow-disclosure.svg | 28 - .../themes/osx/global/tree/columnpicker.gif | Bin 68 -> 0 bytes toolkit/themes/osx/global/tree/folder.png | Bin 320 -> 0 bytes toolkit/themes/osx/global/tree/folder@2x.png | Bin 589 -> 0 bytes toolkit/themes/osx/global/viewbuttons.css | 36 - toolkit/themes/osx/global/wizard.css | 62 - toolkit/themes/osx/mochitests/.eslintrc.js | 7 - toolkit/themes/osx/mochitests/chrome.ini | 3 - .../themes/osx/mochitests/test_bug510426.xul | 54 - toolkit/themes/osx/moz.build | 8 - .../themes/osx/mozapps/downloads/buttons.png | Bin 2288 -> 0 bytes .../osx/mozapps/downloads/downloadIcon.png | Bin 1301 -> 0 bytes .../osx/mozapps/downloads/downloads.css | 123 -- .../mozapps/downloads/unknownContentType.css | 30 - .../themes/osx/mozapps/extensions/about.css | 78 -- .../mozapps/extensions/alerticon-error.png | Bin 3402 -> 0 bytes .../extensions/alerticon-info-negative.png | Bin 1564 -> 0 bytes .../extensions/alerticon-info-positive.png | Bin 1338 -> 0 bytes .../mozapps/extensions/alerticon-warning.png | Bin 1567 -> 0 bytes .../osx/mozapps/extensions/blocklist.css | 20 - .../themes/osx/mozapps/extensions/cancel.png | Bin 115 -> 0 bytes .../mozapps/extensions/category-available.png | Bin 1671 -> 0 bytes .../extensions/category-dictionaries.png | Bin 1769 -> 0 bytes .../mozapps/extensions/category-discover.png | Bin 1324 -> 0 bytes .../extensions/category-experiments.png | Bin 822 -> 0 bytes .../mozapps/extensions/category-plugins.png | Bin 886 -> 0 bytes .../mozapps/extensions/category-recent.png | Bin 1642 -> 0 bytes .../mozapps/extensions/category-search.png | Bin 2600 -> 0 bytes .../extensions/category-searchengines.png | Bin 2814 -> 0 bytes .../mozapps/extensions/category-service.png | Bin 2063 -> 0 bytes .../extensions/dictionaryGeneric-16.png | Bin 742 -> 0 bytes .../mozapps/extensions/dictionaryGeneric.png | Bin 1769 -> 0 bytes .../osx/mozapps/extensions/discover-logo.png | Bin 12007 -> 0 bytes .../themes/osx/mozapps/extensions/eula.css | 47 - .../mozapps/extensions/experimentGeneric.png | Bin 822 -> 0 bytes .../extensions/extensionGeneric-16.png | Bin 554 -> 0 bytes .../mozapps/extensions/extensionGeneric.png | Bin 1302 -> 0 bytes .../osx/mozapps/extensions/extensions.css | 1206 ----------------- .../themes/osx/mozapps/extensions/heart.png | Bin 2949 -> 0 bytes .../osx/mozapps/extensions/localeGeneric.png | Bin 2410 -> 0 bytes .../osx/mozapps/extensions/navigation.png | Bin 586 -> 0 bytes .../osx/mozapps/extensions/newaddon.css | 112 -- .../osx/mozapps/extensions/rating-not-won.png | Bin 1559 -> 0 bytes .../osx/mozapps/extensions/rating-won.png | Bin 1662 -> 0 bytes .../themes/osx/mozapps/extensions/search.png | Bin 423 -> 0 bytes .../osx/mozapps/extensions/selectAddons.css | 163 --- .../extensions/stripes-compatibility.png | Bin 1041 -> 0 bytes .../osx/mozapps/extensions/stripes-error.png | Bin 1979 -> 0 bytes .../extensions/stripes-info-negative.png | Bin 2027 -> 0 bytes .../extensions/stripes-info-positive.png | Bin 1852 -> 0 bytes .../mozapps/extensions/stripes-warning.png | Bin 2177 -> 0 bytes .../mozapps/extensions/themeGeneric-16.png | Bin 710 -> 0 bytes .../osx/mozapps/extensions/themeGeneric.png | Bin 2185 -> 0 bytes .../extensions/toolbarbutton-dropmarker.png | Bin 147 -> 0 bytes .../themes/osx/mozapps/extensions/update.css | 26 - .../mozapps/extensions/xpinstallConfirm.css | 90 -- .../themes/osx/mozapps/handling/handling.css | 30 - toolkit/themes/osx/mozapps/jar.mn | 79 -- toolkit/themes/osx/mozapps/moz.build | 6 - .../themes/osx/mozapps/passwordmgr/key-16.png | Bin 773 -> 0 bytes .../themes/osx/mozapps/passwordmgr/key-64.png | Bin 6142 -> 0 bytes .../themes/osx/mozapps/passwordmgr/key.png | Bin 658 -> 0 bytes .../mozapps/plugins/notifyPluginGeneric.png | Bin 313 -> 0 bytes .../osx/mozapps/plugins/pluginBlocked-64.png | Bin 4563 -> 0 bytes .../osx/mozapps/plugins/pluginBlocked.png | Bin 2152 -> 0 bytes .../osx/mozapps/plugins/pluginGeneric-16.png | Bin 759 -> 0 bytes .../osx/mozapps/plugins/pluginGeneric.png | Bin 1939 -> 0 bytes .../osx/mozapps/plugins/pluginHelp-16.png | Bin 620 -> 0 bytes .../osx/mozapps/profile/profileSelection.css | 29 - .../mozapps/profile/profileicon-selected.png | Bin 502 -> 0 bytes .../osx/mozapps/profile/profileicon.png | Bin 588 -> 0 bytes toolkit/themes/osx/mozapps/update/buttons.png | Bin 2288 -> 0 bytes toolkit/themes/osx/mozapps/update/updates.css | 171 --- .../osx/mozapps/viewsource/viewsource.css | 5 - toolkit/themes/osx/reftests/482681-ref.xul | 21 - toolkit/themes/osx/reftests/482681.xul | 22 - toolkit/themes/osx/reftests/baseline.xul | 175 --- .../themes/osx/reftests/checkboxsize-ref.xul | 32 - toolkit/themes/osx/reftests/checkboxsize.xul | 31 - toolkit/themes/osx/reftests/nostretch-ref.xul | 107 -- toolkit/themes/osx/reftests/nostretch.xul | 120 -- toolkit/themes/osx/reftests/radiosize-ref.xul | 32 - toolkit/themes/osx/reftests/radiosize.xul | 31 - .../themes/osx/reftests/reftest-stylo.list | 6 - toolkit/themes/osx/reftests/reftest.list | 5 - toolkit/xre/MacApplicationDelegate.h | 16 - toolkit/xre/MacApplicationDelegate.mm | 396 ------ toolkit/xre/MacAutoreleasePool.h | 31 - toolkit/xre/MacAutoreleasePool.mm | 20 - toolkit/xre/MacLaunchHelper.h | 23 - toolkit/xre/MacLaunchHelper.mm | 137 -- toolkit/xre/moz.build | 15 - .../exthandler/mac/nsDecodeAppleFile.cpp | 389 ------ uriloader/exthandler/mac/nsDecodeAppleFile.h | 118 -- .../exthandler/mac/nsLocalHandlerAppMac.h | 26 - .../exthandler/mac/nsLocalHandlerAppMac.mm | 84 -- uriloader/exthandler/mac/nsMIMEInfoMac.h | 34 - uriloader/exthandler/mac/nsMIMEInfoMac.mm | 114 -- .../exthandler/mac/nsOSHelperAppService.h | 48 - .../exthandler/mac/nsOSHelperAppService.mm | 569 -------- uriloader/exthandler/moz.build | 10 +- xpcom/build/moz.build | 3 - xulrunner/stub/moz.build | 7 - 383 files changed, 36 insertions(+), 22788 deletions(-) delete mode 100644 accessible/mac/ARIAGridAccessibleWrap.h delete mode 100644 accessible/mac/AccessibleWrap.h delete mode 100644 accessible/mac/AccessibleWrap.mm delete mode 100644 accessible/mac/ApplicationAccessibleWrap.h delete mode 100644 accessible/mac/DocAccessibleWrap.h delete mode 100644 accessible/mac/DocAccessibleWrap.mm delete mode 100644 accessible/mac/HTMLTableAccessibleWrap.h delete mode 100644 accessible/mac/HyperTextAccessibleWrap.h delete mode 100644 accessible/mac/ImageAccessibleWrap.h delete mode 100644 accessible/mac/MacUtils.h delete mode 100644 accessible/mac/MacUtils.mm delete mode 100644 accessible/mac/Platform.mm delete mode 100644 accessible/mac/RootAccessibleWrap.h delete mode 100644 accessible/mac/RootAccessibleWrap.mm delete mode 100644 accessible/mac/TextLeafAccessibleWrap.h delete mode 100644 accessible/mac/XULListboxAccessibleWrap.h delete mode 100644 accessible/mac/XULMenuAccessibleWrap.h delete mode 100644 accessible/mac/XULTreeGridAccessibleWrap.h delete mode 100644 accessible/mac/moz.build delete mode 100644 accessible/mac/mozAccessible.h delete mode 100644 accessible/mac/mozAccessible.mm delete mode 100644 accessible/mac/mozAccessibleProtocol.h delete mode 100644 accessible/mac/mozActionElements.h delete mode 100644 accessible/mac/mozActionElements.mm delete mode 100644 accessible/mac/mozDocAccessible.h delete mode 100644 accessible/mac/mozDocAccessible.mm delete mode 100644 accessible/mac/mozHTMLAccessible.h delete mode 100644 accessible/mac/mozHTMLAccessible.mm delete mode 100644 accessible/mac/mozTableAccessible.h delete mode 100644 accessible/mac/mozTableAccessible.mm delete mode 100644 accessible/mac/mozTextAccessible.h delete mode 100644 accessible/mac/mozTextAccessible.mm delete mode 100644 embedding/components/printingui/mac/moz.build delete mode 100644 embedding/components/printingui/mac/nsPrintProgress.cpp delete mode 100644 embedding/components/printingui/mac/nsPrintProgress.h delete mode 100644 embedding/components/printingui/mac/nsPrintProgressParams.cpp delete mode 100644 embedding/components/printingui/mac/nsPrintProgressParams.h delete mode 100644 embedding/components/printingui/mac/nsPrintingPromptService.h delete mode 100644 embedding/components/printingui/mac/nsPrintingPromptServiceX.mm delete mode 100644 gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp delete mode 100644 gfx/layers/basic/MacIOSurfaceTextureHostBasic.h delete mode 100644 gfx/layers/ipc/ShadowLayerUtilsMac.cpp delete mode 100644 gfx/layers/opengl/GLManager.cpp delete mode 100644 gfx/layers/opengl/GLManager.h delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h delete mode 100644 image/decoders/icon/mac/moz.build delete mode 100644 image/decoders/icon/mac/nsIconChannel.h delete mode 100644 image/decoders/icon/mac/nsIconChannelCocoa.mm delete mode 100644 intl/locale/mac/moz.build delete mode 100644 intl/locale/mac/nsCollationMacUC.cpp delete mode 100644 intl/locale/mac/nsCollationMacUC.h delete mode 100644 intl/locale/mac/nsDateTimeFormatMac.cpp delete mode 100644 intl/locale/mac/nsDateTimeFormatMac.h delete mode 100644 intl/locale/mac/nsMacCharset.cpp delete mode 100644 intl/lwbrk/nsCarbonBreaker.cpp delete mode 100644 js/xpconnect/shell/xpcshellMacUtils.h delete mode 100644 js/xpconnect/shell/xpcshellMacUtils.mm delete mode 100644 mailnews/base/src/nsMessengerOSXIntegration.h delete mode 100644 mailnews/base/src/nsMessengerOSXIntegration.mm delete mode 100644 mailnews/compose/src/nsMsgAppleCodes.h delete mode 100644 mailnews/compose/src/nsMsgAppleDouble.h delete mode 100644 mailnews/compose/src/nsMsgAppleDoubleEncode.cpp delete mode 100644 mailnews/compose/src/nsMsgAppleEncode.cpp delete mode 100644 media/libcubeb/src/cubeb_osx_run_loop.c delete mode 100644 media/libcubeb/src/cubeb_osx_run_loop.h delete mode 100644 netwerk/base/NetworkInfoServiceCocoa.cpp delete mode 100644 netwerk/base/nsURLHelperOSX.cpp delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderOperator.h delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderReply.h delete mode 100644 netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp delete mode 100644 netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h delete mode 100644 netwerk/system/mac/moz.build delete mode 100644 netwerk/system/mac/nsNetworkLinkService.h delete mode 100644 netwerk/system/mac/nsNetworkLinkService.mm delete mode 100644 toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm delete mode 100644 toolkit/components/startup/nsUserInfoMac.h delete mode 100644 toolkit/components/startup/nsUserInfoMac.mm delete mode 100644 toolkit/mozapps/update/updater/launchchild_osx.mm delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/keyedobjects.nib delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/updater.icns delete mode 100644 toolkit/mozapps/update/updater/progressui_osx.mm delete mode 100644 toolkit/system/osxproxy/ProxyUtils.h delete mode 100644 toolkit/system/osxproxy/ProxyUtils.mm delete mode 100644 toolkit/system/osxproxy/moz.build delete mode 100644 toolkit/system/osxproxy/nsOSXSystemProxySettings.mm delete mode 100644 toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp delete mode 100644 toolkit/system/osxproxy/tests/gtest/moz.build delete mode 100644 toolkit/themes/osx/global/10pct_transparent_grey.png delete mode 100644 toolkit/themes/osx/global/50pct_transparent_grey.png delete mode 100644 toolkit/themes/osx/global/alerts/alert.css delete mode 100644 toolkit/themes/osx/global/arrow.css delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn-dis.png delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn.png delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-hov.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-sharp-end.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-hov.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-sharp-end.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-up-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-up-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-up.gif delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-horizontal.png delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-horizontal@2x.png delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-vertical.png delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-vertical@2x.png delete mode 100644 toolkit/themes/osx/global/autocomplete.css delete mode 100644 toolkit/themes/osx/global/button.css delete mode 100644 toolkit/themes/osx/global/checkbox.css delete mode 100644 toolkit/themes/osx/global/checkbox/cbox-check-dis.gif delete mode 100644 toolkit/themes/osx/global/checkbox/cbox-check.gif delete mode 100644 toolkit/themes/osx/global/colorpicker.css delete mode 100644 toolkit/themes/osx/global/commonDialog.css delete mode 100644 toolkit/themes/osx/global/console/console-error-caret.gif delete mode 100644 toolkit/themes/osx/global/console/console-error-dash.gif delete mode 100644 toolkit/themes/osx/global/console/console.css delete mode 100644 toolkit/themes/osx/global/customizeToolbar.css delete mode 100644 toolkit/themes/osx/global/datetimepicker.css delete mode 100644 toolkit/themes/osx/global/dialog.css delete mode 100644 toolkit/themes/osx/global/dirListing/dirListing.css delete mode 100644 toolkit/themes/osx/global/dirListing/folder.png delete mode 100644 toolkit/themes/osx/global/dirListing/remote.png delete mode 100644 toolkit/themes/osx/global/dirListing/up.png delete mode 100644 toolkit/themes/osx/global/dropmarker.css delete mode 100644 toolkit/themes/osx/global/filefield.css delete mode 100644 toolkit/themes/osx/global/filters.svg delete mode 100644 toolkit/themes/osx/global/findBar.css delete mode 100644 toolkit/themes/osx/global/global.css delete mode 100644 toolkit/themes/osx/global/groupbox.css delete mode 100644 toolkit/themes/osx/global/icons/Error.png delete mode 100644 toolkit/themes/osx/global/icons/autocomplete-dropmarker.png delete mode 100644 toolkit/themes/osx/global/icons/autocomplete-search.svg delete mode 100644 toolkit/themes/osx/global/icons/autoscroll.png delete mode 100644 toolkit/themes/osx/global/icons/blacklist_64.png delete mode 100644 toolkit/themes/osx/global/icons/blacklist_favicon.png delete mode 100644 toolkit/themes/osx/global/icons/checkbox.png delete mode 100644 toolkit/themes/osx/global/icons/checkbox@2x.png delete mode 100644 toolkit/themes/osx/global/icons/chevron-inverted.png delete mode 100644 toolkit/themes/osx/global/icons/chevron-inverted@2x.png delete mode 100644 toolkit/themes/osx/global/icons/chevron.png delete mode 100644 toolkit/themes/osx/global/icons/chevron@2x.png delete mode 100644 toolkit/themes/osx/global/icons/close.png delete mode 100755 toolkit/themes/osx/global/icons/close@2x.png delete mode 100644 toolkit/themes/osx/global/icons/error-16.png delete mode 100644 toolkit/themes/osx/global/icons/error-64.png delete mode 100644 toolkit/themes/osx/global/icons/error-large.png delete mode 100644 toolkit/themes/osx/global/icons/glyph-dropdown.png delete mode 100644 toolkit/themes/osx/global/icons/glyph-dropdown@2x.png delete mode 100644 toolkit/themes/osx/global/icons/information-16.png delete mode 100644 toolkit/themes/osx/global/icons/information-24.png delete mode 100644 toolkit/themes/osx/global/icons/information-32.png delete mode 100644 toolkit/themes/osx/global/icons/information-64.png delete mode 100644 toolkit/themes/osx/global/icons/information-large.png delete mode 100644 toolkit/themes/osx/global/icons/loading_16.png delete mode 100644 toolkit/themes/osx/global/icons/menulist-dropmarker.png delete mode 100644 toolkit/themes/osx/global/icons/notfound.png delete mode 100644 toolkit/themes/osx/global/icons/notloading_16.png delete mode 100644 toolkit/themes/osx/global/icons/panebutton-active.png delete mode 100644 toolkit/themes/osx/global/icons/panebutton-inactive.png delete mode 100644 toolkit/themes/osx/global/icons/panel-dropmarker.png delete mode 100644 toolkit/themes/osx/global/icons/question-16.png delete mode 100644 toolkit/themes/osx/global/icons/question-32.png delete mode 100644 toolkit/themes/osx/global/icons/question-64.png delete mode 100644 toolkit/themes/osx/global/icons/question-large.png delete mode 100644 toolkit/themes/osx/global/icons/resizer-rtl.png delete mode 100644 toolkit/themes/osx/global/icons/resizer-rtl@2x.png delete mode 100644 toolkit/themes/osx/global/icons/resizer.png delete mode 100644 toolkit/themes/osx/global/icons/resizer@2x.png delete mode 100644 toolkit/themes/osx/global/icons/search-textbox.svg delete mode 100644 toolkit/themes/osx/global/icons/searchfield-cancel.svg delete mode 100644 toolkit/themes/osx/global/icons/sslWarning.png delete mode 100644 toolkit/themes/osx/global/icons/tabprompts-bgtexture.png delete mode 100644 toolkit/themes/osx/global/icons/warning-16.png delete mode 100644 toolkit/themes/osx/global/icons/warning-32.png delete mode 100644 toolkit/themes/osx/global/icons/warning-64.png delete mode 100644 toolkit/themes/osx/global/icons/warning-large.png delete mode 100644 toolkit/themes/osx/global/in-content/common.css delete mode 100644 toolkit/themes/osx/global/in-content/info-pages.css delete mode 100644 toolkit/themes/osx/global/inContentUI.css delete mode 100644 toolkit/themes/osx/global/jar.mn delete mode 100644 toolkit/themes/osx/global/linkTree.css delete mode 100644 toolkit/themes/osx/global/listbox.css delete mode 100644 toolkit/themes/osx/global/menu.css delete mode 100644 toolkit/themes/osx/global/menulist.css delete mode 100644 toolkit/themes/osx/global/moz.build delete mode 100644 toolkit/themes/osx/global/nativescrollbars.css delete mode 100644 toolkit/themes/osx/global/netError.css delete mode 100644 toolkit/themes/osx/global/notification.css delete mode 100644 toolkit/themes/osx/global/notification/close.png delete mode 100644 toolkit/themes/osx/global/notification/error-icon.png delete mode 100644 toolkit/themes/osx/global/notification/info-icon.png delete mode 100644 toolkit/themes/osx/global/notification/warning-icon.png delete mode 100644 toolkit/themes/osx/global/numberbox.css delete mode 100644 toolkit/themes/osx/global/popup.css delete mode 100644 toolkit/themes/osx/global/preferences.css delete mode 100644 toolkit/themes/osx/global/progressmeter.css delete mode 100644 toolkit/themes/osx/global/radio.css delete mode 100644 toolkit/themes/osx/global/resizer.css delete mode 100644 toolkit/themes/osx/global/richlistbox.css delete mode 100644 toolkit/themes/osx/global/scale.css delete mode 100644 toolkit/themes/osx/global/scale/scale-tray-horiz.gif delete mode 100644 toolkit/themes/osx/global/scale/scale-tray-vert.gif delete mode 100644 toolkit/themes/osx/global/scrollbox.css delete mode 100644 toolkit/themes/osx/global/shared.inc delete mode 100644 toolkit/themes/osx/global/spinbuttons.css delete mode 100644 toolkit/themes/osx/global/splitter.css delete mode 100644 toolkit/themes/osx/global/splitter/dimple.png delete mode 100644 toolkit/themes/osx/global/splitter/grip-bottom.gif delete mode 100644 toolkit/themes/osx/global/splitter/grip-left.gif delete mode 100644 toolkit/themes/osx/global/splitter/grip-right.gif delete mode 100644 toolkit/themes/osx/global/splitter/grip-top.gif delete mode 100644 toolkit/themes/osx/global/tabbox.css delete mode 100644 toolkit/themes/osx/global/tabprompts.css delete mode 100644 toolkit/themes/osx/global/textbox.css delete mode 100644 toolkit/themes/osx/global/toolbar.css delete mode 100644 toolkit/themes/osx/global/toolbar/spring.png delete mode 100644 toolkit/themes/osx/global/toolbar/toolbar-separator.png delete mode 100644 toolkit/themes/osx/global/toolbarbutton.css delete mode 100644 toolkit/themes/osx/global/tree.css delete mode 100644 toolkit/themes/osx/global/tree/arrow-disclosure.svg delete mode 100644 toolkit/themes/osx/global/tree/columnpicker.gif delete mode 100644 toolkit/themes/osx/global/tree/folder.png delete mode 100644 toolkit/themes/osx/global/tree/folder@2x.png delete mode 100644 toolkit/themes/osx/global/viewbuttons.css delete mode 100644 toolkit/themes/osx/global/wizard.css delete mode 100644 toolkit/themes/osx/mochitests/.eslintrc.js delete mode 100644 toolkit/themes/osx/mochitests/chrome.ini delete mode 100644 toolkit/themes/osx/mochitests/test_bug510426.xul delete mode 100644 toolkit/themes/osx/moz.build delete mode 100644 toolkit/themes/osx/mozapps/downloads/buttons.png delete mode 100644 toolkit/themes/osx/mozapps/downloads/downloadIcon.png delete mode 100644 toolkit/themes/osx/mozapps/downloads/downloads.css delete mode 100644 toolkit/themes/osx/mozapps/downloads/unknownContentType.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/about.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-error.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-info-negative.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-info-positive.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-warning.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/blocklist.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/cancel.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-available.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-dictionaries.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-discover.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-experiments.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-plugins.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-recent.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-search.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-searchengines.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-service.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/dictionaryGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/dictionaryGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/discover-logo.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/eula.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/experimentGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/extensionGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/extensionGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/extensions.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/heart.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/localeGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/navigation.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/newaddon.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/rating-not-won.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/rating-won.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/search.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/selectAddons.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-compatibility.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-error.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-info-negative.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-info-positive.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-warning.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/themeGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/themeGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/toolbarbutton-dropmarker.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/update.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/xpinstallConfirm.css delete mode 100644 toolkit/themes/osx/mozapps/handling/handling.css delete mode 100644 toolkit/themes/osx/mozapps/jar.mn delete mode 100644 toolkit/themes/osx/mozapps/moz.build delete mode 100644 toolkit/themes/osx/mozapps/passwordmgr/key-16.png delete mode 100644 toolkit/themes/osx/mozapps/passwordmgr/key-64.png delete mode 100644 toolkit/themes/osx/mozapps/passwordmgr/key.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/notifyPluginGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginBlocked-64.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginBlocked.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginHelp-16.png delete mode 100644 toolkit/themes/osx/mozapps/profile/profileSelection.css delete mode 100644 toolkit/themes/osx/mozapps/profile/profileicon-selected.png delete mode 100644 toolkit/themes/osx/mozapps/profile/profileicon.png delete mode 100644 toolkit/themes/osx/mozapps/update/buttons.png delete mode 100644 toolkit/themes/osx/mozapps/update/updates.css delete mode 100644 toolkit/themes/osx/mozapps/viewsource/viewsource.css delete mode 100644 toolkit/themes/osx/reftests/482681-ref.xul delete mode 100644 toolkit/themes/osx/reftests/482681.xul delete mode 100644 toolkit/themes/osx/reftests/baseline.xul delete mode 100644 toolkit/themes/osx/reftests/checkboxsize-ref.xul delete mode 100644 toolkit/themes/osx/reftests/checkboxsize.xul delete mode 100644 toolkit/themes/osx/reftests/nostretch-ref.xul delete mode 100644 toolkit/themes/osx/reftests/nostretch.xul delete mode 100644 toolkit/themes/osx/reftests/radiosize-ref.xul delete mode 100644 toolkit/themes/osx/reftests/radiosize.xul delete mode 100644 toolkit/themes/osx/reftests/reftest-stylo.list delete mode 100644 toolkit/themes/osx/reftests/reftest.list delete mode 100644 toolkit/xre/MacApplicationDelegate.h delete mode 100644 toolkit/xre/MacApplicationDelegate.mm delete mode 100644 toolkit/xre/MacAutoreleasePool.h delete mode 100644 toolkit/xre/MacAutoreleasePool.mm delete mode 100644 toolkit/xre/MacLaunchHelper.h delete mode 100644 toolkit/xre/MacLaunchHelper.mm delete mode 100644 uriloader/exthandler/mac/nsDecodeAppleFile.cpp delete mode 100644 uriloader/exthandler/mac/nsDecodeAppleFile.h delete mode 100644 uriloader/exthandler/mac/nsLocalHandlerAppMac.h delete mode 100644 uriloader/exthandler/mac/nsLocalHandlerAppMac.mm delete mode 100644 uriloader/exthandler/mac/nsMIMEInfoMac.h delete mode 100644 uriloader/exthandler/mac/nsMIMEInfoMac.mm delete mode 100644 uriloader/exthandler/mac/nsOSHelperAppService.h delete mode 100644 uriloader/exthandler/mac/nsOSHelperAppService.mm diff --git a/accessible/base/moz.build b/accessible/base/moz.build index ea9b67aee..54627ca50 100644 --- a/accessible/base/moz.build +++ b/accessible/base/moz.build @@ -96,10 +96,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/generic/moz.build b/accessible/generic/moz.build index 6855daf90..720d9bf01 100644 --- a/accessible/generic/moz.build +++ b/accessible/generic/moz.build @@ -52,10 +52,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/html/moz.build b/accessible/html/moz.build index e486f1045..a18c4e59b 100644 --- a/accessible/html/moz.build +++ b/accessible/html/moz.build @@ -32,10 +32,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/ipc/moz.build b/accessible/ipc/moz.build index cb852de27..91fd1fa4d 100644 --- a/accessible/ipc/moz.build +++ b/accessible/ipc/moz.build @@ -19,10 +19,6 @@ else: LOCAL_INCLUDES += [ '/accessible/atk', ] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/ipc/other/moz.build b/accessible/ipc/other/moz.build index 50f96de04..489520cef 100644 --- a/accessible/ipc/other/moz.build +++ b/accessible/ipc/other/moz.build @@ -28,10 +28,6 @@ if CONFIG['ACCESSIBILITY']: LOCAL_INCLUDES += [ '/accessible/atk', ] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/mac/ARIAGridAccessibleWrap.h b/accessible/mac/ARIAGridAccessibleWrap.h deleted file mode 100644 index 5d397e915..000000000 --- a/accessible/mac/ARIAGridAccessibleWrap.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_A11Y_ARIAGRIDACCESSIBLEWRAP_H -#define MOZILLA_A11Y_ARIAGRIDACCESSIBLEWRAP_H - -#include "ARIAGridAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class ARIAGridAccessible ARIAGridAccessibleWrap; -typedef class ARIAGridCellAccessible ARIAGridCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/AccessibleWrap.h b/accessible/mac/AccessibleWrap.h deleted file mode 100644 index 6c746ff0d..000000000 --- a/accessible/mac/AccessibleWrap.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* For documentation of the accessibility architecture, - * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html - */ - -#ifndef _AccessibleWrap_H_ -#define _AccessibleWrap_H_ - -#include - -#include "Accessible.h" -#include "States.h" - -#include "nsCOMPtr.h" - -#include "nsTArray.h" - -#if defined(__OBJC__) -@class mozAccessible; -#endif - -namespace mozilla { -namespace a11y { - -class AccessibleWrap : public Accessible -{ -public: // construction, destruction - AccessibleWrap(nsIContent* aContent, DocAccessible* aDoc); - virtual ~AccessibleWrap(); - - /** - * Get the native Obj-C object (mozAccessible). - */ - virtual void GetNativeInterface(void** aOutAccessible) override; - - /** - * The objective-c |Class| type that this accessible's native object - * should be instantied with. used on runtime to determine the - * right type for this accessible's associated native object. - */ - virtual Class GetNativeType (); - - virtual void Shutdown () override; - - virtual bool InsertChildAt(uint32_t aIdx, Accessible* aChild) override; - virtual bool RemoveChild(Accessible* aAccessible) override; - - virtual nsresult HandleAccEvent(AccEvent* aEvent) override; - -protected: - - /** - * Return true if the parent doesn't have children to expose to AT. - */ - bool AncestorIsFlat(); - - /** - * Get the native object. Create it if needed. - */ -#if defined(__OBJC__) - mozAccessible* GetNativeObject(); -#else - id GetNativeObject(); -#endif - -private: - - /** - * Our native object. Private because its creation is done lazily. - * Don't access it directly. Ever. Unless you are GetNativeObject() or - * Shutdown() - */ -#if defined(__OBJC__) - // if we are in Objective-C, we use the actual Obj-C class. - mozAccessible* mNativeObject; -#else - id mNativeObject; -#endif - - /** - * We have created our native. This does not mean there is one. - * This can never go back to false. - * We need it because checking whether we need a native object cost time. - */ - bool mNativeInited; -}; - -#if defined(__OBJC__) - void FireNativeEvent(mozAccessible* aNativeAcc, uint32_t aEventType); -#else - void FireNativeEvent(id aNativeAcc, uint32_t aEventType); -#endif - -Class GetTypeFromRole(roles::Role aRole); - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/AccessibleWrap.mm b/accessible/mac/AccessibleWrap.mm deleted file mode 100644 index 65f2e1db4..000000000 --- a/accessible/mac/AccessibleWrap.mm +++ /dev/null @@ -1,256 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "DocAccessible.h" -#include "nsObjCExceptions.h" - -#include "Accessible-inl.h" -#include "nsAccUtils.h" -#include "Role.h" - -#import "mozAccessible.h" -#import "mozActionElements.h" -#import "mozHTMLAccessible.h" -#import "mozTableAccessible.h" -#import "mozTextAccessible.h" - -using namespace mozilla; -using namespace mozilla::a11y; - -AccessibleWrap:: - AccessibleWrap(nsIContent* aContent, DocAccessible* aDoc) : - Accessible(aContent, aDoc), mNativeObject(nil), - mNativeInited(false) -{ -} - -AccessibleWrap::~AccessibleWrap() -{ -} - -mozAccessible* -AccessibleWrap::GetNativeObject() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (!mNativeInited && !mNativeObject && !IsDefunct() && !AncestorIsFlat()) { - uintptr_t accWrap = reinterpret_cast(this); - mNativeObject = [[GetNativeType() alloc] initWithAccessible:accWrap]; - } - - mNativeInited = true; - - return mNativeObject; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -void -AccessibleWrap::GetNativeInterface(void** aOutInterface) -{ - *aOutInterface = static_cast(GetNativeObject()); -} - -// overridden in subclasses to create the right kind of object. by default we create a generic -// 'mozAccessible' node. -Class -AccessibleWrap::GetNativeType () -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (IsXULTabpanels()) - return [mozPaneAccessible class]; - - if (IsTable()) - return [mozTableAccessible class]; - - if (IsTableRow()) - return [mozTableRowAccessible class]; - - if (IsTableCell()) - return [mozTableCellAccessible class]; - - return GetTypeFromRole(Role()); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -// this method is very important. it is fired when an accessible object "dies". after this point -// the object might still be around (because some 3rd party still has a ref to it), but it is -// in fact 'dead'. -void -AccessibleWrap::Shutdown () -{ - // this ensure we will not try to re-create the native object. - mNativeInited = true; - - // we really intend to access the member directly. - if (mNativeObject) { - [mNativeObject expire]; - [mNativeObject release]; - mNativeObject = nil; - } - - Accessible::Shutdown(); -} - -nsresult -AccessibleWrap::HandleAccEvent(AccEvent* aEvent) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - nsresult rv = Accessible::HandleAccEvent(aEvent); - NS_ENSURE_SUCCESS(rv, rv); - - if (IPCAccessibilityActive()) { - return NS_OK; - } - - uint32_t eventType = aEvent->GetEventType(); - - // ignore everything but focus-changed, value-changed, caret, selection - // and document load complete events for now. - if (eventType != nsIAccessibleEvent::EVENT_FOCUS && - eventType != nsIAccessibleEvent::EVENT_VALUE_CHANGE && - eventType != nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE && - eventType != nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED && - eventType != nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED && - eventType != nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE) - return NS_OK; - - Accessible* accessible = aEvent->GetAccessible(); - NS_ENSURE_STATE(accessible); - - mozAccessible *nativeAcc = nil; - accessible->GetNativeInterface((void**)&nativeAcc); - if (!nativeAcc) - return NS_ERROR_FAILURE; - - FireNativeEvent(nativeAcc, eventType); - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -bool -AccessibleWrap::InsertChildAt(uint32_t aIdx, Accessible* aAccessible) -{ - bool inserted = Accessible::InsertChildAt(aIdx, aAccessible); - if (inserted && mNativeObject) - [mNativeObject appendChild:aAccessible]; - - return inserted; -} - -bool -AccessibleWrap::RemoveChild(Accessible* aAccessible) -{ - bool removed = Accessible::RemoveChild(aAccessible); - - if (removed && mNativeObject) - [mNativeObject invalidateChildren]; - - return removed; -} - -//////////////////////////////////////////////////////////////////////////////// -// AccessibleWrap protected - -bool -AccessibleWrap::AncestorIsFlat() -{ - // We don't create a native object if we're child of a "flat" accessible; - // for example, on OS X buttons shouldn't have any children, because that - // makes the OS confused. - // - // To maintain a scripting environment where the XPCOM accessible hierarchy - // look the same on all platforms, we still let the C++ objects be created - // though. - - Accessible* parent = Parent(); - while (parent) { - if (nsAccUtils::MustPrune(parent)) - return true; - - parent = parent->Parent(); - } - // no parent was flat - return false; -} - -void -a11y::FireNativeEvent(mozAccessible* aNativeAcc, uint32_t aEventType) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - switch (aEventType) { - case nsIAccessibleEvent::EVENT_FOCUS: - [aNativeAcc didReceiveFocus]; - break; - case nsIAccessibleEvent::EVENT_VALUE_CHANGE: - case nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE: - [aNativeAcc valueDidChange]; - break; - case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED: - case nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED: - [aNativeAcc selectedTextDidChange]; - break; - case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE: - [aNativeAcc documentLoadComplete]; - break; - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -Class -a11y::GetTypeFromRole(roles::Role aRole) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - switch (aRole) { - case roles::COMBOBOX: - case roles::PUSHBUTTON: - case roles::SPLITBUTTON: - case roles::TOGGLE_BUTTON: - { - return [mozButtonAccessible class]; - } - - case roles::PAGETAB: - return [mozButtonAccessible class]; - - case roles::CHECKBUTTON: - return [mozCheckboxAccessible class]; - - case roles::HEADING: - return [mozHeadingAccessible class]; - - case roles::PAGETABLIST: - return [mozTabsAccessible class]; - - case roles::ENTRY: - case roles::STATICTEXT: - case roles::CAPTION: - case roles::ACCEL_LABEL: - case roles::PASSWORD_TEXT: - // normal textfield (static or editable) - return [mozTextAccessible class]; - - case roles::TEXT_LEAF: - return [mozTextLeafAccessible class]; - - case roles::LINK: - return [mozLinkAccessible class]; - - default: - return [mozAccessible class]; - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} diff --git a/accessible/mac/ApplicationAccessibleWrap.h b/accessible/mac/ApplicationAccessibleWrap.h deleted file mode 100644 index 9343c29dd..000000000 --- a/accessible/mac/ApplicationAccessibleWrap.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:expandtab:shiftwidth=4:tabstop=4: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_ApplicationAccessibleWrap_h__ -#define mozilla_a11y_ApplicationAccessibleWrap_h__ - -#include "ApplicationAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef ApplicationAccessible ApplicationAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/DocAccessibleWrap.h b/accessible/mac/DocAccessibleWrap.h deleted file mode 100644 index 3e80a0d33..000000000 --- a/accessible/mac/DocAccessibleWrap.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_DocAccessibleWrap_h__ -#define mozilla_a11y_DocAccessibleWrap_h__ - -#include "DocAccessible.h" - -namespace mozilla { -namespace a11y { - -class DocAccessibleWrap : public DocAccessible -{ -public: - DocAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell); - virtual ~DocAccessibleWrap(); - -}; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/DocAccessibleWrap.mm b/accessible/mac/DocAccessibleWrap.mm deleted file mode 100644 index 8a513f485..000000000 --- a/accessible/mac/DocAccessibleWrap.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "DocAccessibleWrap.h" - -#import "mozAccessible.h" - -using namespace mozilla::a11y; - -DocAccessibleWrap:: - DocAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell) : - DocAccessible(aDocument, aPresShell) -{ -} - -DocAccessibleWrap::~DocAccessibleWrap() -{ -} - diff --git a/accessible/mac/HTMLTableAccessibleWrap.h b/accessible/mac/HTMLTableAccessibleWrap.h deleted file mode 100644 index 4f158e241..000000000 --- a/accessible/mac/HTMLTableAccessibleWrap.h +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_HTMLTableAccessibleWrap_h__ -#define mozilla_a11y_HTMLTableAccessibleWrap_h__ - -#include "HTMLTableAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class HTMLTableAccessible HTMLTableAccessibleWrap; -typedef class HTMLTableCellAccessible HTMLTableCellAccessibleWrap; -typedef class HTMLTableHeaderCellAccessible HTMLTableHeaderCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/HyperTextAccessibleWrap.h b/accessible/mac/HyperTextAccessibleWrap.h deleted file mode 100644 index fb335ef0f..000000000 --- a/accessible/mac/HyperTextAccessibleWrap.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_HyperTextAccessibleWrap_h__ -#define mozilla_a11y_HyperTextAccessibleWrap_h__ - -#include "HyperTextAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class HyperTextAccessible HyperTextAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/ImageAccessibleWrap.h b/accessible/mac/ImageAccessibleWrap.h deleted file mode 100644 index 069efb651..000000000 --- a/accessible/mac/ImageAccessibleWrap.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_ImageAccessibleWrap_h__ -#define mozilla_a11y_ImageAccessibleWrap_h__ - -#include "ImageAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class ImageAccessible ImageAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/MacUtils.h b/accessible/mac/MacUtils.h deleted file mode 100644 index f88a27ee5..000000000 --- a/accessible/mac/MacUtils.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef _MacUtils_H_ -#define _MacUtils_H_ - -@class NSString; -class nsString; - -namespace mozilla { -namespace a11y { -namespace utils { - -/** - * Get a localized string from the string bundle. - * Return nil if not found. - */ -NSString* LocalizedString(const nsString& aString); - -} -} -} - -#endif diff --git a/accessible/mac/MacUtils.mm b/accessible/mac/MacUtils.mm deleted file mode 100644 index 2ce03fe96..000000000 --- a/accessible/mac/MacUtils.mm +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "MacUtils.h" - -#include "Accessible.h" - -#include "nsCocoaUtils.h" - -namespace mozilla { -namespace a11y { -namespace utils { - -/** - * Get a localized string from the a11y string bundle. - * Return nil if not found. - */ -NSString* -LocalizedString(const nsString& aString) -{ - nsString text; - - Accessible::TranslateString(aString, text); - - return text.IsEmpty() ? nil : nsCocoaUtils::ToNSString(text); -} - -} -} -} diff --git a/accessible/mac/Platform.mm b/accessible/mac/Platform.mm deleted file mode 100644 index a104bf904..000000000 --- a/accessible/mac/Platform.mm +++ /dev/null @@ -1,174 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import - -#include "Platform.h" -#include "ProxyAccessible.h" -#include "DocAccessibleParent.h" -#include "mozTableAccessible.h" - -#include "nsAppShell.h" - -namespace mozilla { -namespace a11y { - -// Mac a11y whitelisting -static bool sA11yShouldBeEnabled = false; - -bool -ShouldA11yBeEnabled() -{ - EPlatformDisabledState disabledState = PlatformDisabledState(); - return (disabledState == ePlatformIsForceEnabled) || ((disabledState == ePlatformIsEnabled) && sA11yShouldBeEnabled); -} - -void -PlatformInit() -{ -} - -void -PlatformShutdown() -{ -} - -void -ProxyCreated(ProxyAccessible* aProxy, uint32_t) -{ - // Pass in dummy state for now as retrieving proxy state requires IPC. - // Note that we can use ProxyAccessible::IsTable* functions here because they - // do not use IPC calls but that might change after bug 1210477. - Class type; - if (aProxy->IsTable()) - type = [mozTableAccessible class]; - else if (aProxy->IsTableRow()) - type = [mozTableRowAccessible class]; - else if (aProxy->IsTableCell()) - type = [mozTableCellAccessible class]; - else - type = GetTypeFromRole(aProxy->Role()); - - uintptr_t accWrap = reinterpret_cast(aProxy) | IS_PROXY; - mozAccessible* mozWrapper = [[type alloc] initWithAccessible:accWrap]; - aProxy->SetWrapper(reinterpret_cast(mozWrapper)); - - mozAccessible* nativeParent = nullptr; - if (aProxy->IsDoc() && aProxy->AsDoc()->IsTopLevel()) { - // If proxy is top level, the parent we need to invalidate the children of - // will be a non-remote accessible. - Accessible* outerDoc = aProxy->OuterDocOfRemoteBrowser(); - if (outerDoc) { - nativeParent = GetNativeFromGeckoAccessible(outerDoc); - } - } else { - // Non-top level proxies need proxy parents' children invalidated. - ProxyAccessible* parent = aProxy->Parent(); - nativeParent = GetNativeFromProxy(parent); - NS_ASSERTION(parent, "a non-top-level proxy is missing a parent?"); - } - - if (nativeParent) { - [nativeParent invalidateChildren]; - } -} - -void -ProxyDestroyed(ProxyAccessible* aProxy) -{ - mozAccessible* nativeParent = nil; - if (aProxy->IsDoc() && aProxy->AsDoc()->IsTopLevel()) { - // Invalidate native parent in parent process's children on proxy destruction - Accessible* outerDoc = aProxy->OuterDocOfRemoteBrowser(); - if (outerDoc) { - nativeParent = GetNativeFromGeckoAccessible(outerDoc); - } - } else { - if (!aProxy->Document()->IsShutdown()) { - // Only do if the document has not been shut down, else parent will return - // garbage since we don't shut down children from top down. - ProxyAccessible* parent = aProxy->Parent(); - // Invalidate proxy parent's children. - if (parent) { - nativeParent = GetNativeFromProxy(parent); - } - } - } - - mozAccessible* wrapper = GetNativeFromProxy(aProxy); - [wrapper expire]; - [wrapper release]; - aProxy->SetWrapper(0); - - if (nativeParent) { - [nativeParent invalidateChildren]; - } -} - -void -ProxyEvent(ProxyAccessible* aProxy, uint32_t aEventType) -{ - // ignore everything but focus-changed, value-changed, caret and selection - // events for now. - if (aEventType != nsIAccessibleEvent::EVENT_FOCUS && - aEventType != nsIAccessibleEvent::EVENT_VALUE_CHANGE && - aEventType != nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE && - aEventType != nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED && - aEventType != nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED) - return; - - mozAccessible* wrapper = GetNativeFromProxy(aProxy); - if (wrapper) - FireNativeEvent(wrapper, aEventType); -} - -void -ProxyStateChangeEvent(ProxyAccessible* aProxy, uint64_t, bool) -{ - // mac doesn't care about state change events -} - -void -ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset) -{ - mozAccessible* wrapper = GetNativeFromProxy(aTarget); - if (wrapper) - [wrapper selectedTextDidChange]; -} - -void -ProxyTextChangeEvent(ProxyAccessible*, const nsString&, int32_t, uint32_t, - bool, bool) -{ -} - -void -ProxyShowHideEvent(ProxyAccessible*, ProxyAccessible*, bool, bool) -{ -} - -void -ProxySelectionEvent(ProxyAccessible*, ProxyAccessible*, uint32_t) -{ -} -} // namespace a11y -} // namespace mozilla - -@interface GeckoNSApplication(a11y) --(void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute; -@end - -@implementation GeckoNSApplication(a11y) - --(void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute -{ - if ([attribute isEqualToString:@"AXEnhancedUserInterface"]) - mozilla::a11y::sA11yShouldBeEnabled = ([value intValue] == 1); - - return [super accessibilitySetValue:value forAttribute:attribute]; -} - -@end - diff --git a/accessible/mac/RootAccessibleWrap.h b/accessible/mac/RootAccessibleWrap.h deleted file mode 100644 index aa53e06ac..000000000 --- a/accessible/mac/RootAccessibleWrap.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* For documentation of the accessibility architecture, - * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html - */ - -#ifndef mozilla_a11y_RootAccessibleWrap_h__ -#define mozilla_a11y_RootAccessibleWrap_h__ - -#include "RootAccessible.h" - -namespace mozilla { -namespace a11y { - -class RootAccessibleWrap : public RootAccessible -{ -public: - RootAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell); - virtual ~RootAccessibleWrap(); - - Class GetNativeType (); - - // let's our native accessible get in touch with the - // native cocoa view that is our accessible parent. - void GetNativeWidget (void **aOutView); -}; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/RootAccessibleWrap.mm b/accessible/mac/RootAccessibleWrap.mm deleted file mode 100644 index 037545cce..000000000 --- a/accessible/mac/RootAccessibleWrap.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "RootAccessibleWrap.h" - -#include "mozDocAccessible.h" - -#include "nsCOMPtr.h" -#include "nsObjCExceptions.h" -#include "nsIFrame.h" -#include "nsView.h" -#include "nsIWidget.h" - -using namespace mozilla::a11y; - -RootAccessibleWrap:: - RootAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell) : - RootAccessible(aDocument, aPresShell) -{ -} - -RootAccessibleWrap::~RootAccessibleWrap() -{ -} - -Class -RootAccessibleWrap::GetNativeType() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - return [mozRootAccessible class]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -void -RootAccessibleWrap::GetNativeWidget(void** aOutView) -{ - nsIFrame *frame = GetFrame(); - if (frame) { - nsView *view = frame->GetView(); - if (view) { - nsIWidget *widget = view->GetWidget(); - if (widget) { - *aOutView = (void**)widget->GetNativeData (NS_NATIVE_WIDGET); - NS_ASSERTION (*aOutView, - "Couldn't get the native NSView parent we need to connect the accessibility hierarchy!"); - } - } - } -} diff --git a/accessible/mac/TextLeafAccessibleWrap.h b/accessible/mac/TextLeafAccessibleWrap.h deleted file mode 100644 index d07b9defe..000000000 --- a/accessible/mac/TextLeafAccessibleWrap.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_TextLeafAccessibleWrap_h__ -#define mozilla_a11y_TextLeafAccessibleWrap_h__ - -#include "TextLeafAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class TextLeafAccessible TextLeafAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/XULListboxAccessibleWrap.h b/accessible/mac/XULListboxAccessibleWrap.h deleted file mode 100644 index f7dc6cc54..000000000 --- a/accessible/mac/XULListboxAccessibleWrap.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_XULListboxAccessibleWrap_h__ -#define mozilla_a11y_XULListboxAccessibleWrap_h__ - -#include "XULListboxAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class XULListboxAccessible XULListboxAccessibleWrap; -typedef class XULListCellAccessible XULListCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/XULMenuAccessibleWrap.h b/accessible/mac/XULMenuAccessibleWrap.h deleted file mode 100644 index 6efcf007e..000000000 --- a/accessible/mac/XULMenuAccessibleWrap.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_XULMenuAccessibleWrap_h__ -#define mozilla_a11y_XULMenuAccessibleWrap_h__ - -#include "XULMenuAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class XULMenuitemAccessible XULMenuitemAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/XULTreeGridAccessibleWrap.h b/accessible/mac/XULTreeGridAccessibleWrap.h deleted file mode 100644 index b3631e9ad..000000000 --- a/accessible/mac/XULTreeGridAccessibleWrap.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_XULTreeGridAccessibleWrap_h__ -#define mozilla_a11y_XULTreeGridAccessibleWrap_h__ - -#include "XULTreeGridAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class XULTreeGridAccessible XULTreeGridAccessibleWrap; -typedef class XULTreeGridCellAccessible XULTreeGridCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/moz.build b/accessible/mac/moz.build deleted file mode 100644 index 8d2e7b391..000000000 --- a/accessible/mac/moz.build +++ /dev/null @@ -1,44 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -EXPORTS += [ - 'mozAccessibleProtocol.h', -] - -EXPORTS.mozilla.a11y += [ - 'AccessibleWrap.h', - 'HyperTextAccessibleWrap.h', -] - -SOURCES += [ - 'AccessibleWrap.mm', - 'DocAccessibleWrap.mm', - 'MacUtils.mm', - 'mozAccessible.mm', - 'mozActionElements.mm', - 'mozDocAccessible.mm', - 'mozHTMLAccessible.mm', - 'mozTableAccessible.mm', - 'mozTextAccessible.mm', - 'Platform.mm', - 'RootAccessibleWrap.mm', -] - -LOCAL_INCLUDES += [ - '/accessible/base', - '/accessible/generic', - '/accessible/html', - '/accessible/ipc', - '/accessible/ipc/other', - '/accessible/xul', - '/layout/generic', - '/layout/xul', - '/widget', - '/widget/cocoa', -] - -FINAL_LIBRARY = 'xul' - -include('/ipc/chromium/chromium-config.mozbuild') diff --git a/accessible/mac/mozAccessible.h b/accessible/mac/mozAccessible.h deleted file mode 100644 index 6d7db3fe9..000000000 --- a/accessible/mac/mozAccessible.h +++ /dev/null @@ -1,181 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "AccessibleWrap.h" -#include "ProxyAccessible.h" - -#import - -#import "mozAccessibleProtocol.h" - -@class mozRootAccessible; - -/** - * All mozAccessibles are either abstract objects (that correspond to XUL - * widgets, HTML frames, etc) or are attached to a certain view; for example - * a document view. When we hand an object off to an AT, we always want - * to give it the represented view, in the latter case. - */ - -namespace mozilla { -namespace a11y { - -inline id -GetObjectOrRepresentedView(id aObject) -{ - return [aObject hasRepresentedView] ? [aObject representedView] : aObject; -} - -inline mozAccessible* -GetNativeFromGeckoAccessible(Accessible* aAccessible) -{ - mozAccessible* native = nil; - aAccessible->GetNativeInterface((void**)&native); - return native; -} - -inline mozAccessible* -GetNativeFromProxy(const ProxyAccessible* aProxy) -{ - return reinterpret_cast(aProxy->GetWrapper()); -} - -} // a11y -} // mozilla - -// This is OR'd with the Accessible owner to indicate the wrap-ee is a proxy. -static const uintptr_t IS_PROXY = 1; - -@interface mozAccessible : NSObject -{ - /** - * Weak reference; it owns us. - */ - uintptr_t mGeckoAccessible; - - /** - * Strong ref to array of children - */ - NSMutableArray* mChildren; - - /** - * Weak reference to the parent - */ - mozAccessible* mParent; - - /** - * The role of our gecko accessible. - */ - mozilla::a11y::role mRole; -} - -// return the Accessible for this mozAccessible if it exists. -- (mozilla::a11y::AccessibleWrap*)getGeckoAccessible; - -// return the ProxyAccessible for this mozAccessible if it exists. -- (mozilla::a11y::ProxyAccessible*)getProxyAccessible; - -// inits with the gecko owner. -- (id)initWithAccessible:(uintptr_t)aGeckoObj; - -// our accessible parent (AXParent) -- (id )parent; - -// a lazy cache of our accessible children (AXChildren). updated -- (NSArray*)children; - -// returns the size of this accessible. -- (NSValue*)size; - -// returns the position, in cocoa coordinates. -- (NSValue*)position; - -// can be overridden to report another role name. -- (NSString*)role; - -// a subrole is a more specialized variant of the role. for example, -// the role might be "textfield", while the subrole is "password textfield". -- (NSString*)subrole; - -// Return the role description, as there are a few exceptions. -- (NSString*)roleDescription; - -// returns the native window we're inside. -- (NSWindow*)window; - -// the value of this element. -- (id)value; - -// name that is associated with this accessible (for buttons, etc) -- (NSString*)title; - -// the accessible description (help text) of this particular instance. -- (NSString*)help; - -- (BOOL)isEnabled; - -// information about focus. -- (BOOL)isFocused; -- (BOOL)canBeFocused; - -// returns NO if for some reason we were unable to focus the element. -- (BOOL)focus; - -// notifications sent out to listening accessible providers. -- (void)didReceiveFocus; -- (void)valueDidChange; -- (void)selectedTextDidChange; -- (void)documentLoadComplete; - -// internal method to retrieve a child at a given index. -- (id)childAt:(uint32_t)i; - -#pragma mark - - -// invalidates and removes all our children from our cached array. -- (void)invalidateChildren; - -/** - * Append a child if they are already cached. - */ -- (void)appendChild:(mozilla::a11y::Accessible*)aAccessible; - -// makes ourselves "expired". after this point, we might be around if someone -// has retained us (e.g., a third-party), but we really contain no information. -- (void)expire; -- (BOOL)isExpired; - -#ifdef DEBUG -- (void)printHierarchy; -- (void)printHierarchyWithLevel:(unsigned)numSpaces; - -- (void)sanityCheckChildren; -- (void)sanityCheckChildren:(NSArray*)theChildren; -#endif - -// ---- NSAccessibility methods ---- // - -// whether to skip this element when traversing the accessibility -// hierarchy. -- (BOOL)accessibilityIsIgnored; - -// called by third-parties to determine the deepest child element under the mouse -- (id)accessibilityHitTest:(NSPoint)point; - -// returns the deepest unignored focused accessible element -- (id)accessibilityFocusedUIElement; - -// a mozAccessible needs to at least provide links to its parent and -// children. -- (NSArray*)accessibilityAttributeNames; - -// value for the specified attribute -- (id)accessibilityAttributeValue:(NSString*)attribute; - -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute; -- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute; - -@end - diff --git a/accessible/mac/mozAccessible.mm b/accessible/mac/mozAccessible.mm deleted file mode 100644 index a02779ef2..000000000 --- a/accessible/mac/mozAccessible.mm +++ /dev/null @@ -1,1197 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -#import "MacUtils.h" -#import "mozView.h" - -#include "Accessible-inl.h" -#include "nsAccUtils.h" -#include "nsIAccessibleRelation.h" -#include "nsIAccessibleEditableText.h" -#include "nsIPersistentProperties2.h" -#include "Relation.h" -#include "Role.h" -#include "RootAccessible.h" -#include "TableAccessible.h" -#include "TableCellAccessible.h" -#include "mozilla/a11y/PDocAccessible.h" -#include "OuterDocAccessible.h" - -#include "mozilla/Services.h" -#include "nsRect.h" -#include "nsCocoaUtils.h" -#include "nsCoord.h" -#include "nsObjCExceptions.h" -#include "nsWhitespaceTokenizer.h" -#include - -using namespace mozilla; -using namespace mozilla::a11y; - -#define NSAccessibilityMathRootRadicandAttribute @"AXMathRootRadicand" -#define NSAccessibilityMathRootIndexAttribute @"AXMathRootIndex" -#define NSAccessibilityMathFractionNumeratorAttribute @"AXMathFractionNumerator" -#define NSAccessibilityMathFractionDenominatorAttribute @"AXMathFractionDenominator" -#define NSAccessibilityMathBaseAttribute @"AXMathBase" -#define NSAccessibilityMathSubscriptAttribute @"AXMathSubscript" -#define NSAccessibilityMathSuperscriptAttribute @"AXMathSuperscript" -#define NSAccessibilityMathUnderAttribute @"AXMathUnder" -#define NSAccessibilityMathOverAttribute @"AXMathOver" -#define NSAccessibilityMathLineThicknessAttribute @"AXMathLineThickness" -// XXX WebKit also defines the following attributes. -// See bugs 1176970 and 1176983. -// - NSAccessibilityMathFencedOpenAttribute @"AXMathFencedOpen" -// - NSAccessibilityMathFencedCloseAttribute @"AXMathFencedClose" -// - NSAccessibilityMathPrescriptsAttribute @"AXMathPrescripts" -// - NSAccessibilityMathPostscriptsAttribute @"AXMathPostscripts" - -#pragma mark - - -@implementation mozAccessible - -- (id)initWithAccessible:(uintptr_t)aGeckoAccessible -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ((self = [super init])) { - mGeckoAccessible = aGeckoAccessible; - if (aGeckoAccessible & IS_PROXY) - mRole = [self getProxyAccessible]->Role(); - else - mRole = [self getGeckoAccessible]->Role(); - } - - return self; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)dealloc -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [mChildren release]; - [super dealloc]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (mozilla::a11y::AccessibleWrap*)getGeckoAccessible -{ - // Check if mGeckoAccessible points at a proxy - if (mGeckoAccessible & IS_PROXY) - return nil; - - return reinterpret_cast(mGeckoAccessible); -} - -- (mozilla::a11y::ProxyAccessible*)getProxyAccessible -{ - // Check if mGeckoAccessible points at a proxy - if (!(mGeckoAccessible & IS_PROXY)) - return nil; - - return reinterpret_cast(mGeckoAccessible & ~IS_PROXY); -} - -#pragma mark - - -- (BOOL)accessibilityIsIgnored -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - // unknown (either unimplemented, or irrelevant) elements are marked as ignored - // as well as expired elements. - - bool noRole = [[self role] isEqualToString:NSAccessibilityUnknownRole]; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return (noRole && !(accWrap->InteractiveState() & states::FOCUSABLE)); - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return (noRole && !(proxy->State() & states::FOCUSABLE)); - - return true; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (NSArray*)additionalAccessibilityAttributeNames -{ - NSMutableArray* additional = [NSMutableArray array]; - switch (mRole) { - case roles::MATHML_ROOT: - [additional addObject:NSAccessibilityMathRootIndexAttribute]; - [additional addObject:NSAccessibilityMathRootRadicandAttribute]; - break; - case roles::MATHML_SQUARE_ROOT: - [additional addObject:NSAccessibilityMathRootRadicandAttribute]; - break; - case roles::MATHML_FRACTION: - [additional addObject:NSAccessibilityMathFractionNumeratorAttribute]; - [additional addObject:NSAccessibilityMathFractionDenominatorAttribute]; - [additional addObject:NSAccessibilityMathLineThicknessAttribute]; - break; - case roles::MATHML_SUB: - case roles::MATHML_SUP: - case roles::MATHML_SUB_SUP: - [additional addObject:NSAccessibilityMathBaseAttribute]; - [additional addObject:NSAccessibilityMathSubscriptAttribute]; - [additional addObject:NSAccessibilityMathSuperscriptAttribute]; - break; - case roles::MATHML_UNDER: - case roles::MATHML_OVER: - case roles::MATHML_UNDER_OVER: - [additional addObject:NSAccessibilityMathBaseAttribute]; - [additional addObject:NSAccessibilityMathUnderAttribute]; - [additional addObject:NSAccessibilityMathOverAttribute]; - break; - // XXX bug 1176983 - // roles::MATHML_MULTISCRIPTS should also have the following attributes: - // - NSAccessibilityMathPrescriptsAttribute - // - NSAccessibilityMathPostscriptsAttribute - // XXX bug 1176970 - // roles::MATHML_FENCED should also have the following attributes: - // - NSAccessibilityMathFencedOpenAttribute - // - NSAccessibilityMathFencedCloseAttribute - default: - break; - } - - return additional; -} - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // if we're expired, we don't support any attributes. - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return [NSArray array]; - - static NSArray* generalAttributes = nil; - - if (!generalAttributes) { - // standard attributes that are shared and supported by all generic elements. - generalAttributes = [[NSArray alloc] initWithObjects: NSAccessibilityChildrenAttribute, - NSAccessibilityParentAttribute, - NSAccessibilityRoleAttribute, - NSAccessibilityTitleAttribute, - NSAccessibilityValueAttribute, - NSAccessibilitySubroleAttribute, - NSAccessibilityRoleDescriptionAttribute, - NSAccessibilityPositionAttribute, - NSAccessibilityEnabledAttribute, - NSAccessibilitySizeAttribute, - NSAccessibilityWindowAttribute, - NSAccessibilityFocusedAttribute, - NSAccessibilityHelpAttribute, - NSAccessibilityTitleUIElementAttribute, - NSAccessibilityTopLevelUIElementAttribute, -#if DEBUG - @"AXMozDescription", -#endif - nil]; - } - - NSArray* objectAttributes = generalAttributes; - - NSArray* additionalAttributes = [self additionalAccessibilityAttributeNames]; - if ([additionalAttributes count]) - objectAttributes = [objectAttributes arrayByAddingObjectsFromArray:additionalAttributes]; - - return objectAttributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)childAt:(uint32_t)i -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - Accessible* child = accWrap->GetChildAt(i); - return child ? GetNativeFromGeckoAccessible(child) : nil; - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - ProxyAccessible* child = proxy->ChildAt(i); - return child ? GetNativeFromProxy(child) : nil; - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return nil; - -#if DEBUG - if ([attribute isEqualToString:@"AXMozDescription"]) - return [NSString stringWithFormat:@"role = %u native = %@", mRole, [self class]]; -#endif - - if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) - return [self children]; - if ([attribute isEqualToString:NSAccessibilityParentAttribute]) - return [self parent]; - -#ifdef DEBUG_hakan - NSLog (@"(%@ responding to attr %@)", self, attribute); -#endif - - if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) - return [self role]; - if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) - return [self position]; - if ([attribute isEqualToString:NSAccessibilitySubroleAttribute]) - return [self subrole]; - if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) - return [NSNumber numberWithBool:[self isEnabled]]; - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) - return [self value]; - if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) - return [self roleDescription]; - if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) - return [NSNumber numberWithBool:[self isFocused]]; - if ([attribute isEqualToString:NSAccessibilitySizeAttribute]) - return [self size]; - if ([attribute isEqualToString:NSAccessibilityWindowAttribute]) - return [self window]; - if ([attribute isEqualToString:NSAccessibilityTopLevelUIElementAttribute]) - return [self window]; - if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) - return [self title]; - if ([attribute isEqualToString:NSAccessibilityTitleUIElementAttribute]) { - if (accWrap) { - Relation rel = accWrap->RelationByType(RelationType::LABELLED_BY); - Accessible* tempAcc = rel.Next(); - return tempAcc ? GetNativeFromGeckoAccessible(tempAcc) : nil; - } - nsTArray rel = proxy->RelationByType(RelationType::LABELLED_BY); - ProxyAccessible* tempProxy = rel.SafeElementAt(0); - return tempProxy ? GetNativeFromProxy(tempProxy) : nil; - } - if ([attribute isEqualToString:NSAccessibilityHelpAttribute]) - return [self help]; - - switch (mRole) { - case roles::MATHML_ROOT: - if ([attribute isEqualToString:NSAccessibilityMathRootRadicandAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathRootIndexAttribute]) - return [self childAt:1]; - break; - case roles::MATHML_SQUARE_ROOT: - if ([attribute isEqualToString:NSAccessibilityMathRootRadicandAttribute]) - return [self childAt:0]; - break; - case roles::MATHML_FRACTION: - if ([attribute isEqualToString:NSAccessibilityMathFractionNumeratorAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathFractionDenominatorAttribute]) - return [self childAt:1]; - if ([attribute isEqualToString:NSAccessibilityMathLineThicknessAttribute]) { - // WebKit sets line thickness to some logical value parsed in the - // renderer object of the element. It's not clear whether the - // exact value is relevant to assistive technologies. From a semantic - // point of view, the only important point is to distinguish between - // elements that have a fraction bar and those that do not. - // Per the MathML 3 spec, the latter happens iff the linethickness - // attribute is of the form [zero-float][optional-unit]. In that case we - // set line thickness to zero and in the other cases we set it to one. - nsAutoString thickness; - if (accWrap) { - nsCOMPtr attributes = accWrap->Attributes(); - nsAccUtils::GetAccAttr(attributes, nsGkAtoms::linethickness_, thickness); - } else { - AutoTArray attrs; - proxy->Attributes(&attrs); - for (size_t i = 0 ; i < attrs.Length() ; i++) { - if (attrs.ElementAt(i).Name() == "thickness") { - thickness = attrs.ElementAt(i).Value(); - break; - } - } - } - double value = 1.0; - if (!thickness.IsEmpty()) - value = PR_strtod(NS_LossyConvertUTF16toASCII(thickness).get(), - nullptr); - return [NSNumber numberWithInteger:(value ? 1 : 0)]; - } - break; - case roles::MATHML_SUB: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathSubscriptAttribute]) - return [self childAt:1]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathSuperscriptAttribute]) - return nil; -#endif - break; - case roles::MATHML_SUP: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathSubscriptAttribute]) - return nil; -#endif - if ([attribute isEqualToString:NSAccessibilityMathSuperscriptAttribute]) - return [self childAt:1]; - break; - case roles::MATHML_SUB_SUP: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathSubscriptAttribute]) - return [self childAt:1]; - if ([attribute isEqualToString:NSAccessibilityMathSuperscriptAttribute]) - return [self childAt:2]; - break; - case roles::MATHML_UNDER: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathUnderAttribute]) - return [self childAt:1]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathOverAttribute]) - return nil; -#endif - break; - case roles::MATHML_OVER: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathUnderAttribute]) - return nil; -#endif - if ([attribute isEqualToString:NSAccessibilityMathOverAttribute]) - return [self childAt:1]; - break; - case roles::MATHML_UNDER_OVER: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathUnderAttribute]) - return [self childAt:1]; - if ([attribute isEqualToString:NSAccessibilityMathOverAttribute]) - return [self childAt:2]; - break; - // XXX bug 1176983 - // roles::MATHML_MULTISCRIPTS should also have the following attributes: - // - NSAccessibilityMathPrescriptsAttribute - // - NSAccessibilityMathPostscriptsAttribute - // XXX bug 1176970 - // roles::MATHML_FENCED should also have the following attributes: - // - NSAccessibilityMathFencedOpenAttribute - // - NSAccessibilityMathFencedCloseAttribute - default: - break; - } - -#ifdef DEBUG - NSLog (@"!!! %@ can't respond to attribute %@", self, attribute); -#endif - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) - return [self canBeFocused]; - - return NO; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - -#ifdef DEBUG_hakan - NSLog (@"[%@] %@='%@'", self, attribute, value); -#endif - - // we only support focusing elements so far. - if ([attribute isEqualToString:NSAccessibilityFocusedAttribute] && [value boolValue]) - [self focus]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (id)accessibilityHitTest:(NSPoint)point -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return nil; - - // Convert the given screen-global point in the cocoa coordinate system (with - // origin in the bottom-left corner of the screen) into point in the Gecko - // coordinate system (with origin in a top-left screen point). - NSScreen* mainView = [[NSScreen screens] objectAtIndex:0]; - NSPoint tmpPoint = NSMakePoint(point.x, - [mainView frame].size.height - point.y); - LayoutDeviceIntPoint geckoPoint = nsCocoaUtils:: - CocoaPointsToDevPixels(tmpPoint, nsCocoaUtils::GetBackingScaleFactor(mainView)); - - mozAccessible* nativeChild = nil; - if (accWrap) { - Accessible* child = accWrap->ChildAtPoint(geckoPoint.x, geckoPoint.y, - Accessible::eDeepestChild); - if (child) - nativeChild = GetNativeFromGeckoAccessible(child); - } else if (proxy) { - ProxyAccessible* child = proxy->ChildAtPoint(geckoPoint.x, geckoPoint.y, - Accessible::eDeepestChild); - if (child) - nativeChild = GetNativeFromProxy(child); - } - - if (nativeChild) - return nativeChild; - - // if we didn't find anything, return ourself or child view. - return GetObjectOrRepresentedView(self); -} - -- (NSArray*)accessibilityActionNames -{ - return nil; -} - -- (NSString*)accessibilityActionDescription:(NSString*)action -{ - // by default we return whatever the MacOS API know about. - // if you have custom actions, override. - return NSAccessibilityActionDescription(action); -} - -- (void)accessibilityPerformAction:(NSString*)action -{ -} - -- (id)accessibilityFocusedUIElement -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return nil; - - mozAccessible* focusedChild = nil; - if (accWrap) { - Accessible* focusedGeckoChild = accWrap->FocusedChild(); - if (focusedGeckoChild) - focusedChild = GetNativeFromGeckoAccessible(focusedGeckoChild); - } else if (proxy) { - ProxyAccessible* focusedGeckoChild = proxy->FocusedChild(); - if (focusedGeckoChild) - focusedChild = GetNativeFromProxy(focusedGeckoChild); - } - - if (focusedChild) - return GetObjectOrRepresentedView(focusedChild); - - // return ourself if we can't get a native focused child. - return GetObjectOrRepresentedView(self); -} - -#pragma mark - - -- (id )parent -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - id nativeParent = nil; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - Accessible* accessibleParent = accWrap->Parent(); - if (accessibleParent) - nativeParent = GetNativeFromGeckoAccessible(accessibleParent); - if (nativeParent) - return GetObjectOrRepresentedView(nativeParent); - - // Return native of root accessible if we have no direct parent - nativeParent = GetNativeFromGeckoAccessible(accWrap->RootAccessible()); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if (ProxyAccessible* proxyParent = proxy->Parent()) { - nativeParent = GetNativeFromProxy(proxyParent); - } - - if (nativeParent) - return GetObjectOrRepresentedView(nativeParent); - - Accessible* outerDoc = proxy->OuterDocOfRemoteBrowser(); - nativeParent = outerDoc ? - GetNativeFromGeckoAccessible(outerDoc) : nil; - } else { - return nil; - } - - NSAssert1 (nativeParent, @"!!! we can't find a parent for %@", self); - - return GetObjectOrRepresentedView(nativeParent); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)hasRepresentedView -{ - return NO; -} - -- (id)representedView -{ - return nil; -} - -- (BOOL)isRoot -{ - return NO; -} - -// gets our native children lazily. -// returns nil when there are no children. -- (NSArray*)children -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (mChildren) - return mChildren; - - // get the array of children. - mChildren = [[NSMutableArray alloc] init]; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - if (accWrap) { - uint32_t childCount = accWrap->ChildCount(); - for (uint32_t childIdx = 0; childIdx < childCount; childIdx++) { - mozAccessible* nativeChild = GetNativeFromGeckoAccessible(accWrap->GetChildAt(childIdx)); - if (nativeChild) - [mChildren addObject:nativeChild]; - } - - // children from child if this is an outerdoc - OuterDocAccessible* docOwner = accWrap->AsOuterDoc(); - if (docOwner) { - if (ProxyAccessible* proxyDoc = docOwner->RemoteChildDoc()) { - mozAccessible* nativeRemoteChild = GetNativeFromProxy(proxyDoc); - [mChildren insertObject:nativeRemoteChild atIndex:0]; - NSAssert1 (nativeRemoteChild, @"%@ found a child remote doc missing a native\n", self); - } - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - uint32_t childCount = proxy->ChildrenCount(); - for (uint32_t childIdx = 0; childIdx < childCount; childIdx++) { - mozAccessible* nativeChild = GetNativeFromProxy(proxy->ChildAt(childIdx)); - if (nativeChild) - [mChildren addObject:nativeChild]; - } - - } - - return mChildren; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)position -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsIntRect rect; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - rect = accWrap->Bounds(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - rect = proxy->Bounds(); - else - return nil; - - NSScreen* mainView = [[NSScreen screens] objectAtIndex:0]; - CGFloat scaleFactor = nsCocoaUtils::GetBackingScaleFactor(mainView); - NSPoint p = NSMakePoint(static_cast(rect.x) / scaleFactor, - [mainView frame].size.height - static_cast(rect.y + rect.height) / scaleFactor); - - return [NSValue valueWithPoint:p]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)size -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsIntRect rect; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - rect = accWrap->Bounds(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - rect = proxy->Bounds(); - else - return nil; - - CGFloat scaleFactor = - nsCocoaUtils::GetBackingScaleFactor([[NSScreen screens] objectAtIndex:0]); - return [NSValue valueWithSize:NSMakeSize(static_cast(rect.width) / scaleFactor, - static_cast(rect.height) / scaleFactor)]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSString*)role -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - if (accWrap) { - #ifdef DEBUG_A11Y - NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap), - "Does not support Text when it should"); - #endif - } else if (![self getProxyAccessible]) { - return nil; - } - -#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role, nameRule) \ - case roles::geckoRole: \ - return macRole; - - switch (mRole) { -#include "RoleMap.h" - default: - NS_NOTREACHED("Unknown role."); - return NSAccessibilityUnknownRole; - } - -#undef ROLE -} - -- (NSString*)subrole -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - - // Deal with landmarks first - nsIAtom* landmark = nullptr; - if (accWrap) - landmark = accWrap->LandmarkRole(); - else if (proxy) - landmark = proxy->LandmarkRole(); - - if (landmark) { - if (landmark == nsGkAtoms::application) - return @"AXLandmarkApplication"; - if (landmark == nsGkAtoms::banner) - return @"AXLandmarkBanner"; - if (landmark == nsGkAtoms::complementary) - return @"AXLandmarkComplementary"; - if (landmark == nsGkAtoms::contentinfo) - return @"AXLandmarkContentInfo"; - if (landmark == nsGkAtoms::form) - return @"AXLandmarkForm"; - if (landmark == nsGkAtoms::main) - return @"AXLandmarkMain"; - if (landmark == nsGkAtoms::navigation) - return @"AXLandmarkNavigation"; - if (landmark == nsGkAtoms::search) - return @"AXLandmarkSearch"; - if (landmark == nsGkAtoms::searchbox) - return @"AXSearchField"; - } - - // Now, deal with widget roles - nsIAtom* roleAtom = nullptr; - if (accWrap && accWrap->HasARIARole()) { - const nsRoleMapEntry* roleMap = accWrap->ARIARoleMap(); - roleAtom = *roleMap->roleAtom; - } - if (proxy) - roleAtom = proxy->ARIARoleAtom(); - - if (roleAtom) { - if (roleAtom == nsGkAtoms::alert) - return @"AXApplicationAlert"; - if (roleAtom == nsGkAtoms::alertdialog) - return @"AXApplicationAlertDialog"; - if (roleAtom == nsGkAtoms::article) - return @"AXDocumentArticle"; - if (roleAtom == nsGkAtoms::dialog) - return @"AXApplicationDialog"; - if (roleAtom == nsGkAtoms::document) - return @"AXDocument"; - if (roleAtom == nsGkAtoms::log_) - return @"AXApplicationLog"; - if (roleAtom == nsGkAtoms::math) - return @"AXDocumentMath"; - if (roleAtom == nsGkAtoms::note_) - return @"AXDocumentNote"; - if (roleAtom == nsGkAtoms::region) - return @"AXDocumentRegion"; - if (roleAtom == nsGkAtoms::status) - return @"AXApplicationStatus"; - if (roleAtom == nsGkAtoms::tabpanel) - return @"AXTabPanel"; - if (roleAtom == nsGkAtoms::timer) - return @"AXApplicationTimer"; - if (roleAtom == nsGkAtoms::tooltip) - return @"AXUserInterfaceTooltip"; - } - - switch (mRole) { - case roles::LIST: - return @"AXContentList"; // 10.6+ NSAccessibilityContentListSubrole; - - case roles::ENTRY: - if ((accWrap && accWrap->IsSearchbox()) || - (proxy && proxy->IsSearchbox())) - return @"AXSearchField"; - break; - - case roles::DEFINITION_LIST: - return @"AXDefinitionList"; // 10.6+ NSAccessibilityDefinitionListSubrole; - - case roles::TERM: - return @"AXTerm"; - - case roles::DEFINITION: - return @"AXDefinition"; - - case roles::MATHML_MATH: - return @"AXDocumentMath"; - - case roles::MATHML_FRACTION: - return @"AXMathFraction"; - - case roles::MATHML_FENCED: - // XXX bug 1176970 - // This should be AXMathFence, but doing so without implementing the - // whole fence interface seems to make VoiceOver crash, so we present it - // as a row for now. - return @"AXMathRow"; - - case roles::MATHML_SUB: - case roles::MATHML_SUP: - case roles::MATHML_SUB_SUP: - return @"AXMathSubscriptSuperscript"; - - case roles::MATHML_ROW: - case roles::MATHML_STYLE: - case roles::MATHML_ERROR: - return @"AXMathRow"; - - case roles::MATHML_UNDER: - case roles::MATHML_OVER: - case roles::MATHML_UNDER_OVER: - return @"AXMathUnderOver"; - - case roles::MATHML_SQUARE_ROOT: - return @"AXMathSquareRoot"; - - case roles::MATHML_ROOT: - return @"AXMathRoot"; - - case roles::MATHML_TEXT: - return @"AXMathText"; - - case roles::MATHML_NUMBER: - return @"AXMathNumber"; - - case roles::MATHML_IDENTIFIER: - return @"AXMathIdentifier"; - - case roles::MATHML_TABLE: - return @"AXMathTable"; - - case roles::MATHML_TABLE_ROW: - return @"AXMathTableRow"; - - case roles::MATHML_CELL: - return @"AXMathTableCell"; - - // XXX: NSAccessibility also uses subroles AXMathSeparatorOperator and - // AXMathFenceOperator. We should use the NS_MATHML_OPERATOR_FENCE and - // NS_MATHML_OPERATOR_SEPARATOR bits of nsOperatorFlags, but currently they - // are only available from the MathML layout code. Hence we just fallback - // to subrole AXMathOperator for now. - // XXX bug 1175747 WebKit also creates anonymous operators for - // which have subroles AXMathSeparatorOperator and AXMathFenceOperator. - case roles::MATHML_OPERATOR: - return @"AXMathOperator"; - - case roles::MATHML_MULTISCRIPTS: - return @"AXMathMultiscript"; - - case roles::SWITCH: - return @"AXSwitch"; - - case roles::ALERT: - return @"AXApplicationAlert"; - - case roles::SEPARATOR: - return @"AXContentSeparator"; - - case roles::PROPERTYPAGE: - return @"AXTabPanel"; - - case roles::DETAILS: - return @"AXDetails"; - - case roles::SUMMARY: - return @"AXSummary"; - - default: - break; - } - - return nil; -} - -struct RoleDescrMap -{ - NSString* role; - const nsString description; -}; - -static const RoleDescrMap sRoleDescrMap[] = { - { @"AXApplicationAlert", NS_LITERAL_STRING("alert") }, - { @"AXApplicationAlertDialog", NS_LITERAL_STRING("alertDialog") }, - { @"AXApplicationLog", NS_LITERAL_STRING("log") }, - { @"AXApplicationStatus", NS_LITERAL_STRING("status") }, - { @"AXApplicationTimer", NS_LITERAL_STRING("timer") }, - { @"AXContentSeparator", NS_LITERAL_STRING("separator") }, - { @"AXDefinition", NS_LITERAL_STRING("definition") }, - { @"AXDocument", NS_LITERAL_STRING("document") }, - { @"AXDocumentArticle", NS_LITERAL_STRING("article") }, - { @"AXDocumentMath", NS_LITERAL_STRING("math") }, - { @"AXDocumentNote", NS_LITERAL_STRING("note") }, - { @"AXDocumentRegion", NS_LITERAL_STRING("region") }, - { @"AXLandmarkApplication", NS_LITERAL_STRING("application") }, - { @"AXLandmarkBanner", NS_LITERAL_STRING("banner") }, - { @"AXLandmarkComplementary", NS_LITERAL_STRING("complementary") }, - { @"AXLandmarkContentInfo", NS_LITERAL_STRING("content") }, - { @"AXLandmarkMain", NS_LITERAL_STRING("main") }, - { @"AXLandmarkNavigation", NS_LITERAL_STRING("navigation") }, - { @"AXLandmarkSearch", NS_LITERAL_STRING("search") }, - { @"AXSearchField", NS_LITERAL_STRING("searchTextField") }, - { @"AXTabPanel", NS_LITERAL_STRING("tabPanel") }, - { @"AXTerm", NS_LITERAL_STRING("term") }, - { @"AXUserInterfaceTooltip", NS_LITERAL_STRING("tooltip") } -}; - -struct RoleDescrComparator -{ - const NSString* mRole; - explicit RoleDescrComparator(const NSString* aRole) : mRole(aRole) {} - int operator()(const RoleDescrMap& aEntry) const { - return [mRole compare:aEntry.role]; - } -}; - -- (NSString*)roleDescription -{ - if (mRole == roles::DOCUMENT) - return utils::LocalizedString(NS_LITERAL_STRING("htmlContent")); - - NSString* subrole = [self subrole]; - - if (subrole) { - size_t idx = 0; - if (BinarySearchIf(sRoleDescrMap, 0, ArrayLength(sRoleDescrMap), - RoleDescrComparator(subrole), &idx)) { - return utils::LocalizedString(sRoleDescrMap[idx].description); - } - } - - return NSAccessibilityRoleDescription([self role], subrole); -} - -- (NSString*)title -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsAutoString title; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->Name(title); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->Name(title); - - return nsCocoaUtils::ToNSString(title); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)value -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsAutoString value; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->Value(value); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->Value(value); - - return nsCocoaUtils::ToNSString(value); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)valueDidChange -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - -#ifdef DEBUG_hakan - NSLog(@"%@'s value changed!", self); -#endif - // sending out a notification is expensive, so we don't do it other than for really important objects, - // like mozTextAccessible. - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)selectedTextDidChange -{ - // Do nothing. mozTextAccessible will. -} - -- (void)documentLoadComplete -{ - id realSelf = GetObjectOrRepresentedView(self); - NSAccessibilityPostNotification(realSelf, NSAccessibilityFocusedUIElementChangedNotification); - NSAccessibilityPostNotification(realSelf, @"AXLoadComplete"); - NSAccessibilityPostNotification(realSelf, @"AXLayoutComplete"); -} - -- (NSString*)help -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // What needs to go here is actually the accDescription of an item. - // The MSAA acc_help method has nothing to do with this one. - nsAutoString helpText; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->Description(helpText); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->Description(helpText); - - return nsCocoaUtils::ToNSString(helpText); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -// objc-style description (from NSObject); not to be confused with the accessible description above. -- (NSString*)description -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - return [NSString stringWithFormat:@"(%p) %@", self, [self role]]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)isFocused -{ - return FocusMgr()->IsFocused([self getGeckoAccessible]); -} - -- (BOOL)canBeFocused -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return accWrap->InteractiveState() & states::FOCUSABLE; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return proxy->State() & states::FOCUSABLE; - - return false; -} - -- (BOOL)focus -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->TakeFocus(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->TakeFocus(); - else - return NO; - - return YES; -} - -- (BOOL)isEnabled -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return ((accWrap->InteractiveState() & states::UNAVAILABLE) == 0); - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return ((proxy->State() & states::UNAVAILABLE) == 0); - - return false; -} - -// The root accessible calls this when the focused node was -// changed to us. -- (void)didReceiveFocus -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - -#ifdef DEBUG_hakan - NSLog (@"%@ received focus!", self); -#endif - NSAccessibilityPostNotification(GetObjectOrRepresentedView(self), - NSAccessibilityFocusedUIElementChangedNotification); - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (NSWindow*)window -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // Get a pointer to the native window (NSWindow) we reside in. - NSWindow *nativeWindow = nil; - DocAccessible* docAcc = nullptr; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - docAcc = accWrap->Document(); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - Accessible* outerDoc = proxy->OuterDocOfRemoteBrowser(); - if (outerDoc) - docAcc = outerDoc->Document(); - } - - if (docAcc) - nativeWindow = static_cast(docAcc->GetNativeWindow()); - - NSAssert1(nativeWindow, @"Could not get native window for %@", self); - return nativeWindow; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)invalidateChildren -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - // make room for new children - [mChildren release]; - mChildren = nil; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)appendChild:(Accessible*)aAccessible -{ - // if mChildren is nil, then we don't even need to bother - if (!mChildren) - return; - - mozAccessible *curNative = GetNativeFromGeckoAccessible(aAccessible); - if (curNative) - [mChildren addObject:curNative]; -} - -- (void)expire -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [self invalidateChildren]; - - mGeckoAccessible = 0; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (BOOL)isExpired -{ - return ![self getGeckoAccessible] && ![self getProxyAccessible]; -} - -#pragma mark - -#pragma mark Debug methods -#pragma mark - - -#ifdef DEBUG - -// will check that our children actually reference us as their -// parent. -- (void)sanityCheckChildren:(NSArray *)children -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - NSEnumerator *iter = [children objectEnumerator]; - mozAccessible *curObj = nil; - - NSLog(@"sanity checking %@", self); - - while ((curObj = [iter nextObject])) { - id realSelf = GetObjectOrRepresentedView(self); - NSLog(@"checking %@", realSelf); - NSAssert2([curObj parent] == realSelf, - @"!!! %@ not returning %@ as AXParent, even though it is a AXChild of it!", curObj, realSelf); - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)sanityCheckChildren -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [self sanityCheckChildren:[self children]]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)printHierarchy -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [self printHierarchyWithLevel:0]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)printHierarchyWithLevel:(unsigned)level -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - NSAssert(![self isExpired], @"!!! trying to print hierarchy of expired object!"); - - // print this node - NSMutableString *indent = [NSMutableString stringWithCapacity:level]; - unsigned i=0; - for (;i - -#import "mozView.h" - -/* This protocol's primary use is so widget/cocoa can talk back to us - properly. - - ChildView owns the topmost mozRootAccessible, and needs to take care of setting up - that parent/child relationship. - - This protocol is thus used to make sure it knows it's talking to us, and not - just some random |id|. -*/ - -@protocol mozAccessible - -// returns whether this accessible is the root accessible. there is one -// root accessible per window. -- (BOOL)isRoot; - -// some mozAccessibles implement accessibility support in place of another object. for example, -// ChildView gets its support from us. -// -// instead of returning a mozAccessible to the OS when it wants an object, we need to pass the view we represent, so the -// OS doesn't get confused and think we return some random object. -- (BOOL)hasRepresentedView; -- (id)representedView; - -#ifdef DEBUG -// debug utility that will print the native accessibility tree, starting -// at this node. -- (void)printHierarchy; -#endif - -/*** general ***/ - -// returns the accessible at the specified point. -- (id)accessibilityHitTest:(NSPoint)point; - -// whether this element is flagged as ignored. -- (BOOL)accessibilityIsIgnored; - -// currently focused UI element (possibly a child accessible) -- (id)accessibilityFocusedUIElement; - -/*** attributes ***/ - -// all supported attributes -- (NSArray*)accessibilityAttributeNames; - -// value for given attribute. -- (id)accessibilityAttributeValue:(NSString*)attribute; - -// whether a particular attribute can be modified -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute; - -/*** actions ***/ - -- (NSArray*)accessibilityActionNames; -- (NSString*)accessibilityActionDescription:(NSString*)action; -- (void)accessibilityPerformAction:(NSString*)action; - -@end - diff --git a/accessible/mac/mozActionElements.h b/accessible/mac/mozActionElements.h deleted file mode 100644 index a325921eb..000000000 --- a/accessible/mac/mozActionElements.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#import "mozAccessible.h" - -/* Simple subclasses for things like checkboxes, buttons, etc. */ - -@interface mozButtonAccessible : mozAccessible - { - } -- (BOOL)hasPopup; -- (void)click; -- (BOOL)isTab; -@end - -@interface mozCheckboxAccessible : mozButtonAccessible -// returns one of the constants defined in CheckboxValue -- (int)isChecked; -@end - -/* Class for tabs - not individual tabs */ -@interface mozTabsAccessible : mozAccessible -{ - NSMutableArray* mTabs; -} --(id)tabs; -@end - -/** - * Accessible for a PANE - */ -@interface mozPaneAccessible : mozAccessible - -@end diff --git a/accessible/mac/mozActionElements.mm b/accessible/mac/mozActionElements.mm deleted file mode 100644 index 5decd6ccc..000000000 --- a/accessible/mac/mozActionElements.mm +++ /dev/null @@ -1,340 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozActionElements.h" - -#import "MacUtils.h" -#include "Accessible-inl.h" -#include "DocAccessible.h" -#include "XULTabAccessible.h" - -#include "nsDeckFrame.h" -#include "nsObjCExceptions.h" - -using namespace mozilla::a11y; - -enum CheckboxValue { - // these constants correspond to the values in the OS - kUnchecked = 0, - kChecked = 1, - kMixed = 2 -}; - -@implementation mozButtonAccessible - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - static NSArray *attributes = nil; - if (!attributes) { - attributes = [[NSArray alloc] initWithObjects:NSAccessibilityParentAttribute, // required - NSAccessibilityRoleAttribute, // required - NSAccessibilityRoleDescriptionAttribute, - NSAccessibilityPositionAttribute, // required - NSAccessibilitySizeAttribute, // required - NSAccessibilityWindowAttribute, // required - NSAccessibilityPositionAttribute, // required - NSAccessibilityTopLevelUIElementAttribute, // required - NSAccessibilityHelpAttribute, - NSAccessibilityEnabledAttribute, // required - NSAccessibilityFocusedAttribute, // required - NSAccessibilityTitleAttribute, // required - NSAccessibilityChildrenAttribute, - NSAccessibilityDescriptionAttribute, -#if DEBUG - @"AXMozDescription", -#endif - nil]; - } - return attributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { - if ([self hasPopup]) - return [self children]; - return nil; - } - - if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) { - if ([self isTab]) - return utils::LocalizedString(NS_LITERAL_STRING("tab")); - - return NSAccessibilityRoleDescription([self role], nil); - } - - return [super accessibilityAttributeValue:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)accessibilityIsIgnored -{ - return ![self getGeckoAccessible] && ![self getProxyAccessible]; -} - -- (NSArray*)accessibilityActionNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([self isEnabled]) { - if ([self hasPopup]) - return [NSArray arrayWithObjects:NSAccessibilityPressAction, - NSAccessibilityShowMenuAction, - nil]; - return [NSArray arrayWithObject:NSAccessibilityPressAction]; - } - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSString*)accessibilityActionDescription:(NSString*)action -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([action isEqualToString:NSAccessibilityPressAction]) { - if ([self isTab]) - return utils::LocalizedString(NS_LITERAL_STRING("switch")); - - return @"press button"; // XXX: localize this later? - } - - if ([self hasPopup]) { - if ([action isEqualToString:NSAccessibilityShowMenuAction]) - return @"show menu"; - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)accessibilityPerformAction:(NSString*)action -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - if ([self isEnabled] && [action isEqualToString:NSAccessibilityPressAction]) { - // TODO: this should bring up the menu, but currently doesn't. - // once msaa and atk have merged better, they will implement - // the action needed to show the menu. - [self click]; - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)click -{ - // both buttons and checkboxes have only one action. we should really stop using arbitrary - // arrays with actions, and define constants for these actions. - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->DoAction(0); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->DoAction(0); -} - -- (BOOL)isTab -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return accWrap->Role() == roles::PAGETAB; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return proxy->Role() == roles::PAGETAB; - - return false; -} - -- (BOOL)hasPopup -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return accWrap->NativeState() & states::HASPOPUP; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return proxy->NativeState() & states::HASPOPUP; - - return false; -} - -@end - -@implementation mozCheckboxAccessible - -- (NSString*)accessibilityActionDescription:(NSString*)action -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([action isEqualToString:NSAccessibilityPressAction]) { - if ([self isChecked] != kUnchecked) - return @"uncheck checkbox"; // XXX: localize this later? - - return @"check checkbox"; // XXX: localize this later? - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (int)isChecked -{ - uint64_t state = 0; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - state = accWrap->NativeState(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - state = proxy->NativeState(); - - // check if we're checked or in a mixed state - if (state & states::CHECKED) { - return (state & states::MIXED) ? kMixed : kChecked; - } - - return kUnchecked; -} - -- (id)value -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - return [NSNumber numberWithInt:[self isChecked]]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -@end - -@implementation mozTabsAccessible - -- (void)dealloc -{ - [mTabs release]; - - [super dealloc]; -} - -- (NSArray*)accessibilityAttributeNames -{ - // standard attributes that are shared and supported by root accessible (AXMain) elements. - static NSMutableArray* attributes = nil; - - if (!attributes) { - attributes = [[super accessibilityAttributeNames] mutableCopy]; - [attributes addObject:NSAccessibilityContentsAttribute]; - [attributes addObject:NSAccessibilityTabsAttribute]; - } - - return attributes; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - if ([attribute isEqualToString:NSAccessibilityContentsAttribute]) - return [super children]; - if ([attribute isEqualToString:NSAccessibilityTabsAttribute]) - return [self tabs]; - - return [super accessibilityAttributeValue:attribute]; -} - -/** - * Returns the selected tab (the mozAccessible) - */ -- (id)value -{ - mozAccessible* nativeAcc = nil; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - if (Accessible* accTab = accWrap->GetSelectedItem(0)) { - accTab->GetNativeInterface((void**)&nativeAcc); - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if (ProxyAccessible* proxyTab = proxy->GetSelectedItem(0)) { - nativeAcc = GetNativeFromProxy(proxyTab); - } - } - - return nativeAcc; -} - -/** - * Return the mozAccessibles that are the tabs. - */ -- (id)tabs -{ - if (mTabs) - return mTabs; - - NSArray* children = [self children]; - NSEnumerator* enumerator = [children objectEnumerator]; - mTabs = [[NSMutableArray alloc] init]; - - id obj; - while ((obj = [enumerator nextObject])) - if ([obj isTab]) - [mTabs addObject:obj]; - - return mTabs; -} - -- (void)invalidateChildren -{ - [super invalidateChildren]; - - [mTabs release]; - mTabs = nil; -} - -@end - -@implementation mozPaneAccessible - -- (NSUInteger)accessibilityArrayAttributeCount:(NSString*)attribute -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return 0; - - // By default this calls -[[mozAccessible children] count]. - // Since we don't cache mChildren. This is faster. - if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { - if (accWrap) - return accWrap->ChildCount() ? 1 : 0; - - return proxy->ChildrenCount() ? 1 : 0; - } - - return [super accessibilityArrayAttributeCount:attribute]; -} - -- (NSArray*)children -{ - if (![self getGeckoAccessible]) - return nil; - - nsDeckFrame* deckFrame = do_QueryFrame([self getGeckoAccessible]->GetFrame()); - nsIFrame* selectedFrame = deckFrame ? deckFrame->GetSelectedBox() : nullptr; - - Accessible* selectedAcc = nullptr; - if (selectedFrame) { - nsINode* node = selectedFrame->GetContent(); - selectedAcc = [self getGeckoAccessible]->Document()->GetAccessible(node); - } - - if (selectedAcc) { - mozAccessible *curNative = GetNativeFromGeckoAccessible(selectedAcc); - if (curNative) - return [NSArray arrayWithObjects:GetObjectOrRepresentedView(curNative), nil]; - } - - return nil; -} - -@end diff --git a/accessible/mac/mozDocAccessible.h b/accessible/mac/mozDocAccessible.h deleted file mode 100644 index c38177311..000000000 --- a/accessible/mac/mozDocAccessible.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#import "mozAccessible.h" - -// our protocol that we implement (so cocoa widgets can talk to us) -#import "mozAccessibleProtocol.h" - -/* - The root accessible. There is one per window. - Created by the RootAccessibleWrap. -*/ -@interface mozRootAccessible : mozAccessible -{ - // the mozView that we're representing. - // all outside communication goes through the mozView. - // in reality, it's just piping all calls to us, and we're - // doing its dirty work! - // - // whenever someone asks who we are (e.g., a child asking - // for its parent, or our parent asking for its child), we'll - // respond the mozView. it is absolutely necessary for third- - // party tools that we do this! - // - // /hwaara - id mParallelView; // weak ref -} -@end diff --git a/accessible/mac/mozDocAccessible.mm b/accessible/mac/mozDocAccessible.mm deleted file mode 100644 index 4bae81f01..000000000 --- a/accessible/mac/mozDocAccessible.mm +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "RootAccessibleWrap.h" - -#import "mozDocAccessible.h" - -#import "mozView.h" - -// This must be included last: -#include "nsObjCExceptions.h" - -using namespace mozilla::a11y; - -static id -getNativeViewFromRootAccessible(Accessible* aAccessible) -{ - RootAccessibleWrap* root = - static_cast(aAccessible->AsRoot()); - id nativeView = nil; - root->GetNativeWidget ((void**)&nativeView); - return nativeView; -} - -#pragma mark - - -@implementation mozRootAccessible - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // if we're expired, we don't support any attributes. - if (![self getGeckoAccessible]) - return [NSArray array]; - - // standard attributes that are shared and supported by root accessible (AXMain) elements. - static NSMutableArray* attributes = nil; - - if (!attributes) { - attributes = [[super accessibilityAttributeNames] mutableCopy]; - [attributes addObject:NSAccessibilityMainAttribute]; - [attributes addObject:NSAccessibilityMinimizedAttribute]; - } - - return attributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([attribute isEqualToString:NSAccessibilityMainAttribute]) - return [NSNumber numberWithBool:[[self window] isMainWindow]]; - if ([attribute isEqualToString:NSAccessibilityMinimizedAttribute]) - return [NSNumber numberWithBool:[[self window] isMiniaturized]]; - - return [super accessibilityAttributeValue:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - - -// return the AXParent that our parallell NSView tells us about. -- (id)parent -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (!mParallelView) - mParallelView = (id)[self representedView]; - - if (mParallelView) - return [mParallelView accessibilityAttributeValue:NSAccessibilityParentAttribute]; - - NSAssert(mParallelView, @"we're a root accessible w/o native view?"); - return [super parent]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)hasRepresentedView -{ - return YES; -} - -// this will return our parallell NSView. see mozDocAccessible.h -- (id)representedView -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (mParallelView) - return (id)mParallelView; - - mParallelView = getNativeViewFromRootAccessible ([self getGeckoAccessible]); - - NSAssert(mParallelView, @"can't return root accessible's native parallel view."); - return mParallelView; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)isRoot -{ - return YES; -} - -@end diff --git a/accessible/mac/mozHTMLAccessible.h b/accessible/mac/mozHTMLAccessible.h deleted file mode 100644 index c70a3c2a2..000000000 --- a/accessible/mac/mozHTMLAccessible.h +++ /dev/null @@ -1,16 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -@interface mozHeadingAccessible : mozAccessible - -@end - -@interface mozLinkAccessible : mozAccessible - -@end diff --git a/accessible/mac/mozHTMLAccessible.mm b/accessible/mac/mozHTMLAccessible.mm deleted file mode 100644 index 2079a4aa6..000000000 --- a/accessible/mac/mozHTMLAccessible.mm +++ /dev/null @@ -1,141 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozHTMLAccessible.h" - -#import "Accessible-inl.h" -#import "HyperTextAccessible.h" - -#import "nsCocoaUtils.h" - -using namespace mozilla::a11y; - -@implementation mozHeadingAccessible - -- (NSString*)title -{ - nsAutoString title; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - mozilla::ErrorResult rv; - // XXX use the flattening API when there are available - // see bug 768298 - accWrap->GetContent()->GetTextContent(title, rv); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - proxy->Title(title); - } - - return nsCocoaUtils::ToNSString(title); -} - -- (id)value -{ - uint32_t level = 0; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - level = accWrap->GetLevelInternal(); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - level = proxy->GetLevelInternal(); - } - - return [NSNumber numberWithInt:level]; -} - -@end - -@interface mozLinkAccessible () --(NSURL*)url; -@end - -@implementation mozLinkAccessible - -- (NSArray*)accessibilityAttributeNames -{ - // if we're expired, we don't support any attributes. - if (![self getGeckoAccessible] && ![self getProxyAccessible]) - return [NSArray array]; - - static NSMutableArray* attributes = nil; - - if (!attributes) { - attributes = [[super accessibilityAttributeNames] mutableCopy]; - [attributes addObject:NSAccessibilityURLAttribute]; - } - - return attributes; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - if ([attribute isEqualToString:NSAccessibilityURLAttribute]) - return [self url]; - - return [super accessibilityAttributeValue:attribute]; -} - -- (NSArray*)accessibilityActionNames -{ - // if we're expired, we don't support any attributes. - if (![self getGeckoAccessible] && ![self getProxyAccessible]) - return [NSArray array]; - - static NSArray* actionNames = nil; - - if (!actionNames) { - actionNames = [[NSArray alloc] initWithObjects:NSAccessibilityPressAction, - nil]; - } - - return actionNames; -} - -- (void)accessibilityPerformAction:(NSString*)action -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) { - return; - } - - if ([action isEqualToString:NSAccessibilityPressAction]) { - if (accWrap) { - accWrap->DoAction(0); - } else if (proxy) { - proxy->DoAction(0); - } - return; - } - - [super accessibilityPerformAction:action]; - -} - -- (NSString*)customDescription -{ - return @""; -} - -- (NSString*)value -{ - return @""; -} - -- (NSURL*)url -{ - nsAutoString value; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - accWrap->Value(value); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - proxy->Value(value); - } - - NSString* urlString = value.IsEmpty() ? nil : nsCocoaUtils::ToNSString(value); - if (!urlString) - return nil; - - return [NSURL URLWithString:urlString]; -} - -@end diff --git a/accessible/mac/mozTableAccessible.h b/accessible/mac/mozTableAccessible.h deleted file mode 100644 index 435b5adc5..000000000 --- a/accessible/mac/mozTableAccessible.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -@interface mozTablePartAccessible : mozAccessible -- (BOOL)isLayoutTablePart; -- (NSString*)role; -@end - -@interface mozTableAccessible : mozTablePartAccessible -- (NSArray*)additionalAccessibilityAttributeNames; -- (id)accessibilityAttributeValue:(NSString*)attribute; -@end - -@interface mozTableRowAccessible : mozTablePartAccessible -- (NSArray*)additionalAccessibilityAttributeNames; -- (id)accessibilityAttributeValue:(NSString*)attribute; -@end - -@interface mozTableCellAccessible : mozTablePartAccessible -- (NSArray*)additionalAccessibilityAttributeNames; -- (id)accessibilityAttributeValue:(NSString*)attribute; -@end diff --git a/accessible/mac/mozTableAccessible.mm b/accessible/mac/mozTableAccessible.mm deleted file mode 100644 index 6ad157b9f..000000000 --- a/accessible/mac/mozTableAccessible.mm +++ /dev/null @@ -1,281 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "Accessible-inl.h" -#import "mozTableAccessible.h" -#import "TableAccessible.h" -#import "TableCellAccessible.h" -#import "nsCocoaUtils.h" - -using namespace mozilla::a11y; - -// convert an array of Gecko accessibles to an NSArray of native accessibles -static inline NSMutableArray* -ConvertToNSArray(nsTArray& aArray) -{ - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - - // iterate through the list, and get each native accessible. - size_t totalCount = aArray.Length(); - for (size_t i = 0; i < totalCount; i++) { - Accessible* curAccessible = aArray.ElementAt(i); - mozAccessible* curNative = GetNativeFromGeckoAccessible(curAccessible); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - - return nativeArray; -} - -// convert an array of Gecko proxy accessibles to an NSArray of native accessibles -static inline NSMutableArray* -ConvertToNSArray(nsTArray& aArray) -{ - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - - // iterate through the list, and get each native accessible. - size_t totalCount = aArray.Length(); - for (size_t i = 0; i < totalCount; i++) { - ProxyAccessible* curAccessible = aArray.ElementAt(i); - mozAccessible* curNative = GetNativeFromProxy(curAccessible); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - - return nativeArray; -} - -@implementation mozTablePartAccessible -- (BOOL)isLayoutTablePart; -{ - if (Accessible* accWrap = [self getGeckoAccessible]) { - while (accWrap) { - if (accWrap->IsTable()) { - return accWrap->AsTable()->IsProbablyLayoutTable(); - } - accWrap = accWrap->Parent(); - } - return false; - } - - if (ProxyAccessible* proxy = [self getProxyAccessible]) { - while (proxy) { - if (proxy->IsTable()) { - return proxy->TableIsProbablyForLayout(); - } - proxy = proxy->Parent(); - } - } - - return false; -} - -- (NSString*)role -{ - return [self isLayoutTablePart] ? NSAccessibilityGroupRole : [super role]; -} -@end - -@implementation mozTableAccessible -- (NSArray*)additionalAccessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames]; - if ([self isLayoutTablePart]) { - return additionalAttributes; - } - - static NSArray* tableAttrs = nil; - if (!tableAttrs) { - NSMutableArray* tempArray = [NSMutableArray new]; - [tempArray addObject:NSAccessibilityRowCountAttribute]; - [tempArray addObject:NSAccessibilityColumnCountAttribute]; - [tempArray addObject:NSAccessibilityRowsAttribute]; - tableAttrs = [[NSArray alloc] initWithArray:tempArray]; - [tempArray release]; - } - - return [additionalAttributes arrayByAddingObjectsFromArray:tableAttrs]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - TableAccessible* table = accWrap->AsTable(); - if ([attribute isEqualToString:NSAccessibilityRowCountAttribute]) - return @(table->RowCount()); - if ([attribute isEqualToString:NSAccessibilityColumnCountAttribute]) - return @(table->ColCount()); - if ([attribute isEqualToString:NSAccessibilityRowsAttribute]) { - // Create a new array with the list of table rows. - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - uint32_t totalCount = accWrap->ChildCount(); - for (uint32_t i = 0; i < totalCount; i++) { - if (accWrap->GetChildAt(i)->IsTableRow()) { - mozAccessible* curNative = - GetNativeFromGeckoAccessible(accWrap->GetChildAt(i)); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - } - return nativeArray; - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:NSAccessibilityRowCountAttribute]) - return @(proxy->TableRowCount()); - if ([attribute isEqualToString:NSAccessibilityColumnCountAttribute]) - return @(proxy->TableColumnCount()); - if ([attribute isEqualToString:NSAccessibilityRowsAttribute]) { - // Create a new array with the list of table rows. - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - uint32_t totalCount = proxy->ChildrenCount(); - for (uint32_t i = 0; i < totalCount; i++) { - if (proxy->ChildAt(i)->IsTableRow()) { - mozAccessible* curNative = - GetNativeFromProxy(proxy->ChildAt(i)); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - } - return nativeArray; - } - } - - return [super accessibilityAttributeValue:attribute]; -} -@end - -@implementation mozTableRowAccessible -- (NSArray*)additionalAccessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames]; - if ([self isLayoutTablePart]) { - return additionalAttributes; - } - - static NSArray* tableRowAttrs = nil; - if (!tableRowAttrs) { - NSMutableArray* tempArray = [NSMutableArray new]; - [tempArray addObject:NSAccessibilityIndexAttribute]; - tableRowAttrs = [[NSArray alloc] initWithArray:tempArray]; - [tempArray release]; - } - - return [additionalAttributes arrayByAddingObjectsFromArray:tableRowAttrs]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - if ([attribute isEqualToString:NSAccessibilityIndexAttribute]) { - // Count the number of rows before that one to obtain the row index. - uint32_t index = 0; - Accessible* parent = accWrap->Parent(); - if (parent) { - for (int32_t i = accWrap->IndexInParent() - 1; i >= 0; i--) { - if (parent->GetChildAt(i)->IsTableRow()) { - index++; - } - } - } - return [NSNumber numberWithUnsignedInteger:index]; - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:NSAccessibilityIndexAttribute]) { - // Count the number of rows before that one to obtain the row index. - uint32_t index = 0; - ProxyAccessible* parent = proxy->Parent(); - if (parent) { - for (int32_t i = proxy->IndexInParent() - 1; i >= 0; i--) { - if (parent->ChildAt(i)->IsTableRow()) { - index++; - } - } - } - return [NSNumber numberWithUnsignedInteger:index]; - } - } - - return [super accessibilityAttributeValue:attribute]; -} -@end - -@implementation mozTableCellAccessible -- (NSArray*)additionalAccessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames]; - if ([self isLayoutTablePart]) { - return additionalAttributes; - } - - static NSArray* tableCellAttrs = nil; - if (!tableCellAttrs) { - NSMutableArray* tempArray = [NSMutableArray new]; - [tempArray addObject:NSAccessibilityRowIndexRangeAttribute]; - [tempArray addObject:NSAccessibilityColumnIndexRangeAttribute]; - [tempArray addObject:NSAccessibilityRowHeaderUIElementsAttribute]; - [tempArray addObject:NSAccessibilityColumnHeaderUIElementsAttribute]; - tableCellAttrs = [[NSArray alloc] initWithArray:tempArray]; - [tempArray release]; - } - - return [additionalAttributes arrayByAddingObjectsFromArray:tableCellAttrs]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - TableCellAccessible* cell = accWrap->AsTableCell(); - if ([attribute isEqualToString:NSAccessibilityRowIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(cell->RowIdx(), - cell->RowExtent())]; - if ([attribute isEqualToString:NSAccessibilityColumnIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(cell->ColIdx(), - cell->ColExtent())]; - if ([attribute isEqualToString:NSAccessibilityRowHeaderUIElementsAttribute]) { - AutoTArray headerCells; - cell->RowHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - if ([attribute isEqualToString:NSAccessibilityColumnHeaderUIElementsAttribute]) { - AutoTArray headerCells; - cell->ColHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:NSAccessibilityRowIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(proxy->RowIdx(), - proxy->RowExtent())]; - if ([attribute isEqualToString:NSAccessibilityColumnIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(proxy->ColIdx(), - proxy->ColExtent())]; - if ([attribute isEqualToString:NSAccessibilityRowHeaderUIElementsAttribute]) { - nsTArray headerCells; - proxy->RowHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - if ([attribute isEqualToString:NSAccessibilityColumnHeaderUIElementsAttribute]) { - nsTArray headerCells; - proxy->ColHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - } - - return [super accessibilityAttributeValue:attribute]; -} -@end diff --git a/accessible/mac/mozTextAccessible.h b/accessible/mac/mozTextAccessible.h deleted file mode 100644 index 8bc23ae8d..000000000 --- a/accessible/mac/mozTextAccessible.h +++ /dev/null @@ -1,17 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -#import "HyperTextAccessible.h" - -@interface mozTextAccessible : mozAccessible -{ -} -@end - -@interface mozTextLeafAccessible : mozAccessible -{ -} -@end diff --git a/accessible/mac/mozTextAccessible.mm b/accessible/mac/mozTextAccessible.mm deleted file mode 100644 index 1f433b802..000000000 --- a/accessible/mac/mozTextAccessible.mm +++ /dev/null @@ -1,627 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "Accessible-inl.h" -#include "HyperTextAccessible-inl.h" -#include "TextLeafAccessible.h" - -#include "nsCocoaUtils.h" -#include "nsObjCExceptions.h" - -#import "mozTextAccessible.h" - -using namespace mozilla; -using namespace mozilla::a11y; - -inline bool -ToNSRange(id aValue, NSRange* aRange) -{ - NS_PRECONDITION(aRange, "aRange is nil"); - - if ([aValue isKindOfClass:[NSValue class]] && - strcmp([(NSValue*)aValue objCType], @encode(NSRange)) == 0) { - *aRange = [aValue rangeValue]; - return true; - } - - return false; -} - -inline NSString* -ToNSString(id aValue) -{ - if ([aValue isKindOfClass:[NSString class]]) { - return aValue; - } - - return nil; -} - -@interface mozTextAccessible () -- (NSString*)subrole; -- (NSString*)selectedText; -- (NSValue*)selectedTextRange; -- (NSValue*)visibleCharacterRange; -- (long)textLength; -- (BOOL)isReadOnly; -- (NSNumber*)caretLineNumber; -- (void)setText:(NSString*)newText; -- (NSString*)text; -- (NSString*)stringFromRange:(NSRange*)range; -@end - -@implementation mozTextAccessible - -- (BOOL)accessibilityIsIgnored -{ - return ![self getGeckoAccessible] && ![self getProxyAccessible]; -} - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - static NSMutableArray* supportedAttributes = nil; - if (!supportedAttributes) { - // text-specific attributes to supplement the standard one - supportedAttributes = [[NSMutableArray alloc] initWithObjects: - NSAccessibilitySelectedTextAttribute, // required - NSAccessibilitySelectedTextRangeAttribute, // required - NSAccessibilityNumberOfCharactersAttribute, // required - NSAccessibilityVisibleCharacterRangeAttribute, // required - NSAccessibilityInsertionPointLineNumberAttribute, - @"AXRequired", - @"AXInvalid", - nil - ]; - [supportedAttributes addObjectsFromArray:[super accessibilityAttributeNames]]; - } - return supportedAttributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([attribute isEqualToString:NSAccessibilityNumberOfCharactersAttribute]) - return [NSNumber numberWithInt:[self textLength]]; - - if ([attribute isEqualToString:NSAccessibilityInsertionPointLineNumberAttribute]) - return [self caretLineNumber]; - - if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) - return [self selectedTextRange]; - - if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute]) - return [self selectedText]; - - if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) - return @""; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { - // Apple's SpeechSynthesisServer expects AXValue to return an AXStaticText - // object's AXSelectedText attribute. See bug 674612 for details. - // Also if there is no selected text, we return the full text. - // See bug 369710 for details. - if ([[self role] isEqualToString:NSAccessibilityStaticTextRole]) { - NSString* selectedText = [self selectedText]; - return (selectedText && [selectedText length]) ? selectedText : [self text]; - } - - return [self text]; - } - - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - if ([attribute isEqualToString:@"AXRequired"]) { - return [NSNumber numberWithBool:!!(accWrap->State() & states::REQUIRED)]; - } - - if ([attribute isEqualToString:@"AXInvalid"]) { - return [NSNumber numberWithBool:!!(accWrap->State() & states::INVALID)]; - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:@"AXRequired"]) { - return [NSNumber numberWithBool:!!(proxy->State() & states::REQUIRED)]; - } - - if ([attribute isEqualToString:@"AXInvalid"]) { - return [NSNumber numberWithBool:!!(proxy->State() & states::INVALID)]; - } - } - - if ([attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) - return [self visibleCharacterRange]; - - // let mozAccessible handle all other attributes - return [super accessibilityAttributeValue:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSArray*)accessibilityParameterizedAttributeNames -{ - static NSArray* supportedParametrizedAttributes = nil; - // text specific parametrized attributes - if (!supportedParametrizedAttributes) { - supportedParametrizedAttributes = [[NSArray alloc] initWithObjects: - NSAccessibilityStringForRangeParameterizedAttribute, - NSAccessibilityLineForIndexParameterizedAttribute, - NSAccessibilityRangeForLineParameterizedAttribute, - NSAccessibilityAttributedStringForRangeParameterizedAttribute, - NSAccessibilityBoundsForRangeParameterizedAttribute, -#if DEBUG - NSAccessibilityRangeForPositionParameterizedAttribute, - NSAccessibilityRangeForIndexParameterizedAttribute, - NSAccessibilityRTFForRangeParameterizedAttribute, - NSAccessibilityStyleRangeForIndexParameterizedAttribute, -#endif - nil - ]; - } - return supportedParametrizedAttributes; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute forParameter:(id)parameter -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - if ([attribute isEqualToString:NSAccessibilityStringForRangeParameterizedAttribute]) { - NSRange range; - if (!ToNSRange(parameter, &range)) { -#if DEBUG - NSLog(@"%@: range not set", attribute); -#endif - return @""; - } - - return [self stringFromRange:&range]; - } - - if ([attribute isEqualToString:NSAccessibilityRangeForLineParameterizedAttribute]) { - // XXX: actually get the integer value for the line # - return [NSValue valueWithRange:NSMakeRange(0, [self textLength])]; - } - - if ([attribute isEqualToString:NSAccessibilityAttributedStringForRangeParameterizedAttribute]) { - NSRange range; - if (!ToNSRange(parameter, &range)) { -#if DEBUG - NSLog(@"%@: range not set", attribute); -#endif - return @""; - } - - return [[[NSAttributedString alloc] initWithString:[self stringFromRange:&range]] autorelease]; - } - - if ([attribute isEqualToString:NSAccessibilityLineForIndexParameterizedAttribute]) { - // XXX: actually return the line # - return [NSNumber numberWithInt:0]; - } - - if ([attribute isEqualToString:NSAccessibilityBoundsForRangeParameterizedAttribute]) { - NSRange range; - if (!ToNSRange(parameter, &range)) { -#if DEBUG - NSLog(@"%@:no range", attribute); -#endif - return nil; - } - - int32_t start = range.location; - int32_t end = start + range.length; - DesktopIntRect bounds; - if (textAcc) { - bounds = - DesktopIntRect::FromUnknownRect(textAcc->TextBounds(start, end)); - } else if (proxy) { - bounds = - DesktopIntRect::FromUnknownRect(proxy->TextBounds(start, end)); - } - - return [NSValue valueWithRect:nsCocoaUtils::GeckoRectToCocoaRect(bounds)]; - } - -#if DEBUG - NSLog(@"unhandled attribute:%@ forParameter:%@", attribute, parameter); -#endif - - return nil; -} - -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) - return ![self isReadOnly]; - - if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute] || - [attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] || - [attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) - return YES; - - return [super accessibilityIsAttributeSettable:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { - [self setText:ToNSString(value)]; - - return; - } - - if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute]) { - NSString* stringValue = ToNSString(value); - if (!stringValue) - return; - - int32_t start = 0, end = 0; - nsString text; - if (textAcc) { - textAcc->SelectionBoundsAt(0, &start, &end); - textAcc->DeleteText(start, end - start); - nsCocoaUtils::GetStringForNSString(stringValue, text); - textAcc->InsertText(text, start); - } else if (proxy) { - nsString data; - proxy->SelectionBoundsAt(0, data, &start, &end); - proxy->DeleteText(start, end - start); - nsCocoaUtils::GetStringForNSString(stringValue, text); - proxy->InsertText(text, start); - } - } - - if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) { - NSRange range; - if (!ToNSRange(value, &range)) - return; - - if (textAcc) { - textAcc->SetSelectionBoundsAt(0, range.location, - range.location + range.length); - } else if (proxy) { - proxy->SetSelectionBoundsAt(0, range.location, - range.location + range.length); - } - return; - } - - if ([attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) { - NSRange range; - if (!ToNSRange(value, &range)) - return; - - if (textAcc) { - textAcc->ScrollSubstringTo(range.location, range.location + range.length, - nsIAccessibleScrollType::SCROLL_TYPE_TOP_EDGE); - } else if (proxy) { - proxy->ScrollSubstringTo(range.location, range.location + range.length, - nsIAccessibleScrollType::SCROLL_TYPE_TOP_EDGE); - } - return; - } - - [super accessibilitySetValue:value forAttribute:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (NSString*)subrole -{ - if(mRole == roles::PASSWORD_TEXT) - return NSAccessibilitySecureTextFieldSubrole; - - return nil; -} - -#pragma mark - - -- (BOOL)isReadOnly -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - if ([[self role] isEqualToString:NSAccessibilityStaticTextRole]) - return YES; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (textAcc) - return (accWrap->State() & states::READONLY) == 0; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return (proxy->State() & states::READONLY) == 0; - - return NO; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (NSNumber*)caretLineNumber -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - - int32_t lineNumber = -1; - if (textAcc) { - lineNumber = textAcc->CaretLineNumber() - 1; - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - lineNumber = proxy->CaretLineNumber() - 1; - } - - return (lineNumber >= 0) ? [NSNumber numberWithInt:lineNumber] : nil; -} - -- (void)setText:(NSString*)aNewString -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - - nsString text; - nsCocoaUtils::GetStringForNSString(aNewString, text); - if (textAcc) { - textAcc->ReplaceText(text); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - proxy->ReplaceText(text); - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (NSString*)text -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - // A password text field returns an empty value - if (mRole == roles::PASSWORD_TEXT) - return @""; - - nsAutoString text; - if (textAcc) { - textAcc->TextSubstring(0, nsIAccessibleText::TEXT_OFFSET_END_OF_TEXT, text); - } else if (proxy) { - proxy->TextSubstring(0, nsIAccessibleText::TEXT_OFFSET_END_OF_TEXT, text); - } - - return nsCocoaUtils::ToNSString(text); -} - -- (long)textLength -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return 0; - - return textAcc ? textAcc->CharacterCount() : proxy->CharacterCount(); - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(0); -} - -- (long)selectedTextLength -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return 0; - - int32_t start = 0, end = 0; - if (textAcc) { - textAcc->SelectionBoundsAt(0, &start, &end); - } else if (proxy) { - nsString data; - proxy->SelectionBoundsAt(0, data, &start, &end); - } - return (end - start); - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(0); -} - -- (NSString*)selectedText -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - int32_t start = 0, end = 0; - nsAutoString selText; - if (textAcc) { - textAcc->SelectionBoundsAt(0, &start, &end); - if (start != end) { - textAcc->TextSubstring(start, end, selText); - } - } else if (proxy) { - proxy->SelectionBoundsAt(0, selText, &start, &end); - } - - return nsCocoaUtils::ToNSString(selText); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)selectedTextRange -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - - int32_t start = 0; - int32_t end = 0; - int32_t count = 0; - if (textAcc) { - count = textAcc->SelectionCount(); - if (count) { - textAcc->SelectionBoundsAt(0, &start, &end); - return [NSValue valueWithRange:NSMakeRange(start, end - start)]; - } - - start = textAcc->CaretOffset(); - return [NSValue valueWithRange:NSMakeRange(start != -1 ? start : 0, 0)]; - } - - if (proxy) { - count = proxy->SelectionCount(); - if (count) { - nsString data; - proxy->SelectionBoundsAt(0, data, &start, &end); - return [NSValue valueWithRange:NSMakeRange(start, end - start)]; - } - - start = proxy->CaretOffset(); - return [NSValue valueWithRange:NSMakeRange(start != -1 ? start : 0, 0)]; - } - - return [NSValue valueWithRange:NSMakeRange(0, 0)]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)visibleCharacterRange -{ - // XXX this won't work with Textarea and such as we actually don't give - // the visible character range. - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return 0; - - return [NSValue valueWithRange: - NSMakeRange(0, textAcc ? - textAcc->CharacterCount() : proxy->CharacterCount())]; -} - -- (void)valueDidChange -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - NSAccessibilityPostNotification(GetObjectOrRepresentedView(self), - NSAccessibilityValueChangedNotification); - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)selectedTextDidChange -{ - NSAccessibilityPostNotification(GetObjectOrRepresentedView(self), - NSAccessibilitySelectedTextChangedNotification); -} - -- (NSString*)stringFromRange:(NSRange*)range -{ - NS_PRECONDITION(range, "no range"); - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - nsAutoString text; - if (textAcc) { - textAcc->TextSubstring(range->location, - range->location + range->length, text); - } else if (proxy) { - proxy->TextSubstring(range->location, - range->location + range->length, text); - } - - return nsCocoaUtils::ToNSString(text); -} - -@end - -@implementation mozTextLeafAccessible - -- (NSArray*)accessibilityAttributeNames -{ - static NSMutableArray* supportedAttributes = nil; - if (!supportedAttributes) { - supportedAttributes = [[super accessibilityAttributeNames] mutableCopy]; - [supportedAttributes removeObject:NSAccessibilityChildrenAttribute]; - } - - return supportedAttributes; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) - return @""; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) - return [self text]; - - return [super accessibilityAttributeValue:attribute]; -} - -- (NSString*)text -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - return nsCocoaUtils::ToNSString(accWrap->AsTextLeaf()->Text()); - } - - if (ProxyAccessible* proxy = [self getProxyAccessible]) { - nsString text; - proxy->Text(&text); - return nsCocoaUtils::ToNSString(text); - } - - return nil; -} - -- (long)textLength -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - return accWrap->AsTextLeaf()->Text().Length(); - } - - if (ProxyAccessible* proxy = [self getProxyAccessible]) { - nsString text; - proxy->Text(&text); - return text.Length(); - } - - return 0; -} - -@end diff --git a/accessible/moz.build b/accessible/moz.build index 53367e175..c22a085f0 100644 --- a/accessible/moz.build +++ b/accessible/moz.build @@ -9,8 +9,6 @@ if 'gtk' in toolkit: DIRS += ['atk'] elif toolkit == 'windows': DIRS += ['windows'] -elif toolkit == 'cocoa': - DIRS += ['mac'] else: DIRS += ['other'] diff --git a/accessible/xpcom/moz.build b/accessible/xpcom/moz.build index d43efd06d..5d1ad1688 100644 --- a/accessible/xpcom/moz.build +++ b/accessible/xpcom/moz.build @@ -42,10 +42,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': LOCAL_INCLUDES += [ '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/xul/moz.build b/accessible/xul/moz.build index 54182c097..b04c35dc4 100644 --- a/accessible/xul/moz.build +++ b/accessible/xul/moz.build @@ -37,10 +37,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/build/gyp.mozbuild b/build/gyp.mozbuild index cc5977510..08c9976ac 100644 --- a/build/gyp.mozbuild +++ b/build/gyp.mozbuild @@ -87,7 +87,6 @@ flavors = { 'WINNT': 'win', 'Android': 'android', 'Linux': 'linux', - 'Darwin': 'mac' if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa' else 'ios', 'SunOS': 'solaris', 'GNU/kFreeBSD': 'freebsd', 'DragonFly': 'dragonfly', diff --git a/db/sqlite3/src/moz.build b/db/sqlite3/src/moz.build index 1ffc326f8..327e77677 100644 --- a/db/sqlite3/src/moz.build +++ b/db/sqlite3/src/moz.build @@ -45,10 +45,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': DEFINES['SQLITE_WIN32_GETVERSIONEX'] = 0 DEFINES['SQLITE_ALLOW_URI_AUTHORITY'] = 1 -# -DSQLITE_ENABLE_LOCKING_STYLE=1 to help with AFP folders -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DEFINES['SQLITE_ENABLE_LOCKING_STYLE'] = 1 - # sqlite defaults this to on on __APPLE_ but it breaks on newer iOS SDKs if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': DEFINES['SQLITE_ENABLE_LOCKING_STYLE'] = 0 diff --git a/embedding/components/build/moz.build b/embedding/components/build/moz.build index 361fd8768..c66f0c79e 100644 --- a/embedding/components/build/moz.build +++ b/embedding/components/build/moz.build @@ -22,11 +22,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': LOCAL_INCLUDES += [ '../printingui/win', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DEFINES['PROXY_PRINTING'] = 1 - LOCAL_INCLUDES += [ - '../printingui/mac', - ] if CONFIG['MOZ_PDF_PRINTING']: DEFINES['PROXY_PRINTING'] = 1 diff --git a/embedding/components/printingui/mac/moz.build b/embedding/components/printingui/mac/moz.build deleted file mode 100644 index c2fe2f473..000000000 --- a/embedding/components/printingui/mac/moz.build +++ /dev/null @@ -1,15 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -UNIFIED_SOURCES += [ - 'nsPrintProgress.cpp', - 'nsPrintProgressParams.cpp', -] - -SOURCES += [ - 'nsPrintingPromptServiceX.mm', -] - -FINAL_LIBRARY = 'xul' diff --git a/embedding/components/printingui/mac/nsPrintProgress.cpp b/embedding/components/printingui/mac/nsPrintProgress.cpp deleted file mode 100644 index 0ae0a63d9..000000000 --- a/embedding/components/printingui/mac/nsPrintProgress.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsPrintProgress.h" - -#include "nsIBaseWindow.h" -#include "nsXPCOM.h" -#include "nsISupportsPrimitives.h" -#include "nsIComponentManager.h" -#include "nsPIDOMWindow.h" - -NS_IMPL_ADDREF(nsPrintProgress) -NS_IMPL_RELEASE(nsPrintProgress) - -NS_INTERFACE_MAP_BEGIN(nsPrintProgress) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIPrintStatusFeedback) - NS_INTERFACE_MAP_ENTRY(nsIPrintProgress) - NS_INTERFACE_MAP_ENTRY(nsIPrintStatusFeedback) - NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener) -NS_INTERFACE_MAP_END_THREADSAFE - - -nsPrintProgress::nsPrintProgress() -{ - m_closeProgress = false; - m_processCanceled = false; - m_pendingStateFlags = -1; - m_pendingStateValue = NS_OK; -} - -nsPrintProgress::~nsPrintProgress() -{ - (void)ReleaseListeners(); -} - -NS_IMETHODIMP nsPrintProgress::OpenProgressDialog(mozIDOMWindowProxy *parent, - const char *dialogURL, - nsISupports *parameters, - nsIObserver *openDialogObserver, - bool *notifyOnOpen) -{ - MOZ_ASSERT_UNREACHABLE("The nsPrintingPromptService::ShowProgress " - "implementation for OS X returns " - "NS_ERROR_NOT_IMPLEMENTED, so we should never get " - "here."); - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::CloseProgressDialog(bool forceClose) -{ - MOZ_ASSERT_UNREACHABLE("The nsPrintingPromptService::ShowProgress " - "implementation for OS X returns " - "NS_ERROR_NOT_IMPLEMENTED, so we should never get " - "here."); - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::GetPrompter(nsIPrompt **_retval) -{ - NS_ENSURE_ARG_POINTER(_retval); - *_retval = nullptr; - - if (! m_closeProgress && m_dialog) { - nsCOMPtr window = do_QueryInterface(m_dialog); - MOZ_ASSERT(window); - return window->GetPrompter(_retval); - } - - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP nsPrintProgress::GetProcessCanceledByUser(bool *aProcessCanceledByUser) -{ - NS_ENSURE_ARG_POINTER(aProcessCanceledByUser); - *aProcessCanceledByUser = m_processCanceled; - return NS_OK; -} -NS_IMETHODIMP nsPrintProgress::SetProcessCanceledByUser(bool aProcessCanceledByUser) -{ - m_processCanceled = aProcessCanceledByUser; - OnStateChange(nullptr, nullptr, nsIWebProgressListener::STATE_STOP, NS_OK); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::RegisterListener(nsIWebProgressListener * listener) -{ - if (!listener) //Nothing to do with a null listener! - return NS_OK; - - m_listenerList.AppendObject(listener); - if (m_closeProgress || m_processCanceled) - listener->OnStateChange(nullptr, nullptr, - nsIWebProgressListener::STATE_STOP, NS_OK); - else - { - listener->OnStatusChange(nullptr, nullptr, NS_OK, m_pendingStatus.get()); - if (m_pendingStateFlags != -1) - listener->OnStateChange(nullptr, nullptr, m_pendingStateFlags, m_pendingStateValue); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::UnregisterListener(nsIWebProgressListener *listener) -{ - if (listener) - m_listenerList.RemoveObject(listener); - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::DoneIniting() -{ - if (m_observer) { - m_observer->Observe(nullptr, nullptr, nullptr); - } - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aStateFlags, nsresult aStatus) -{ - m_pendingStateFlags = aStateFlags; - m_pendingStateValue = aStatus; - - uint32_t count = m_listenerList.Count(); - for (uint32_t i = count - 1; i < count; i --) - { - nsCOMPtr progressListener = m_listenerList.SafeObjectAt(i); - if (progressListener) - progressListener->OnStateChange(aWebProgress, aRequest, aStateFlags, aStatus); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, int32_t aCurSelfProgress, int32_t aMaxSelfProgress, int32_t aCurTotalProgress, int32_t aMaxTotalProgress) -{ - uint32_t count = m_listenerList.Count(); - for (uint32_t i = count - 1; i < count; i --) - { - nsCOMPtr progressListener = m_listenerList.SafeObjectAt(i); - if (progressListener) - progressListener->OnProgressChange(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location, uint32_t aFlags) -{ - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const char16_t *aMessage) -{ - if (aMessage && *aMessage) - m_pendingStatus = aMessage; - - uint32_t count = m_listenerList.Count(); - for (uint32_t i = count - 1; i < count; i --) - { - nsCOMPtr progressListener = m_listenerList.SafeObjectAt(i); - if (progressListener) - progressListener->OnStatusChange(aWebProgress, aRequest, aStatus, aMessage); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t state) -{ - return NS_OK; -} - -nsresult nsPrintProgress::ReleaseListeners() -{ - m_listenerList.Clear(); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::ShowStatusString(const char16_t *status) -{ - return OnStatusChange(nullptr, nullptr, NS_OK, status); -} - -NS_IMETHODIMP nsPrintProgress::StartMeteors() -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::StopMeteors() -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::ShowProgress(int32_t percent) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::SetDocShell(nsIDocShell *shell, - mozIDOMWindowProxy *window) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::CloseWindow() -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - diff --git a/embedding/components/printingui/mac/nsPrintProgress.h b/embedding/components/printingui/mac/nsPrintProgress.h deleted file mode 100644 index 938558c3e..000000000 --- a/embedding/components/printingui/mac/nsPrintProgress.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsPrintProgress_h -#define __nsPrintProgress_h - -#include "nsIPrintProgress.h" - -#include "nsCOMArray.h" -#include "nsCOMPtr.h" -#include "nsIPrintStatusFeedback.h" -#include "nsIObserver.h" -#include "nsString.h" - -class nsPrintProgress : public nsIPrintProgress, public nsIPrintStatusFeedback -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIPRINTPROGRESS - NS_DECL_NSIWEBPROGRESSLISTENER - NS_DECL_NSIPRINTSTATUSFEEDBACK - - nsPrintProgress(); - -protected: - virtual ~nsPrintProgress(); - -private: - nsresult ReleaseListeners(); - - bool m_closeProgress; - bool m_processCanceled; - nsString m_pendingStatus; - int32_t m_pendingStateFlags; - nsresult m_pendingStateValue; - // XXX This member is read-only. - nsCOMPtr m_dialog; - nsCOMArray m_listenerList; - nsCOMPtr m_observer; -}; - -#endif diff --git a/embedding/components/printingui/mac/nsPrintProgressParams.cpp b/embedding/components/printingui/mac/nsPrintProgressParams.cpp deleted file mode 100644 index eba86b298..000000000 --- a/embedding/components/printingui/mac/nsPrintProgressParams.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsPrintProgressParams.h" -#include "nsReadableUtils.h" - - -NS_IMPL_ISUPPORTS(nsPrintProgressParams, nsIPrintProgressParams) - -nsPrintProgressParams::nsPrintProgressParams() -{ -} - -nsPrintProgressParams::~nsPrintProgressParams() -{ -} - -NS_IMETHODIMP nsPrintProgressParams::GetDocTitle(char16_t * *aDocTitle) -{ - NS_ENSURE_ARG(aDocTitle); - - *aDocTitle = ToNewUnicode(mDocTitle); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgressParams::SetDocTitle(const char16_t * aDocTitle) -{ - mDocTitle = aDocTitle; - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgressParams::GetDocURL(char16_t * *aDocURL) -{ - NS_ENSURE_ARG(aDocURL); - - *aDocURL = ToNewUnicode(mDocURL); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgressParams::SetDocURL(const char16_t * aDocURL) -{ - mDocURL = aDocURL; - return NS_OK; -} - diff --git a/embedding/components/printingui/mac/nsPrintProgressParams.h b/embedding/components/printingui/mac/nsPrintProgressParams.h deleted file mode 100644 index 65c00d98f..000000000 --- a/embedding/components/printingui/mac/nsPrintProgressParams.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsPrintProgressParams_h -#define __nsPrintProgressParams_h - -#include "nsIPrintProgressParams.h" -#include "nsString.h" - -class nsPrintProgressParams : public nsIPrintProgressParams -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIPRINTPROGRESSPARAMS - - nsPrintProgressParams(); - -protected: - virtual ~nsPrintProgressParams(); - -private: - nsString mDocTitle; - nsString mDocURL; -}; - -#endif diff --git a/embedding/components/printingui/mac/nsPrintingPromptService.h b/embedding/components/printingui/mac/nsPrintingPromptService.h deleted file mode 100644 index 0334db223..000000000 --- a/embedding/components/printingui/mac/nsPrintingPromptService.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsPrintingPromptService_h -#define __nsPrintingPromptService_h - -// {E042570C-62DE-4bb6-A6E0-798E3C07B4DF} -#define NS_PRINTINGPROMPTSERVICE_CID \ - {0xe042570c, 0x62de, 0x4bb6, { 0xa6, 0xe0, 0x79, 0x8e, 0x3c, 0x7, 0xb4, 0xdf}} -#define NS_PRINTINGPROMPTSERVICE_CONTRACTID \ - "@mozilla.org/embedcomp/printingprompt-service;1" - -#include "nsCOMPtr.h" -#include "nsIPrintingPromptService.h" -#include "nsPIPromptService.h" -#include "nsIWindowWatcher.h" - -// Printing Progress Includes -#include "nsPrintProgress.h" -#include "nsIWebProgressListener.h" - -class nsPrintingPromptService: public nsIPrintingPromptService, - public nsIWebProgressListener -{ -public: - nsPrintingPromptService(); - - nsresult Init(); - - NS_DECL_NSIPRINTINGPROMPTSERVICE - NS_DECL_NSIWEBPROGRESSLISTENER - NS_DECL_ISUPPORTS - -protected: - virtual ~nsPrintingPromptService(); - -private: - nsCOMPtr mPrintProgress; -}; - -#endif diff --git a/embedding/components/printingui/mac/nsPrintingPromptServiceX.mm b/embedding/components/printingui/mac/nsPrintingPromptServiceX.mm deleted file mode 100644 index 3b956100b..000000000 --- a/embedding/components/printingui/mac/nsPrintingPromptServiceX.mm +++ /dev/null @@ -1,128 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsPrintingPromptService.h" - -#include "nsCOMPtr.h" -#include "nsServiceManagerUtils.h" -#include "nsObjCExceptions.h" - -#include "nsIPrintingPromptService.h" -#include "nsIFactory.h" -#include "nsIPrintDialogService.h" -#include "nsPIDOMWindow.h" - -//***************************************************************************** -// nsPrintingPromptService -//***************************************************************************** - -NS_IMPL_ISUPPORTS(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener) - -nsPrintingPromptService::nsPrintingPromptService() -{ -} - -nsPrintingPromptService::~nsPrintingPromptService() -{ -} - -nsresult nsPrintingPromptService::Init() -{ - return NS_OK; -} - -//***************************************************************************** -// nsPrintingPromptService::nsIPrintingPromptService -//***************************************************************************** - -NS_IMETHODIMP -nsPrintingPromptService::ShowPrintDialog(mozIDOMWindowProxy *parent, nsIWebBrowserPrint *webBrowserPrint, nsIPrintSettings *printSettings) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - nsCOMPtr dlgPrint(do_GetService( - NS_PRINTDIALOGSERVICE_CONTRACTID)); - if (dlgPrint) { - return dlgPrint->Show(nsPIDOMWindowOuter::From(parent), printSettings, - webBrowserPrint); - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsPrintingPromptService::ShowProgress(mozIDOMWindowProxy* parent, - nsIWebBrowserPrint* webBrowserPrint, // ok to be null - nsIPrintSettings* printSettings, // ok to be null - nsIObserver* openDialogObserver, // ok to be null - bool isForPrinting, - nsIWebProgressListener** webProgressListener, - nsIPrintProgressParams** printProgressParams, - bool* notifyOnOpen) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP -nsPrintingPromptService::ShowPageSetup(mozIDOMWindowProxy *parent, nsIPrintSettings *printSettings, nsIObserver *aObs) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - nsCOMPtr dlgPrint(do_GetService( - NS_PRINTDIALOGSERVICE_CONTRACTID)); - if (dlgPrint) { - return dlgPrint->ShowPageSetup(nsPIDOMWindowOuter::From(parent), printSettings); - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsPrintingPromptService::ShowPrinterProperties(mozIDOMWindowProxy *parent, const char16_t *printerName, nsIPrintSettings *printSettings) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - - -//***************************************************************************** -// nsPrintingPromptService::nsIWebProgressListener -//***************************************************************************** - -NS_IMETHODIMP -nsPrintingPromptService::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aStateFlags, nsresult aStatus) -{ - return NS_OK; -} - -/* void onProgressChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress); */ -NS_IMETHODIMP -nsPrintingPromptService::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, int32_t aCurSelfProgress, int32_t aMaxSelfProgress, int32_t aCurTotalProgress, int32_t aMaxTotalProgress) -{ - return NS_OK; -} - -/* void onLocationChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI location, in unsigned long aFlags); */ -NS_IMETHODIMP -nsPrintingPromptService::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location, uint32_t aFlags) -{ - return NS_OK; -} - -/* void onStatusChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage); */ -NS_IMETHODIMP -nsPrintingPromptService::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const char16_t *aMessage) -{ - return NS_OK; -} - -/* void onSecurityChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long state); */ -NS_IMETHODIMP -nsPrintingPromptService::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t state) -{ - return NS_OK; -} diff --git a/embedding/components/printingui/moz.build b/embedding/components/printingui/moz.build index c75471555..e0d631693 100644 --- a/embedding/components/printingui/moz.build +++ b/embedding/components/printingui/moz.build @@ -10,7 +10,5 @@ DIRS += ['ipc'] if CONFIG['NS_PRINTING']: if toolkit == 'windows': DIRS += ['win'] - elif toolkit == 'cocoa': - DIRS += ['mac'] elif CONFIG['MOZ_PDF_PRINTING']: DIRS += ['unixshared'] diff --git a/gfx/cairo/cairo/src/moz.build b/gfx/cairo/cairo/src/moz.build index c5f936ad6..6c81ce79a 100644 --- a/gfx/cairo/cairo/src/moz.build +++ b/gfx/cairo/cairo/src/moz.build @@ -16,7 +16,7 @@ EXPORTS.cairo += [ 'pixman-rename.h', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] not in ('cocoa', 'uikit'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] not in ('uikit'): EXPORTS.cairo += [ 'cairo-pdf.h', ] @@ -56,7 +56,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': ] else: DEFINES['CAIRO_OMIT_WIN32_PRINTING'] = True -elif CONFIG['MOZ_WIDGET_TOOLKIT'] in {'cocoa', 'uikit'}: +elif CONFIG['MOZ_WIDGET_TOOLKIT'] in {'uikit'}: EXPORTS.cairo += [ 'cairo-quartz-image.h', 'cairo-quartz.h', diff --git a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp b/gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp deleted file mode 100644 index 8834773e4..000000000 --- a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MacIOSurfaceTextureHostBasic.h" -#include "mozilla/gfx/MacIOSurface.h" -#include "MacIOSurfaceHelpers.h" - -namespace mozilla { -namespace layers { - -MacIOSurfaceTextureSourceBasic::MacIOSurfaceTextureSourceBasic( - BasicCompositor* aCompositor, - MacIOSurface* aSurface) - : mCompositor(aCompositor) - , mSurface(aSurface) -{ - MOZ_COUNT_CTOR(MacIOSurfaceTextureSourceBasic); -} - -MacIOSurfaceTextureSourceBasic::~MacIOSurfaceTextureSourceBasic() -{ - MOZ_COUNT_DTOR(MacIOSurfaceTextureSourceBasic); -} - -gfx::IntSize -MacIOSurfaceTextureSourceBasic::GetSize() const -{ - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -gfx::SurfaceFormat -MacIOSurfaceTextureSourceBasic::GetFormat() const -{ - // Set the format the same way as CreateSourceSurfaceFromMacIOSurface. - return mSurface->GetFormat() == gfx::SurfaceFormat::NV12 - ? gfx::SurfaceFormat::B8G8R8X8 : gfx::SurfaceFormat::B8G8R8A8; -} - -MacIOSurfaceTextureHostBasic::MacIOSurfaceTextureHostBasic( - TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor -) - : TextureHost(aFlags) -{ - mSurface = MacIOSurface::LookupSurface(aDescriptor.surfaceId(), - aDescriptor.scaleFactor(), - !aDescriptor.isOpaque()); -} - -gfx::SourceSurface* -MacIOSurfaceTextureSourceBasic::GetSurface(gfx::DrawTarget* aTarget) -{ - if (!mSourceSurface) { - mSourceSurface = CreateSourceSurfaceFromMacIOSurface(mSurface); - } - return mSourceSurface; -} - -void -MacIOSurfaceTextureSourceBasic::SetCompositor(Compositor* aCompositor) -{ - mCompositor = AssertBasicCompositor(aCompositor); -} - -bool -MacIOSurfaceTextureHostBasic::Lock() -{ - if (!mCompositor) { - return false; - } - - if (!mTextureSource) { - mTextureSource = new MacIOSurfaceTextureSourceBasic(mCompositor, mSurface); - } - return true; -} - -void -MacIOSurfaceTextureHostBasic::SetCompositor(Compositor* aCompositor) -{ - BasicCompositor* compositor = AssertBasicCompositor(aCompositor); - if (!compositor) { - mTextureSource = nullptr; - return; - } - mCompositor = compositor; - if (mTextureSource) { - mTextureSource->SetCompositor(compositor); - } -} - -gfx::SurfaceFormat -MacIOSurfaceTextureHostBasic::GetFormat() const { - return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8X8; -} - -gfx::IntSize -MacIOSurfaceTextureHostBasic::GetSize() const { - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.h b/gfx/layers/basic/MacIOSurfaceTextureHostBasic.h deleted file mode 100644 index 7949aecfc..000000000 --- a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_MACIOSURFACETEXTUREHOST_BASIC_H -#define MOZILLA_GFX_MACIOSURFACETEXTUREHOST_BASIC_H - -#include "mozilla/layers/BasicCompositor.h" -#include "mozilla/layers/TextureHostBasic.h" - -class MacIOSurface; - -namespace mozilla { -namespace layers { - -class BasicCompositor; - -/** - * A texture source meant for use with BasicCompositor. - * - * It does not own any GL texture, and attaches its shared handle to one of - * the compositor's temporary textures when binding. - */ -class MacIOSurfaceTextureSourceBasic - : public TextureSourceBasic, - public TextureSource -{ -public: - MacIOSurfaceTextureSourceBasic(BasicCompositor* aCompositor, - MacIOSurface* aSurface); - virtual ~MacIOSurfaceTextureSourceBasic(); - - virtual const char* Name() const override { return "MacIOSurfaceTextureSourceBasic"; } - - virtual TextureSourceBasic* AsSourceBasic() override { return this; } - - virtual gfx::IntSize GetSize() const override; - virtual gfx::SurfaceFormat GetFormat() const override; - virtual gfx::SourceSurface* GetSurface(gfx::DrawTarget* aTarget) override; - - virtual void DeallocateDeviceData() override { } - - virtual void SetCompositor(Compositor* aCompositor) override; - -protected: - RefPtr mCompositor; - RefPtr mSurface; - RefPtr mSourceSurface; -}; - -/** - * A TextureHost for shared MacIOSurface - * - * Most of the logic actually happens in MacIOSurfaceTextureSourceBasic. - */ -class MacIOSurfaceTextureHostBasic : public TextureHost -{ -public: - MacIOSurfaceTextureHostBasic(TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor); - - virtual void SetCompositor(Compositor* aCompositor) override; - - virtual Compositor* GetCompositor() override { return mCompositor; } - - virtual bool Lock() override; - - virtual gfx::SurfaceFormat GetFormat() const override; - - virtual bool BindTextureSource(CompositableTextureSourceRef& aTexture) override - { - aTexture = mTextureSource; - return !!aTexture; - } - - virtual already_AddRefed GetAsSurface() override - { - return nullptr; // XXX - implement this (for MOZ_DUMP_PAINTING) - } - - virtual gfx::IntSize GetSize() const override; - -#ifdef MOZ_LAYERS_HAVE_LOG - virtual const char* Name() override { return "MacIOSurfaceTextureHostBasic"; } -#endif - -protected: - RefPtr mCompositor; - RefPtr mTextureSource; - RefPtr mSurface; -}; - -} // namespace layers -} // namespace mozilla - -#endif // MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_BASIC_H diff --git a/gfx/layers/ipc/ShadowLayerUtilsMac.cpp b/gfx/layers/ipc/ShadowLayerUtilsMac.cpp deleted file mode 100644 index cc5199ea8..000000000 --- a/gfx/layers/ipc/ShadowLayerUtilsMac.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/gfx/Point.h" -#include "mozilla/layers/PLayerTransaction.h" -#include "mozilla/layers/ShadowLayers.h" -#include "mozilla/layers/LayerManagerComposite.h" -#include "mozilla/layers/CompositorTypes.h" - -#include "gfx2DGlue.h" -#include "gfxPlatform.h" - -using namespace mozilla::gl; - -namespace mozilla { -namespace layers { - -/*static*/ void -ShadowLayerForwarder::PlatformSyncBeforeUpdate() -{ -} - -/*static*/ void -LayerManagerComposite::PlatformSyncBeforeReplyUpdate() -{ -} - -/*static*/ bool -LayerManagerComposite::SupportsDirectTexturing() -{ - return false; -} - - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index f0fedf404..e8da1af4d 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -117,7 +117,6 @@ EXPORTS.mozilla.layers += [ 'AxisPhysicsModel.h', 'AxisPhysicsMSDModel.h', 'basic/BasicCompositor.h', - 'basic/MacIOSurfaceTextureHostBasic.h', 'basic/TextureHostBasic.h', 'BSPTree.h', 'BufferTexture.h', @@ -186,8 +185,6 @@ EXPORTS.mozilla.layers += [ 'LayersTypes.h', 'opengl/CompositingRenderTargetOGL.h', 'opengl/CompositorOGL.h', - 'opengl/MacIOSurfaceTextureClientOGL.h', - 'opengl/MacIOSurfaceTextureHostOGL.h', 'opengl/TextureClientOGL.h', 'opengl/TextureHostOGL.h', 'PersistentBufferProvider.h', @@ -213,21 +210,6 @@ if CONFIG['MOZ_X11']: 'opengl/X11TextureSourceOGL.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - EXPORTS.mozilla.layers += [ - 'opengl/GLManager.h', - ] - EXPORTS += [ - 'MacIOSurfaceHelpers.h', - 'MacIOSurfaceImage.h', - ] - SOURCES += [ - 'ipc/ShadowLayerUtilsMac.cpp', - 'MacIOSurfaceHelpers.cpp', - 'MacIOSurfaceImage.cpp', - 'opengl/GLManager.cpp', - ] - SOURCES += [ 'apz/public/IAPZCTreeManager.cpp', 'apz/src/APZCTreeManager.cpp', @@ -379,13 +361,6 @@ if CONFIG['_MSC_VER'] and CONFIG['CPU_ARCH'] == 'x86_64': ]: SOURCES[src].no_pgo = True -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'basic/MacIOSurfaceTextureHostBasic.cpp', - 'opengl/MacIOSurfaceTextureClientOGL.cpp', - 'opengl/MacIOSurfaceTextureHostOGL.cpp', - ] - IPDL_SOURCES = [ 'ipc/LayersMessages.ipdlh', 'ipc/LayersSurfaces.ipdlh', diff --git a/gfx/layers/opengl/GLManager.cpp b/gfx/layers/opengl/GLManager.cpp deleted file mode 100644 index e4c0b361f..000000000 --- a/gfx/layers/opengl/GLManager.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "GLManager.h" -#include "CompositorOGL.h" // for CompositorOGL -#include "GLContext.h" // for GLContext -#include "mozilla/Attributes.h" // for override -#include "mozilla/RefPtr.h" // for RefPtr -#include "mozilla/layers/Compositor.h" // for Compositor -#include "mozilla/layers/LayerManagerComposite.h" -#include "mozilla/layers/LayersTypes.h" -#include "mozilla/mozalloc.h" // for operator new, etc - -using namespace mozilla::gl; - -namespace mozilla { -namespace layers { - -class GLManagerCompositor : public GLManager -{ -public: - explicit GLManagerCompositor(CompositorOGL* aCompositor) - : mImpl(aCompositor) - {} - - virtual GLContext* gl() const override - { - return mImpl->gl(); - } - - virtual void ActivateProgram(ShaderProgramOGL *aProg) override - { - mImpl->ActivateProgram(aProg); - } - - virtual ShaderProgramOGL* GetProgram(GLenum aTarget, gfx::SurfaceFormat aFormat) override - { - ShaderConfigOGL config = ShaderConfigFromTargetAndFormat(aTarget, aFormat); - return mImpl->GetShaderProgramFor(config); - } - - virtual const gfx::Matrix4x4& GetProjMatrix() const override - { - return mImpl->GetProjMatrix(); - } - - virtual void BindAndDrawQuad(ShaderProgramOGL *aProg, - const gfx::Rect& aLayerRect, - const gfx::Rect& aTextureRect) override - { - mImpl->BindAndDrawQuad(aProg, aLayerRect, aTextureRect); - } - -private: - RefPtr mImpl; -}; - -/* static */ GLManager* -GLManager::CreateGLManager(LayerManagerComposite* aManager) -{ - if (aManager && aManager->GetCompositor()->GetBackendType() == LayersBackend::LAYERS_OPENGL) { - return new GLManagerCompositor(aManager->GetCompositor()->AsCompositorOGL()); - } - return nullptr; -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/opengl/GLManager.h b/gfx/layers/opengl/GLManager.h deleted file mode 100644 index 7c872758e..000000000 --- a/gfx/layers/opengl/GLManager.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_GLMANAGER_H -#define MOZILLA_GFX_GLMANAGER_H - -#include "mozilla/gfx/Types.h" // for SurfaceFormat -#include "OGLShaderProgram.h" - -namespace mozilla { -namespace gl { -class GLContext; -} // namespace gl - -namespace layers { - -class LayerManagerComposite; - -/** - * Minimal interface to allow widgets to draw using OpenGL. Abstracts - * CompositorOGL. Call CreateGLManager with a LayerManagerComposite - * backed by a CompositorOGL. - */ -class GLManager -{ -public: - static GLManager* CreateGLManager(LayerManagerComposite* aManager); - - virtual ~GLManager() {} - - virtual gl::GLContext* gl() const = 0; - virtual ShaderProgramOGL* GetProgram(GLenum aTarget, gfx::SurfaceFormat aFormat) = 0; - virtual void ActivateProgram(ShaderProgramOGL* aPrg) = 0; - virtual const gfx::Matrix4x4& GetProjMatrix() const = 0; - virtual void BindAndDrawQuad(ShaderProgramOGL *aProg, const gfx::Rect& aLayerRect, - const gfx::Rect& aTextureRect) = 0; -}; - -} // namespace layers -} // namespace mozilla - -#endif diff --git a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp deleted file mode 100644 index dd522e650..000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MacIOSurfaceTextureClientOGL.h" -#include "mozilla/gfx/MacIOSurface.h" -#include "MacIOSurfaceHelpers.h" -#include "gfxPlatform.h" - -namespace mozilla { -namespace layers { - -using namespace gfx; - -MacIOSurfaceTextureData::MacIOSurfaceTextureData(MacIOSurface* aSurface, - BackendType aBackend) - : mSurface(aSurface) - , mBackend(aBackend) -{ - MOZ_ASSERT(mSurface); -} - -MacIOSurfaceTextureData::~MacIOSurfaceTextureData() -{} - -// static -MacIOSurfaceTextureData* -MacIOSurfaceTextureData::Create(MacIOSurface* aSurface, BackendType aBackend) -{ - MOZ_ASSERT(aSurface); - if (!aSurface) { - return nullptr; - } - return new MacIOSurfaceTextureData(aSurface, aBackend); -} - -MacIOSurfaceTextureData* -MacIOSurfaceTextureData::Create(const IntSize& aSize, - SurfaceFormat aFormat, - BackendType aBackend) -{ - if (aFormat != SurfaceFormat::B8G8R8A8 && - aFormat != SurfaceFormat::B8G8R8X8) { - return nullptr; - } - - RefPtr surf = MacIOSurface::CreateIOSurface(aSize.width, aSize.height, - 1.0, - aFormat == SurfaceFormat::B8G8R8A8); - if (!surf) { - return nullptr; - } - - return Create(surf, aBackend); -} - -bool -MacIOSurfaceTextureData::Serialize(SurfaceDescriptor& aOutDescriptor) -{ - aOutDescriptor = SurfaceDescriptorMacIOSurface(mSurface->GetIOSurfaceID(), - mSurface->GetContentsScaleFactor(), - !mSurface->HasAlpha()); - return true; -} - -void -MacIOSurfaceTextureData::FillInfo(TextureData::Info& aInfo) const -{ - aInfo.size = gfx::IntSize(mSurface->GetDevicePixelWidth(), mSurface->GetDevicePixelHeight()); - aInfo.format = mSurface->HasAlpha() ? SurfaceFormat::B8G8R8A8 : SurfaceFormat::B8G8R8X8; - aInfo.hasIntermediateBuffer = false; - aInfo.hasSynchronization = false; - aInfo.supportsMoz2D = true; - aInfo.canExposeMappedData = false; -} - -bool -MacIOSurfaceTextureData::Lock(OpenMode) -{ - mSurface->Lock(false); - return true; -} - -void -MacIOSurfaceTextureData::Unlock() -{ - mSurface->Unlock(false); -} - -already_AddRefed -MacIOSurfaceTextureData::GetAsSurface() -{ - RefPtr surf = CreateSourceSurfaceFromMacIOSurface(mSurface); - return surf->GetDataSurface(); -} - -already_AddRefed -MacIOSurfaceTextureData::BorrowDrawTarget() -{ - MOZ_ASSERT(mBackend != BackendType::NONE); - if (mBackend == BackendType::NONE) { - // shouldn't happen, but degrade gracefully - return nullptr; - } - return Factory::CreateDrawTargetForData( - mBackend, - (unsigned char*)mSurface->GetBaseAddress(), - IntSize(mSurface->GetWidth(), mSurface->GetHeight()), - mSurface->GetBytesPerRow(), - mSurface->HasAlpha() ? SurfaceFormat::B8G8R8A8 : SurfaceFormat::B8G8R8X8, - true); -} - -void -MacIOSurfaceTextureData::Deallocate(LayersIPCChannel*) -{ - mSurface = nullptr; -} - -void -MacIOSurfaceTextureData::Forget(LayersIPCChannel*) -{ - mSurface = nullptr; -} - -bool -MacIOSurfaceTextureData::UpdateFromSurface(gfx::SourceSurface* aSurface) -{ - RefPtr dt = BorrowDrawTarget(); - if (!dt) { - return false; - } - - dt->CopySurface(aSurface, IntRect(IntPoint(), aSurface->GetSize()), IntPoint()); - return true; -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h deleted file mode 100644 index 21e445953..000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H -#define MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H - -#include "mozilla/layers/TextureClientOGL.h" - -class MacIOSurface; - -namespace mozilla { -namespace layers { - -class MacIOSurfaceTextureData : public TextureData -{ -public: - static MacIOSurfaceTextureData* Create(MacIOSurface* aSurface, - gfx::BackendType aBackend); - - static MacIOSurfaceTextureData* - Create(const gfx::IntSize& aSize, gfx::SurfaceFormat aFormat, - gfx::BackendType aBackend); - - ~MacIOSurfaceTextureData(); - - virtual void FillInfo(TextureData::Info& aInfo) const override; - - virtual bool Lock(OpenMode) override; - - virtual void Unlock() override; - - virtual already_AddRefed BorrowDrawTarget() override; - - virtual bool Serialize(SurfaceDescriptor& aOutDescriptor) override; - - virtual void Deallocate(LayersIPCChannel*) override; - - virtual void Forget(LayersIPCChannel*) override; - - virtual bool UpdateFromSurface(gfx::SourceSurface* aSurface) override; - - // For debugging purposes only. - already_AddRefed GetAsSurface(); - -protected: - MacIOSurfaceTextureData(MacIOSurface* aSurface, - gfx::BackendType aBackend); - - RefPtr mSurface; - gfx::BackendType mBackend; -}; - -} // namespace layers -} // namespace mozilla - -#endif // MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp deleted file mode 100644 index 9736618f7..000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MacIOSurfaceTextureHostOGL.h" -#include "mozilla/gfx/MacIOSurface.h" -#include "GLContextCGL.h" - -namespace mozilla { -namespace layers { - -MacIOSurfaceTextureHostOGL::MacIOSurfaceTextureHostOGL(TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor) - : TextureHost(aFlags) -{ - MOZ_COUNT_CTOR(MacIOSurfaceTextureHostOGL); - mSurface = MacIOSurface::LookupSurface(aDescriptor.surfaceId(), - aDescriptor.scaleFactor(), - !aDescriptor.isOpaque()); -} - -MacIOSurfaceTextureHostOGL::~MacIOSurfaceTextureHostOGL() -{ - MOZ_COUNT_DTOR(MacIOSurfaceTextureHostOGL); -} - -GLTextureSource* -MacIOSurfaceTextureHostOGL::CreateTextureSourceForPlane(size_t aPlane) -{ - MOZ_ASSERT(mSurface); - - GLuint textureHandle; - gl::GLContext* gl = mCompositor->gl(); - gl->fGenTextures(1, &textureHandle); - gl->fBindTexture(LOCAL_GL_TEXTURE_RECTANGLE_ARB, textureHandle); - gl->fTexParameteri(LOCAL_GL_TEXTURE_RECTANGLE_ARB, LOCAL_GL_TEXTURE_WRAP_T, LOCAL_GL_CLAMP_TO_EDGE); - gl->fTexParameteri(LOCAL_GL_TEXTURE_RECTANGLE_ARB, LOCAL_GL_TEXTURE_WRAP_S, LOCAL_GL_CLAMP_TO_EDGE); - - mSurface->CGLTexImageIOSurface2D(gl::GLContextCGL::Cast(gl)->GetCGLContext(), aPlane); - - return new GLTextureSource(mCompositor, textureHandle, LOCAL_GL_TEXTURE_RECTANGLE_ARB, - gfx::IntSize(mSurface->GetDevicePixelWidth(aPlane), - mSurface->GetDevicePixelHeight(aPlane)), - // XXX: This isn't really correct (but isn't used), we should be using the - // format of the individual plane, not of the whole buffer. - mSurface->GetFormat()); -} - -bool -MacIOSurfaceTextureHostOGL::Lock() -{ - if (!gl() || !gl()->MakeCurrent() || !mSurface) { - return false; - } - - if (!mTextureSource) { - mTextureSource = CreateTextureSourceForPlane(0); - - RefPtr prev = mTextureSource; - for (size_t i = 1; i < mSurface->GetPlaneCount(); i++) { - RefPtr next = CreateTextureSourceForPlane(i); - prev->SetNextSibling(next); - prev = next; - } - } - return true; -} - -void -MacIOSurfaceTextureHostOGL::SetCompositor(Compositor* aCompositor) -{ - CompositorOGL* glCompositor = AssertGLCompositor(aCompositor); - if (!glCompositor) { - mTextureSource = nullptr; - mCompositor = nullptr; - return; - } - - if (mCompositor != glCompositor) { - // Cannot share GL texture identifiers across compositors. - mTextureSource = nullptr; - } - mCompositor = glCompositor; -} - -gfx::SurfaceFormat -MacIOSurfaceTextureHostOGL::GetFormat() const { - if (!mSurface) { - return gfx::SurfaceFormat::UNKNOWN; - } - return mSurface->GetFormat(); -} - -gfx::SurfaceFormat -MacIOSurfaceTextureHostOGL::GetReadFormat() const { - if (!mSurface) { - return gfx::SurfaceFormat::UNKNOWN; - } - return mSurface->GetReadFormat(); -} - -gfx::IntSize -MacIOSurfaceTextureHostOGL::GetSize() const { - if (!mSurface) { - return gfx::IntSize(); - } - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -gl::GLContext* -MacIOSurfaceTextureHostOGL::gl() const -{ - return mCompositor ? mCompositor->gl() : nullptr; -} - -MacIOSurfaceTextureSourceOGL::MacIOSurfaceTextureSourceOGL( - CompositorOGL* aCompositor, - MacIOSurface* aSurface) - : mCompositor(aCompositor) - , mSurface(aSurface) -{ - MOZ_ASSERT(aCompositor); - MOZ_COUNT_CTOR(MacIOSurfaceTextureSourceOGL); -} - -MacIOSurfaceTextureSourceOGL::~MacIOSurfaceTextureSourceOGL() -{ - MOZ_COUNT_DTOR(MacIOSurfaceTextureSourceOGL); -} - -gfx::IntSize -MacIOSurfaceTextureSourceOGL::GetSize() const -{ - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -gfx::SurfaceFormat -MacIOSurfaceTextureSourceOGL::GetFormat() const -{ - return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 - : gfx::SurfaceFormat::R8G8B8X8; -} - -void -MacIOSurfaceTextureSourceOGL::BindTexture(GLenum aTextureUnit, - gfx::SamplingFilter aSamplingFilter) -{ - gl::GLContext* gl = this->gl(); - if (!gl || !gl->MakeCurrent()) { - NS_WARNING("Trying to bind a texture without a working GLContext"); - return; - } - GLuint tex = mCompositor->GetTemporaryTexture(GetTextureTarget(), aTextureUnit); - - gl->fActiveTexture(aTextureUnit); - gl->fBindTexture(LOCAL_GL_TEXTURE_RECTANGLE_ARB, tex); - mSurface->CGLTexImageIOSurface2D(gl::GLContextCGL::Cast(gl)->GetCGLContext()); - ApplySamplingFilterToBoundTexture(gl, aSamplingFilter, LOCAL_GL_TEXTURE_RECTANGLE_ARB); -} - -void -MacIOSurfaceTextureSourceOGL::SetCompositor(Compositor* aCompositor) -{ - mCompositor = AssertGLCompositor(aCompositor); - if (mCompositor && mNextSibling) { - mNextSibling->SetCompositor(aCompositor); - } -} - -gl::GLContext* -MacIOSurfaceTextureSourceOGL::gl() const -{ - return mCompositor ? mCompositor->gl() : nullptr; -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h deleted file mode 100644 index 55e2f5019..000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H -#define MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H - -#include "mozilla/layers/CompositorOGL.h" -#include "mozilla/layers/TextureHostOGL.h" - -class MacIOSurface; - -namespace mozilla { -namespace layers { - -/** - * A texture source meant for use with MacIOSurfaceTextureHostOGL. - * - * It does not own any GL texture, and attaches its shared handle to one of - * the compositor's temporary textures when binding. - */ -class MacIOSurfaceTextureSourceOGL : public TextureSource - , public TextureSourceOGL -{ -public: - MacIOSurfaceTextureSourceOGL(CompositorOGL* aCompositor, - MacIOSurface* aSurface); - virtual ~MacIOSurfaceTextureSourceOGL(); - - virtual const char* Name() const override { return "MacIOSurfaceTextureSourceOGL"; } - - virtual TextureSourceOGL* AsSourceOGL() override { return this; } - - virtual void BindTexture(GLenum activetex, - gfx::SamplingFilter aSamplingFilter) override; - - virtual bool IsValid() const override { return !!gl(); } - - virtual gfx::IntSize GetSize() const override; - - virtual gfx::SurfaceFormat GetFormat() const override; - - virtual GLenum GetTextureTarget() const override { return LOCAL_GL_TEXTURE_RECTANGLE_ARB; } - - virtual GLenum GetWrapMode() const override { return LOCAL_GL_CLAMP_TO_EDGE; } - - // MacIOSurfaceTextureSourceOGL doesn't own any gl texture - virtual void DeallocateDeviceData() override {} - - virtual void SetCompositor(Compositor* aCompositor) override; - - gl::GLContext* gl() const; - -protected: - RefPtr mCompositor; - RefPtr mSurface; -}; - -/** - * A TextureHost for shared MacIOSurface - * - * Most of the logic actually happens in MacIOSurfaceTextureSourceOGL. - */ -class MacIOSurfaceTextureHostOGL : public TextureHost -{ -public: - MacIOSurfaceTextureHostOGL(TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor); - virtual ~MacIOSurfaceTextureHostOGL(); - - // MacIOSurfaceTextureSourceOGL doesn't own any GL texture - virtual void DeallocateDeviceData() override {} - - virtual void SetCompositor(Compositor* aCompositor) override; - - virtual Compositor* GetCompositor() override { return mCompositor; } - - virtual bool Lock() override; - - virtual gfx::SurfaceFormat GetFormat() const override; - virtual gfx::SurfaceFormat GetReadFormat() const override; - - virtual bool BindTextureSource(CompositableTextureSourceRef& aTexture) override - { - aTexture = mTextureSource; - return !!aTexture; - } - - virtual already_AddRefed GetAsSurface() override - { - return nullptr; // XXX - implement this (for MOZ_DUMP_PAINTING) - } - - gl::GLContext* gl() const; - - virtual gfx::IntSize GetSize() const override; - -#ifdef MOZ_LAYERS_HAVE_LOG - virtual const char* Name() override { return "MacIOSurfaceTextureHostOGL"; } -#endif - -protected: - GLTextureSource* CreateTextureSourceForPlane(size_t aPlane); - - RefPtr mCompositor; - RefPtr mTextureSource; - RefPtr mSurface; -}; - -} // namespace layers -} // namespace mozilla - -#endif // MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py index de0a5c52e..86fc554a1 100755 --- a/gfx/skia/generate_mozbuild.py +++ b/gfx/skia/generate_mozbuild.py @@ -69,7 +69,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): if CONFIG['MOZ_WIDGET_TOOLKIT'] in { 'android', - 'cocoa', 'gtk2', 'gtk3', 'uikit', @@ -459,7 +458,7 @@ def write_mozbuild(sources): f.write("if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'):\n") write_sources(f, sources['android'], 4) - f.write("if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'cocoa', 'uikit'}:\n") + f.write("if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'uikit'}:\n") write_sources(f, sources['mac'], 4) f.write("if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:\n") diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build index c218f6477..d2ab9566f 100644 --- a/gfx/skia/moz.build +++ b/gfx/skia/moz.build @@ -528,7 +528,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): 'skia/src/ports/SkFontHost_cairo.cpp', 'skia/src/ports/SkFontHost_FreeType_common.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'cocoa', 'uikit'}: +if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'uikit'}: SOURCES += [ 'skia/src/ports/SkDebug_stdio.cpp', 'skia/src/ports/SkOSFile_posix.cpp', @@ -679,7 +679,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): if CONFIG['MOZ_WIDGET_TOOLKIT'] in { 'android', - 'cocoa', 'gtk2', 'gtk3', 'uikit', diff --git a/image/decoders/icon/mac/moz.build b/image/decoders/icon/mac/moz.build deleted file mode 100644 index f36d6ca53..000000000 --- a/image/decoders/icon/mac/moz.build +++ /dev/null @@ -1,10 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -SOURCES += [ - 'nsIconChannelCocoa.mm', -] - -FINAL_LIBRARY = 'xul' diff --git a/image/decoders/icon/mac/nsIconChannel.h b/image/decoders/icon/mac/nsIconChannel.h deleted file mode 100644 index 9fef17119..000000000 --- a/image/decoders/icon/mac/nsIconChannel.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_image_encoders_icon_mac_nsIconChannel_h -#define mozilla_image_encoders_icon_mac_nsIconChannel_h - -#include "mozilla/Attributes.h" - -#include "nsCOMPtr.h" -#include "nsXPIDLString.h" -#include "nsIChannel.h" -#include "nsILoadGroup.h" -#include "nsILoadInfo.h" -#include "nsIInterfaceRequestor.h" -#include "nsIInterfaceRequestorUtils.h" -#include "nsIInputStreamPump.h" -#include "nsIStreamListener.h" -#include "nsIURI.h" - -class nsIFile; - -class nsIconChannel final : public nsIChannel, public nsIStreamListener -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIREQUEST - NS_DECL_NSICHANNEL - NS_DECL_NSIREQUESTOBSERVER - NS_DECL_NSISTREAMLISTENER - - nsIconChannel(); - - nsresult Init(nsIURI* uri); - -protected: - virtual ~nsIconChannel(); - - nsCOMPtr mUrl; - nsCOMPtr mOriginalURI; - nsCOMPtr mLoadGroup; - nsCOMPtr mCallbacks; - nsCOMPtr mOwner; - nsCOMPtr mLoadInfo; - - nsCOMPtr mPump; - nsCOMPtr mListener; - - nsresult MakeInputStream(nsIInputStream** _retval, bool nonBlocking); - - nsresult ExtractIconInfoFromUrl(nsIFile** aLocalFile, - uint32_t* aDesiredImageSize, - nsACString& aContentType, - nsACString& aFileExtension); -}; - -#endif // mozilla_image_encoders_icon_mac_nsIconChannel_h diff --git a/image/decoders/icon/mac/nsIconChannelCocoa.mm b/image/decoders/icon/mac/nsIconChannelCocoa.mm deleted file mode 100644 index 9c2686cdd..000000000 --- a/image/decoders/icon/mac/nsIconChannelCocoa.mm +++ /dev/null @@ -1,565 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsContentUtils.h" -#include "nsIconChannel.h" -#include "mozilla/EndianUtils.h" -#include "nsIIconURI.h" -#include "nsIServiceManager.h" -#include "nsIInterfaceRequestor.h" -#include "nsIInterfaceRequestorUtils.h" -#include "nsXPIDLString.h" -#include "nsMimeTypes.h" -#include "nsMemory.h" -#include "nsIStringStream.h" -#include "nsIURL.h" -#include "nsNetCID.h" -#include "nsIPipe.h" -#include "nsIOutputStream.h" -#include "nsIMIMEService.h" -#include "nsCExternalHandlerService.h" -#include "nsILocalFileMac.h" -#include "nsIFileURL.h" -#include "nsTArray.h" -#include "nsObjCExceptions.h" -#include "nsProxyRelease.h" -#include "nsContentSecurityManager.h" - -#include - -// nsIconChannel methods -nsIconChannel::nsIconChannel() -{ -} - -nsIconChannel::~nsIconChannel() -{ - if (mLoadInfo) { - NS_ReleaseOnMainThread(mLoadInfo.forget()); - } -} - -NS_IMPL_ISUPPORTS(nsIconChannel, - nsIChannel, - nsIRequest, - nsIRequestObserver, - nsIStreamListener) - -nsresult -nsIconChannel::Init(nsIURI* uri) -{ - NS_ASSERTION(uri, "no uri"); - mUrl = uri; - mOriginalURI = uri; - nsresult rv; - mPump = do_CreateInstance(NS_INPUTSTREAMPUMP_CONTRACTID, &rv); - return rv; -} - -//////////////////////////////////////////////////////////////////////////////// -// nsIRequest methods: - -NS_IMETHODIMP -nsIconChannel::GetName(nsACString& result) -{ - return mUrl->GetSpec(result); -} - -NS_IMETHODIMP -nsIconChannel::IsPending(bool* result) -{ - return mPump->IsPending(result); -} - -NS_IMETHODIMP -nsIconChannel::GetStatus(nsresult* status) -{ - return mPump->GetStatus(status); -} - -NS_IMETHODIMP -nsIconChannel::Cancel(nsresult status) -{ - return mPump->Cancel(status); -} - -NS_IMETHODIMP -nsIconChannel::Suspend(void) -{ - return mPump->Suspend(); -} - -NS_IMETHODIMP -nsIconChannel::Resume(void) -{ - return mPump->Resume(); -} - -// nsIRequestObserver methods -NS_IMETHODIMP -nsIconChannel::OnStartRequest(nsIRequest* aRequest, - nsISupports* aContext) -{ - if (mListener) { - return mListener->OnStartRequest(this, aContext); - } - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::OnStopRequest(nsIRequest* aRequest, - nsISupports* aContext, - nsresult aStatus) -{ - if (mListener) { - mListener->OnStopRequest(this, aContext, aStatus); - mListener = nullptr; - } - - // Remove from load group - if (mLoadGroup) { - mLoadGroup->RemoveRequest(this, nullptr, aStatus); - } - - return NS_OK; -} - -// nsIStreamListener methods -NS_IMETHODIMP -nsIconChannel::OnDataAvailable(nsIRequest* aRequest, - nsISupports* aContext, - nsIInputStream* aStream, - uint64_t aOffset, - uint32_t aCount) -{ - if (mListener) { - return mListener->OnDataAvailable(this, aContext, aStream, aOffset, aCount); - } - return NS_OK; -} - -//////////////////////////////////////////////////////////////////////////////// -// nsIChannel methods: - -NS_IMETHODIMP -nsIconChannel::GetOriginalURI(nsIURI** aURI) -{ - *aURI = mOriginalURI; - NS_ADDREF(*aURI); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetOriginalURI(nsIURI* aURI) -{ - NS_ENSURE_ARG_POINTER(aURI); - mOriginalURI = aURI; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetURI(nsIURI** aURI) -{ - *aURI = mUrl; - NS_IF_ADDREF(*aURI); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::Open(nsIInputStream** _retval) -{ - return MakeInputStream(_retval, false); -} - -NS_IMETHODIMP -nsIconChannel::Open2(nsIInputStream** aStream) -{ - nsCOMPtr listener; - nsresult rv = nsContentSecurityManager::doContentSecurityCheck(this, listener); - NS_ENSURE_SUCCESS(rv, rv); - return Open(aStream); -} - -nsresult -nsIconChannel::ExtractIconInfoFromUrl(nsIFile** aLocalFile, - uint32_t* aDesiredImageSize, - nsACString& aContentType, - nsACString& aFileExtension) -{ - nsresult rv = NS_OK; - nsCOMPtr iconURI (do_QueryInterface(mUrl, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - iconURI->GetImageSize(aDesiredImageSize); - iconURI->GetContentType(aContentType); - iconURI->GetFileExtension(aFileExtension); - - nsCOMPtr url; - rv = iconURI->GetIconURL(getter_AddRefs(url)); - if (NS_FAILED(rv) || !url) return NS_OK; - - nsCOMPtr fileURL = do_QueryInterface(url, &rv); - if (NS_FAILED(rv) || !fileURL) return NS_OK; - - nsCOMPtr file; - rv = fileURL->GetFile(getter_AddRefs(file)); - if (NS_FAILED(rv) || !file) return NS_OK; - - nsCOMPtr localFileMac (do_QueryInterface(file, &rv)); - if (NS_FAILED(rv) || !localFileMac) return NS_OK; - - *aLocalFile = file; - NS_IF_ADDREF(*aLocalFile); - - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::AsyncOpen(nsIStreamListener* aListener, - nsISupports* ctxt) -{ - MOZ_ASSERT(!mLoadInfo || - mLoadInfo->GetSecurityMode() == 0 || - mLoadInfo->GetInitialSecurityCheckDone() || - (mLoadInfo->GetSecurityMode() == nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL && - nsContentUtils::IsSystemPrincipal(mLoadInfo->LoadingPrincipal())), - "security flags in loadInfo but asyncOpen2() not called"); - - nsCOMPtr inStream; - nsresult rv = MakeInputStream(getter_AddRefs(inStream), true); - NS_ENSURE_SUCCESS(rv, rv); - - // Init our stream pump - rv = mPump->Init(inStream, int64_t(-1), int64_t(-1), 0, 0, false); - NS_ENSURE_SUCCESS(rv, rv); - - rv = mPump->AsyncRead(this, ctxt); - if (NS_SUCCEEDED(rv)) { - // Store our real listener - mListener = aListener; - // Add ourself to the load group, if available - if (mLoadGroup) { - mLoadGroup->AddRequest(this, nullptr); - } - } - - return rv; -} - -NS_IMETHODIMP -nsIconChannel::AsyncOpen2(nsIStreamListener* aListener) -{ - nsCOMPtr listener = aListener; - nsresult rv = nsContentSecurityManager::doContentSecurityCheck(this, listener); - NS_ENSURE_SUCCESS(rv, rv); - return AsyncOpen(listener, nullptr); -} - -nsresult -nsIconChannel::MakeInputStream(nsIInputStream** _retval, - bool aNonBlocking) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - nsXPIDLCString contentType; - nsAutoCString fileExt; - nsCOMPtr fileloc; // file we want an icon for - uint32_t desiredImageSize; - nsresult rv = ExtractIconInfoFromUrl(getter_AddRefs(fileloc), - &desiredImageSize, contentType, fileExt); - NS_ENSURE_SUCCESS(rv, rv); - - bool fileExists = false; - if (fileloc) { - // ensure that we DO NOT resolve aliases, very important for file views - fileloc->SetFollowLinks(false); - fileloc->Exists(&fileExists); - } - - NSImage* iconImage = nil; - - // first try to get the icon from the file if it exists - if (fileExists) { - nsCOMPtr localFileMac(do_QueryInterface(fileloc, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - CFURLRef macURL; - if (NS_SUCCEEDED(localFileMac->GetCFURL(&macURL))) { - iconImage = [[NSWorkspace sharedWorkspace] - iconForFile:[(NSURL*)macURL path]]; - ::CFRelease(macURL); - } - } - - // if we don't have an icon yet try to get one by extension - if (!iconImage && !fileExt.IsEmpty()) { - NSString* fileExtension = [NSString stringWithUTF8String:fileExt.get()]; - iconImage = [[NSWorkspace sharedWorkspace] iconForFileType:fileExtension]; - } - - // If we still don't have an icon, get the generic document icon. - if (!iconImage) { - iconImage = [[NSWorkspace sharedWorkspace] - iconForFileType:NSFileTypeUnknown]; - } - - if (!iconImage) { - return NS_ERROR_FAILURE; - } - - // we have an icon now, size it - NSRect desiredSizeRect = NSMakeRect(0, 0, desiredImageSize, desiredImageSize); - [iconImage setSize:desiredSizeRect.size]; - - [iconImage lockFocus]; - NSBitmapImageRep* bitmapRep = [[[NSBitmapImageRep alloc] - initWithFocusedViewRect:desiredSizeRect] - autorelease]; - [iconImage unlockFocus]; - - // we expect the following things to be true about our bitmapRep - NS_ENSURE_TRUE(![bitmapRep isPlanar] && - // Not necessarily: on a HiDPI-capable system, we'll get - // a 2x bitmap - // (unsigned int)[bitmapRep bytesPerPlane] == - // desiredImageSize * desiredImageSize * 4 && - [bitmapRep bitsPerPixel] == 32 && - [bitmapRep samplesPerPixel] == 4 && - [bitmapRep hasAlpha] == YES, - NS_ERROR_UNEXPECTED); - - // check what size we actually got, and ensure it isn't too big to return - uint32_t actualImageSize = [bitmapRep bytesPerRow] / 4; - NS_ENSURE_TRUE(actualImageSize < 256, NS_ERROR_UNEXPECTED); - - // now we can validate the amount of data - NS_ENSURE_TRUE((unsigned int)[bitmapRep bytesPerPlane] == - actualImageSize * actualImageSize * 4, - NS_ERROR_UNEXPECTED); - - // rgba, pre-multiplied data - uint8_t* bitmapRepData = (uint8_t*)[bitmapRep bitmapData]; - - // create our buffer - int32_t bufferCapacity = 2 + [bitmapRep bytesPerPlane]; - AutoTArray iconBuffer; // initial size is for - // 16x16 - iconBuffer.SetLength(bufferCapacity); - - uint8_t* iconBufferPtr = iconBuffer.Elements(); - - // write header data into buffer - *iconBufferPtr++ = actualImageSize; - *iconBufferPtr++ = actualImageSize; - - uint32_t dataCount = [bitmapRep bytesPerPlane]; - uint32_t index = 0; - while (index < dataCount) { - // get data from the bitmap - uint8_t r = bitmapRepData[index++]; - uint8_t g = bitmapRepData[index++]; - uint8_t b = bitmapRepData[index++]; - uint8_t a = bitmapRepData[index++]; - - // write data out to our buffer - // non-cairo uses native image format, but the A channel is ignored. - // cairo uses ARGB (highest to lowest bits) -#if MOZ_LITTLE_ENDIAN - *iconBufferPtr++ = b; - *iconBufferPtr++ = g; - *iconBufferPtr++ = r; - *iconBufferPtr++ = a; -#else - *iconBufferPtr++ = a; - *iconBufferPtr++ = r; - *iconBufferPtr++ = g; - *iconBufferPtr++ = b; -#endif - } - - NS_ASSERTION(iconBufferPtr == iconBuffer.Elements() + bufferCapacity, - "buffer size miscalculation"); - - // Now, create a pipe and stuff our data into it - nsCOMPtr inStream; - nsCOMPtr outStream; - rv = NS_NewPipe(getter_AddRefs(inStream), getter_AddRefs(outStream), - bufferCapacity, bufferCapacity, aNonBlocking); - - if (NS_SUCCEEDED(rv)) { - uint32_t written; - rv = outStream->Write((char*)iconBuffer.Elements(), bufferCapacity, - &written); - if (NS_SUCCEEDED(rv)) { - NS_IF_ADDREF(*_retval = inStream); - } - } - - // Drop notification callbacks to prevent cycles. - mCallbacks = nullptr; - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsIconChannel::GetLoadFlags(uint32_t* aLoadAttributes) -{ - return mPump->GetLoadFlags(aLoadAttributes); -} - -NS_IMETHODIMP -nsIconChannel::SetLoadFlags(uint32_t aLoadAttributes) -{ - return mPump->SetLoadFlags(aLoadAttributes); -} - -NS_IMETHODIMP -nsIconChannel::GetContentType(nsACString& aContentType) -{ - aContentType.AssignLiteral(IMAGE_ICON_MS); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetContentType(const nsACString& aContentType) -{ - //It doesn't make sense to set the content-type on this type - // of channel... - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsIconChannel::GetContentCharset(nsACString& aContentCharset) -{ - aContentCharset.AssignLiteral(IMAGE_ICON_MS); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetContentCharset(const nsACString& aContentCharset) -{ - //It doesn't make sense to set the content-type on this type - // of channel... - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsIconChannel::GetContentDisposition(uint32_t* aContentDisposition) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel::SetContentDisposition(uint32_t aContentDisposition) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel:: - GetContentDispositionFilename(nsAString& aContentDispositionFilename) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel:: - SetContentDispositionFilename(const nsAString& aContentDispositionFilename) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel:: - GetContentDispositionHeader(nsACString& aContentDispositionHeader) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel::GetContentLength(int64_t* aContentLength) -{ - *aContentLength = 0; - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsIconChannel::SetContentLength(int64_t aContentLength) -{ - NS_NOTREACHED("nsIconChannel::SetContentLength"); - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP -nsIconChannel::GetLoadGroup(nsILoadGroup** aLoadGroup) -{ - *aLoadGroup = mLoadGroup; - NS_IF_ADDREF(*aLoadGroup); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetLoadGroup(nsILoadGroup* aLoadGroup) -{ - mLoadGroup = aLoadGroup; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetOwner(nsISupports** aOwner) -{ - *aOwner = mOwner.get(); - NS_IF_ADDREF(*aOwner); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetOwner(nsISupports* aOwner) -{ - mOwner = aOwner; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetLoadInfo(nsILoadInfo** aLoadInfo) -{ - NS_IF_ADDREF(*aLoadInfo = mLoadInfo); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetLoadInfo(nsILoadInfo* aLoadInfo) -{ - mLoadInfo = aLoadInfo; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel:: - GetNotificationCallbacks(nsIInterfaceRequestor** aNotificationCallbacks) -{ - *aNotificationCallbacks = mCallbacks.get(); - NS_IF_ADDREF(*aNotificationCallbacks); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel:: - SetNotificationCallbacks(nsIInterfaceRequestor* aNotificationCallbacks) -{ - mCallbacks = aNotificationCallbacks; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetSecurityInfo(nsISupports** aSecurityInfo) -{ - *aSecurityInfo = nullptr; - return NS_OK; -} - diff --git a/image/decoders/icon/moz.build b/image/decoders/icon/moz.build index 5a173d316..56465dd27 100644 --- a/image/decoders/icon/moz.build +++ b/image/decoders/icon/moz.build @@ -21,8 +21,5 @@ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: if CONFIG['OS_ARCH'] == 'WINNT': platform = 'win' -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - platform = 'mac' - if platform: LOCAL_INCLUDES += [platform] diff --git a/image/decoders/moz.build b/image/decoders/moz.build index 907b81bda..5a07bf765 100644 --- a/image/decoders/moz.build +++ b/image/decoders/moz.build @@ -13,9 +13,6 @@ if 'gtk' in toolkit: if CONFIG['OS_ARCH'] == 'WINNT': DIRS += ['icon/win', 'icon'] -if toolkit == 'cocoa': - DIRS += ['icon/mac', 'icon'] - UNIFIED_SOURCES += [ 'EXIF.cpp', 'iccjpeg.c', diff --git a/intl/locale/mac/moz.build b/intl/locale/mac/moz.build deleted file mode 100644 index 422fd3e3c..000000000 --- a/intl/locale/mac/moz.build +++ /dev/null @@ -1,15 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -UNIFIED_SOURCES += [ - 'nsCollationMacUC.cpp', - 'nsDateTimeFormatMac.cpp', - 'nsMacCharset.cpp', -] - -FINAL_LIBRARY = 'xul' -LOCAL_INCLUDES += [ - '..', -] diff --git a/intl/locale/mac/nsCollationMacUC.cpp b/intl/locale/mac/nsCollationMacUC.cpp deleted file mode 100644 index d230f4d77..000000000 --- a/intl/locale/mac/nsCollationMacUC.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsCollationMacUC.h" -#include "nsILocaleService.h" -#include "nsIPrefBranch.h" -#include "nsIPrefService.h" -#include "nsIServiceManager.h" -#include "prmem.h" -#include "nsString.h" - -NS_IMPL_ISUPPORTS(nsCollationMacUC, nsICollation) - -nsCollationMacUC::nsCollationMacUC() - : mInit(false) - , mHasCollator(false) - , mLocaleICU(nullptr) - , mLastStrength(-1) - , mCollatorICU(nullptr) -{ } - -nsCollationMacUC::~nsCollationMacUC() -{ -#ifdef DEBUG - nsresult res = -#endif - CleanUpCollator(); - NS_ASSERTION(NS_SUCCEEDED(res), "CleanUpCollator failed"); - if (mLocaleICU) { - free(mLocaleICU); - mLocaleICU = nullptr; - } -} - -nsresult nsCollationMacUC::ConvertStrength(const int32_t aNSStrength, - UCollationStrength* aICUStrength, - UColAttributeValue* aCaseLevelOut) -{ - NS_ENSURE_ARG_POINTER(aICUStrength); - NS_ENSURE_TRUE((aNSStrength < 4), NS_ERROR_FAILURE); - - UCollationStrength strength = UCOL_DEFAULT; - UColAttributeValue caseLevel = UCOL_OFF; - switch (aNSStrength) { - case kCollationCaseInSensitive: - strength = UCOL_PRIMARY; - break; - case kCollationCaseInsensitiveAscii: - strength = UCOL_SECONDARY; - break; - case kCollationAccentInsenstive: - caseLevel = UCOL_ON; - strength = UCOL_PRIMARY; - break; - case kCollationCaseSensitive: - strength = UCOL_TERTIARY; - break; - default: - NS_WARNING("Bad aNSStrength passed to ConvertStrength."); - return NS_ERROR_FAILURE; - } - - *aICUStrength = strength; - *aCaseLevelOut = caseLevel; - - return NS_OK; -} - -nsresult nsCollationMacUC::ConvertLocaleICU(nsILocale* aNSLocale, char** aICULocale) -{ - NS_ENSURE_ARG_POINTER(aNSLocale); - NS_ENSURE_ARG_POINTER(aICULocale); - - nsAutoString localeString; - nsresult res = aNSLocale->GetCategory(NS_LITERAL_STRING("NSILOCALE_COLLATE"), localeString); - NS_ENSURE_TRUE(NS_SUCCEEDED(res) && !localeString.IsEmpty(), - NS_ERROR_FAILURE); - NS_LossyConvertUTF16toASCII tmp(localeString); - tmp.ReplaceChar('-', '_'); - char* locale = (char*)malloc(tmp.Length() + 1); - if (!locale) { - return NS_ERROR_OUT_OF_MEMORY; - } - strcpy(locale, tmp.get()); - - *aICULocale = locale; - - return NS_OK; -} - -nsresult nsCollationMacUC::EnsureCollator(const int32_t newStrength) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - if (mHasCollator && (mLastStrength == newStrength)) - return NS_OK; - - nsresult res; - res = CleanUpCollator(); - NS_ENSURE_SUCCESS(res, res); - - NS_ENSURE_TRUE(mLocaleICU, NS_ERROR_NOT_INITIALIZED); - - UErrorCode status; - status = U_ZERO_ERROR; - mCollatorICU = ucol_open(mLocaleICU, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - - UCollationStrength strength; - UColAttributeValue caseLevel; - res = ConvertStrength(newStrength, &strength, &caseLevel); - NS_ENSURE_SUCCESS(res, res); - - status = U_ZERO_ERROR; - ucol_setAttribute(mCollatorICU, UCOL_STRENGTH, strength, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_CASE_LEVEL, caseLevel, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_ALTERNATE_HANDLING, UCOL_DEFAULT, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_NUMERIC_COLLATION, UCOL_OFF, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_NORMALIZATION_MODE, UCOL_ON, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_CASE_FIRST, UCOL_DEFAULT, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - - mHasCollator = true; - - mLastStrength = newStrength; - return NS_OK; -} - -nsresult nsCollationMacUC::CleanUpCollator(void) -{ - if (mHasCollator) { - ucol_close(mCollatorICU); - mHasCollator = false; - } - - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::Initialize(nsILocale* locale) -{ - NS_ENSURE_TRUE((!mInit), NS_ERROR_ALREADY_INITIALIZED); - nsCOMPtr appLocale; - - nsresult rv; - if (!locale) { - nsCOMPtr localeService = do_GetService(NS_LOCALESERVICE_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - rv = localeService->GetApplicationLocale(getter_AddRefs(appLocale)); - NS_ENSURE_SUCCESS(rv, rv); - locale = appLocale; - } - - rv = ConvertLocaleICU(locale, &mLocaleICU); - NS_ENSURE_SUCCESS(rv, rv); - - mInit = true; - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::AllocateRawSortKey(int32_t strength, const nsAString& stringIn, - uint8_t** key, uint32_t* outLen) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - NS_ENSURE_ARG_POINTER(key); - NS_ENSURE_ARG_POINTER(outLen); - - nsresult res = EnsureCollator(strength); - NS_ENSURE_SUCCESS(res, res); - - uint32_t stringInLen = stringIn.Length(); - - const UChar* str = (const UChar*)stringIn.BeginReading(); - - int32_t keyLength = ucol_getSortKey(mCollatorICU, str, stringInLen, nullptr, 0); - NS_ENSURE_TRUE((stringInLen == 0 || keyLength > 0), NS_ERROR_FAILURE); - - // Since key is freed elsewhere with PR_Free, allocate with PR_Malloc. - uint8_t* newKey = (uint8_t*)PR_Malloc(keyLength + 1); - if (!newKey) { - return NS_ERROR_OUT_OF_MEMORY; - } - - keyLength = ucol_getSortKey(mCollatorICU, str, stringInLen, newKey, keyLength + 1); - NS_ENSURE_TRUE((stringInLen == 0 || keyLength > 0), NS_ERROR_FAILURE); - - *key = newKey; - *outLen = keyLength; - - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::CompareString(int32_t strength, const nsAString& string1, - const nsAString& string2, int32_t* result) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - NS_ENSURE_ARG_POINTER(result); - *result = 0; - - nsresult rv = EnsureCollator(strength); - NS_ENSURE_SUCCESS(rv, rv); - - UCollationResult uresult; - uresult = ucol_strcoll(mCollatorICU, - (const UChar*)string1.BeginReading(), - string1.Length(), - (const UChar*)string2.BeginReading(), - string2.Length()); - int32_t res; - switch (uresult) { - case UCOL_LESS: - res = -1; - break; - case UCOL_EQUAL: - res = 0; - break; - case UCOL_GREATER: - res = 1; - break; - default: - MOZ_CRASH("ucol_strcoll returned bad UCollationResult"); - } - *result = res; - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::CompareRawSortKey(const uint8_t* key1, uint32_t len1, - const uint8_t* key2, uint32_t len2, - int32_t* result) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - NS_ENSURE_ARG_POINTER(key1); - NS_ENSURE_ARG_POINTER(key2); - NS_ENSURE_ARG_POINTER(result); - *result = 0; - - int32_t tmpResult = strcmp((const char*)key1, (const char*)key2); - int32_t res; - if (tmpResult < 0) { - res = -1; - } else if (tmpResult > 0) { - res = 1; - } else { - res = 0; - } - *result = res; - return NS_OK; -} diff --git a/intl/locale/mac/nsCollationMacUC.h b/intl/locale/mac/nsCollationMacUC.h deleted file mode 100644 index 46bb0145d..000000000 --- a/intl/locale/mac/nsCollationMacUC.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef nsCollationMacUC_h_ -#define nsCollationMacUC_h_ - -#include "nsICollation.h" -#include "nsCollation.h" -#include "mozilla/Attributes.h" - -#include "unicode/ucol.h" - -class nsCollationMacUC final : public nsICollation { - -public: - nsCollationMacUC(); - - // nsISupports interface - NS_DECL_ISUPPORTS - - // nsICollation interface - NS_DECL_NSICOLLATION - -protected: - ~nsCollationMacUC(); - - nsresult ConvertLocaleICU(nsILocale* aNSLocale, char** aICULocale); - nsresult ConvertStrength(const int32_t aStrength, - UCollationStrength* aStrengthOut, - UColAttributeValue* aCaseLevelOut); - nsresult EnsureCollator(const int32_t newStrength); - nsresult CleanUpCollator(void); - -private: - bool mInit; - bool mHasCollator; - char* mLocaleICU; - int32_t mLastStrength; - UCollator* mCollatorICU; -}; - -#endif /* nsCollationMacUC_h_ */ diff --git a/intl/locale/mac/nsDateTimeFormatMac.cpp b/intl/locale/mac/nsDateTimeFormatMac.cpp deleted file mode 100644 index 6ee73292d..000000000 --- a/intl/locale/mac/nsDateTimeFormatMac.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include "nsIServiceManager.h" -#include "nsDateTimeFormatMac.h" -#include -#include "nsIComponentManager.h" -#include "nsILocaleService.h" -#include "nsCRT.h" -#include "plstr.h" -#include "nsUnicharUtils.h" -#include "nsTArray.h" - - -NS_IMPL_ISUPPORTS(nsDateTimeFormatMac, nsIDateTimeFormat) - -nsresult nsDateTimeFormatMac::Initialize(nsILocale* locale) -{ - nsAutoString localeStr; - nsAutoString category(NS_LITERAL_STRING("NSILOCALE_TIME")); - nsresult res; - - // use cached info if match with stored locale - if (nullptr == locale) { - if (!mLocale.IsEmpty() && - mLocale.Equals(mAppLocale, nsCaseInsensitiveStringComparator())) { - return NS_OK; - } - } - else { - res = locale->GetCategory(category, localeStr); - if (NS_SUCCEEDED(res) && !localeStr.IsEmpty()) { - if (!mLocale.IsEmpty() && - mLocale.Equals(localeStr, - nsCaseInsensitiveStringComparator())) { - return NS_OK; - } - } - } - - // get application locale - nsCOMPtr localeService = - do_GetService(NS_LOCALESERVICE_CONTRACTID, &res); - if (NS_SUCCEEDED(res)) { - nsCOMPtr appLocale; - res = localeService->GetApplicationLocale(getter_AddRefs(appLocale)); - if (NS_SUCCEEDED(res)) { - res = appLocale->GetCategory(category, localeStr); - if (NS_SUCCEEDED(res) && !localeStr.IsEmpty()) { - mAppLocale = localeStr; // cache app locale name - } - } - } - - // use app default if no locale specified - if (nullptr == locale) { - mUseDefaultLocale = true; - } - else { - mUseDefaultLocale = false; - res = locale->GetCategory(category, localeStr); - } - - if (NS_SUCCEEDED(res) && !localeStr.IsEmpty()) { - mLocale.Assign(localeStr); // cache locale name - } - - return res; -} - -// performs a locale sensitive date formatting operation on the time_t parameter -nsresult nsDateTimeFormatMac::FormatTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const time_t timetTime, - nsAString& stringOut) -{ - struct tm tmTime; - return FormatTMTime(locale, dateFormatSelector, timeFormatSelector, localtime_r(&timetTime, &tmTime), stringOut); -} - -// performs a locale sensitive date formatting operation on the struct tm parameter -nsresult nsDateTimeFormatMac::FormatTMTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const struct tm* tmTime, - nsAString& stringOut) -{ - nsresult res = NS_OK; - - // set up locale data - (void) Initialize(locale); - - // return, nothing to format - if (dateFormatSelector == kDateFormatNone && timeFormatSelector == kTimeFormatNone) { - stringOut.Truncate(); - return NS_OK; - } - - NS_ASSERTION(tmTime->tm_mon >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_mday >= 1, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_hour >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_min >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_sec >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_wday >= 0, "tm is not set correctly"); - - // Got the locale for the formatter: - CFLocaleRef formatterLocale; - if (!locale) { - formatterLocale = CFLocaleCopyCurrent(); - } else { - CFStringRef localeStr = CFStringCreateWithCharacters(nullptr, - reinterpret_cast(mLocale.get()), - mLocale.Length()); - formatterLocale = CFLocaleCreate(nullptr, localeStr); - CFRelease(localeStr); - } - - // Get the date style for the formatter: - CFDateFormatterStyle dateStyle; - switch (dateFormatSelector) { - case kDateFormatLong: - dateStyle = kCFDateFormatterLongStyle; - break; - case kDateFormatShort: - dateStyle = kCFDateFormatterShortStyle; - break; - case kDateFormatYearMonth: - case kDateFormatWeekday: - dateStyle = kCFDateFormatterNoStyle; // formats handled below - break; - case kDateFormatNone: - dateStyle = kCFDateFormatterNoStyle; - break; - default: - NS_ERROR("Unknown nsDateFormatSelector"); - res = NS_ERROR_FAILURE; - dateStyle = kCFDateFormatterNoStyle; - } - - // Get the time style for the formatter: - CFDateFormatterStyle timeStyle; - switch (timeFormatSelector) { - case kTimeFormatSeconds: - case kTimeFormatSecondsForce24Hour: // 24 hour part fixed below - timeStyle = kCFDateFormatterMediumStyle; - break; - case kTimeFormatNoSeconds: - case kTimeFormatNoSecondsForce24Hour: // 24 hour part fixed below - timeStyle = kCFDateFormatterShortStyle; - break; - case kTimeFormatNone: - timeStyle = kCFDateFormatterNoStyle; - break; - default: - NS_ERROR("Unknown nsTimeFormatSelector"); - res = NS_ERROR_FAILURE; - timeStyle = kCFDateFormatterNoStyle; - } - - // Create the formatter and fix up its formatting as necessary: - CFDateFormatterRef formatter = - CFDateFormatterCreate(nullptr, formatterLocale, dateStyle, timeStyle); - - CFRelease(formatterLocale); - - if (dateFormatSelector == kDateFormatYearMonth || - dateFormatSelector == kDateFormatWeekday) { - CFStringRef dateFormat = - dateFormatSelector == kDateFormatYearMonth ? CFSTR("yyyy/MM ") : CFSTR("EEE "); - - CFStringRef oldFormat = CFDateFormatterGetFormat(formatter); - CFMutableStringRef newFormat = CFStringCreateMutableCopy(nullptr, 0, oldFormat); - CFStringInsert(newFormat, 0, dateFormat); - CFDateFormatterSetFormat(formatter, newFormat); - CFRelease(newFormat); // note we don't own oldFormat - } - - if (timeFormatSelector == kTimeFormatSecondsForce24Hour || - timeFormatSelector == kTimeFormatNoSecondsForce24Hour) { - // Replace "h" with "H", and remove "a": - CFStringRef oldFormat = CFDateFormatterGetFormat(formatter); - CFMutableStringRef newFormat = CFStringCreateMutableCopy(nullptr, 0, oldFormat); - CFIndex replaceCount = CFStringFindAndReplace(newFormat, - CFSTR("h"), CFSTR("H"), - CFRangeMake(0, CFStringGetLength(newFormat)), - 0); - NS_ASSERTION(replaceCount <= 2, "Unexpected number of \"h\" occurrences"); - replaceCount = CFStringFindAndReplace(newFormat, - CFSTR("a"), CFSTR(""), - CFRangeMake(0, CFStringGetLength(newFormat)), - 0); - NS_ASSERTION(replaceCount <= 1, "Unexpected number of \"a\" occurrences"); - CFDateFormatterSetFormat(formatter, newFormat); - CFRelease(newFormat); // note we don't own oldFormat - } - - // Now get the formatted date: - CFGregorianDate date; - date.second = tmTime->tm_sec; - date.minute = tmTime->tm_min; - date.hour = tmTime->tm_hour; - date.day = tmTime->tm_mday; // Mac is 1-based, tm is 1-based - date.month = tmTime->tm_mon + 1; // Mac is 1-based, tm is 0-based - date.year = tmTime->tm_year + 1900; - - CFTimeZoneRef timeZone = CFTimeZoneCopySystem(); // tmTime is in local time - CFAbsoluteTime absTime = CFGregorianDateGetAbsoluteTime(date, timeZone); - CFRelease(timeZone); - - CFStringRef formattedDate = CFDateFormatterCreateStringWithAbsoluteTime(nullptr, - formatter, - absTime); - - CFIndex stringLen = CFStringGetLength(formattedDate); - - AutoTArray stringBuffer; - stringBuffer.SetLength(stringLen + 1); - CFStringGetCharacters(formattedDate, CFRangeMake(0, stringLen), stringBuffer.Elements()); - stringOut.Assign(reinterpret_cast(stringBuffer.Elements()), stringLen); - - CFRelease(formattedDate); - CFRelease(formatter); - - return res; -} - -// performs a locale sensitive date formatting operation on the PRTime parameter -nsresult nsDateTimeFormatMac::FormatPRTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRTime prTime, - nsAString& stringOut) -{ - PRExplodedTime explodedTime; - PR_ExplodeTime(prTime, PR_LocalTimeParameters, &explodedTime); - - return FormatPRExplodedTime(locale, dateFormatSelector, timeFormatSelector, &explodedTime, stringOut); -} - -// performs a locale sensitive date formatting operation on the PRExplodedTime parameter -nsresult nsDateTimeFormatMac::FormatPRExplodedTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRExplodedTime* explodedTime, - nsAString& stringOut) -{ - struct tm tmTime; - memset( &tmTime, 0, sizeof(tmTime) ); - - tmTime.tm_yday = explodedTime->tm_yday; - tmTime.tm_wday = explodedTime->tm_wday; - tmTime.tm_year = explodedTime->tm_year; - tmTime.tm_year -= 1900; - tmTime.tm_mon = explodedTime->tm_month; - tmTime.tm_mday = explodedTime->tm_mday; - tmTime.tm_hour = explodedTime->tm_hour; - tmTime.tm_min = explodedTime->tm_min; - tmTime.tm_sec = explodedTime->tm_sec; - - return FormatTMTime(locale, dateFormatSelector, timeFormatSelector, &tmTime, stringOut); -} - diff --git a/intl/locale/mac/nsDateTimeFormatMac.h b/intl/locale/mac/nsDateTimeFormatMac.h deleted file mode 100644 index dfdf70378..000000000 --- a/intl/locale/mac/nsDateTimeFormatMac.h +++ /dev/null @@ -1,61 +0,0 @@ - -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifndef nsDateTimeFormatMac_h__ -#define nsDateTimeFormatMac_h__ - - -#include "nsCOMPtr.h" -#include "nsIDateTimeFormat.h" - - -class nsDateTimeFormatMac : public nsIDateTimeFormat { - -public: - NS_DECL_THREADSAFE_ISUPPORTS - - // performs a locale sensitive date formatting operation on the time_t parameter - NS_IMETHOD FormatTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const time_t timetTime, - nsAString& stringOut) override; - - // performs a locale sensitive date formatting operation on the struct tm parameter - NS_IMETHOD FormatTMTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const struct tm* tmTime, - nsAString& stringOut) override; - // performs a locale sensitive date formatting operation on the PRTime parameter - NS_IMETHOD FormatPRTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRTime prTime, - nsAString& stringOut) override; - - // performs a locale sensitive date formatting operation on the PRExplodedTime parameter - NS_IMETHOD FormatPRExplodedTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRExplodedTime* explodedTime, - nsAString& stringOut) override; - - nsDateTimeFormatMac() {} - -protected: - virtual ~nsDateTimeFormatMac() {} - -private: - // init this interface to a specified locale - NS_IMETHOD Initialize(nsILocale* locale); - - nsString mLocale; - nsString mAppLocale; - bool mUseDefaultLocale; -}; - -#endif /* nsDateTimeFormatMac_h__ */ diff --git a/intl/locale/mac/nsMacCharset.cpp b/intl/locale/mac/nsMacCharset.cpp deleted file mode 100644 index 956560fba..000000000 --- a/intl/locale/mac/nsMacCharset.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include "nsIPlatformCharset.h" -#include "nsCOMPtr.h" -#include "nsIServiceManager.h" -#include "nsReadableUtils.h" -#include "nsPlatformCharset.h" -#include "nsEncoderDecoderUtils.h" - -NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset) - -nsPlatformCharset::nsPlatformCharset() -{ -} -nsPlatformCharset::~nsPlatformCharset() -{ -} - -NS_IMETHODIMP -nsPlatformCharset::GetCharset(nsPlatformCharsetSel selector, nsACString& oResult) -{ - oResult.AssignLiteral("UTF-8"); - return NS_OK; -} - -NS_IMETHODIMP -nsPlatformCharset::GetDefaultCharsetForLocale(const nsAString& localeName, nsACString &oResult) -{ - oResult.AssignLiteral("UTF-8"); - return NS_OK; -} - -NS_IMETHODIMP -nsPlatformCharset::Init() -{ - return NS_OK; -} - -nsresult -nsPlatformCharset::MapToCharset(nsAString& inANSICodePage, nsACString& outCharset) -{ - return NS_OK; -} - -nsresult -nsPlatformCharset::InitGetCharset(nsACString &oString) -{ - return NS_OK; -} - -nsresult -nsPlatformCharset::VerifyCharset(nsCString &aCharset) -{ - return NS_OK; -} diff --git a/intl/locale/moz.build b/intl/locale/moz.build index 94a30873b..4b3b3c0b8 100644 --- a/intl/locale/moz.build +++ b/intl/locale/moz.build @@ -9,8 +9,6 @@ toolkit = CONFIG['MOZ_WIDGET_TOOLKIT'] if toolkit == 'windows': DIRS += ['windows'] -elif toolkit == 'cocoa': - DIRS += ['mac'] else: DIRS += ['unix'] diff --git a/intl/lwbrk/moz.build b/intl/lwbrk/moz.build index da701be5e..dc7c2df1a 100644 --- a/intl/lwbrk/moz.build +++ b/intl/lwbrk/moz.build @@ -32,10 +32,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': SOURCES += [ 'nsUniscribeBreaker.cpp', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - UNIFIED_SOURCES += [ - 'nsCarbonBreaker.cpp', - ] else: SOURCES += [ 'nsRuleBreaker.cpp', diff --git a/intl/lwbrk/nsCarbonBreaker.cpp b/intl/lwbrk/nsCarbonBreaker.cpp deleted file mode 100644 index 1b37bc129..000000000 --- a/intl/lwbrk/nsCarbonBreaker.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include -#include "nsDebug.h" -#include "nscore.h" - -void -NS_GetComplexLineBreaks(const char16_t* aText, uint32_t aLength, - uint8_t* aBreakBefore) -{ - NS_ASSERTION(aText, "aText shouldn't be null"); - - memset(aBreakBefore, 0, aLength * sizeof(uint8_t)); - - CFStringRef str = ::CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, reinterpret_cast(aText), aLength, kCFAllocatorNull); - if (!str) { - return; - } - - CFStringTokenizerRef st = ::CFStringTokenizerCreate(kCFAllocatorDefault, str, - ::CFRangeMake(0, aLength), - kCFStringTokenizerUnitLineBreak, - nullptr); - if (!st) { - ::CFRelease(str); - return; - } - - CFStringTokenizerTokenType tt = ::CFStringTokenizerAdvanceToNextToken(st); - while (tt != kCFStringTokenizerTokenNone) { - CFRange r = ::CFStringTokenizerGetCurrentTokenRange(st); - if (r.location != 0) { // Ignore leading edge - aBreakBefore[r.location] = true; - } - tt = CFStringTokenizerAdvanceToNextToken(st); - } - - ::CFRelease(st); - ::CFRelease(str); -} diff --git a/js/xpconnect/shell/moz.build b/js/xpconnect/shell/moz.build index c1789fdc7..3361b7d81 100644 --- a/js/xpconnect/shell/moz.build +++ b/js/xpconnect/shell/moz.build @@ -14,11 +14,6 @@ SOURCES += [ 'xpcshell.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'xpcshellMacUtils.mm', - ] - include('/ipc/chromium/chromium-config.mozbuild') LOCAL_INCLUDES += [ diff --git a/js/xpconnect/shell/xpcshellMacUtils.h b/js/xpconnect/shell/xpcshellMacUtils.h deleted file mode 100644 index 2e6b5cb35..000000000 --- a/js/xpconnect/shell/xpcshellMacUtils.h +++ /dev/null @@ -1,8 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// Functions to setup and release the Mac memory pool -void InitAutoreleasePool(); -void FinishAutoreleasePool(); diff --git a/js/xpconnect/shell/xpcshellMacUtils.mm b/js/xpconnect/shell/xpcshellMacUtils.mm deleted file mode 100644 index 61d6a9ea9..000000000 --- a/js/xpconnect/shell/xpcshellMacUtils.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include - -static NSAutoreleasePool *pool = NULL; - -void InitAutoreleasePool() -{ - pool = [[NSAutoreleasePool alloc] init]; -} - -void FinishAutoreleasePool() -{ - [pool release]; -} diff --git a/layout/build/moz.build b/layout/build/moz.build index d7996af8d..3e76edc49 100644 --- a/layout/build/moz.build +++ b/layout/build/moz.build @@ -63,10 +63,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': LOCAL_INCLUDES += [ '/dom/system/windows', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/dom/system/mac', - ] elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: LOCAL_INCLUDES += [ '/widget/gtk', diff --git a/layout/reftests/reftest.list b/layout/reftests/reftest.list index 90320cba3..15840f38e 100644 --- a/layout/reftests/reftest.list +++ b/layout/reftests/reftest.list @@ -347,9 +347,6 @@ include text-svgglyphs/reftest.list # text-transform/ include text-transform/reftest.list -# theme (osx) -include ../../toolkit/themes/osx/reftests/reftest.list - include ../../toolkit/content/tests/reftests/reftest.list # -moz-transform/ diff --git a/mailnews/base/ispdata/moz.build b/mailnews/base/ispdata/moz.build index 7de5dc2e3..363c2ba0c 100644 --- a/mailnews/base/ispdata/moz.build +++ b/mailnews/base/ispdata/moz.build @@ -2,6 +2,4 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -# Disable movemail for Thunderbird on OSX -if CONFIG['MOZ_MOVEMAIL'] and not (CONFIG['MOZ_THUNDERBIRD'] and CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa'): - FINAL_TARGET_FILES.isp += ['movemail.rdf'] +# Stub. This was configuring special snowflake OSX stuff. \ No newline at end of file diff --git a/mailnews/base/src/moz.build b/mailnews/base/src/moz.build index 91bf235c3..65853daf9 100644 --- a/mailnews/base/src/moz.build +++ b/mailnews/base/src/moz.build @@ -61,8 +61,6 @@ if CONFIG['OS_ARCH'] == 'WINNT': if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'qt'): SOURCES += ['nsMessengerUnixIntegration.cpp'] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += ['nsMessengerOSXIntegration.mm'] EXTRA_COMPONENTS += [ 'folderLookupService.js', diff --git a/mailnews/base/src/nsMessengerOSXIntegration.h b/mailnews/base/src/nsMessengerOSXIntegration.h deleted file mode 100644 index 91f42f2a2..000000000 --- a/mailnews/base/src/nsMessengerOSXIntegration.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsMessengerOSXIntegration_h -#define __nsMessengerOSXIntegration_h - -#include "nsIMessengerOSIntegration.h" -#include "nsIFolderListener.h" -#include "nsIAtom.h" -#include "nsITimer.h" -#include "nsCOMPtr.h" -#include "nsStringGlue.h" -#include "nsIObserver.h" -#include "nsIAlertsService.h" -#include "mozINewMailListener.h" - -#define NS_MESSENGEROSXINTEGRATION_CID \ - {0xaa83266, 0x4225, 0x4c4b, \ - {0x93, 0xf8, 0x94, 0xb1, 0x82, 0x58, 0x6f, 0x93}} - -class nsIStringBundle; - -class nsMessengerOSXIntegration : public nsIMessengerOSIntegration, - public nsIFolderListener, - public nsIObserver, - public mozINewMailListener -{ -public: - nsMessengerOSXIntegration(); - virtual nsresult Init(); - - NS_DECL_ISUPPORTS - NS_DECL_NSIMESSENGEROSINTEGRATION - NS_DECL_NSIFOLDERLISTENER - NS_DECL_NSIOBSERVER - NS_DECL_MOZINEWMAILLISTENER - -private: - virtual ~nsMessengerOSXIntegration(); - - nsCOMPtr mBiffStateAtom; - nsCOMPtr mNewMailReceivedAtom; - nsresult ShowAlertMessage(const nsAString& aAlertTitle, const nsAString& aAlertText, const nsACString& aFolderURI); - nsresult OnAlertFinished(); - nsresult OnAlertClicked(const char16_t * aAlertCookie); -#ifdef MOZ_SUITE - nsresult OnAlertClickedSimple(); -#endif - nsresult GetStringBundle(nsIStringBundle **aBundle); - void FillToolTipInfo(nsIMsgFolder *aFolder, int32_t aNewCount); - nsresult GetFirstFolderWithNewMail(nsIMsgFolder* aFolder, nsCString& aFolderURI); - nsresult BadgeDockIcon(); - nsresult RestoreDockIcon(); - nsresult BounceDockIcon(); - nsresult GetNewMailAuthors(nsIMsgFolder* aFolder, nsString& aAuthors, int32_t aNewCount, int32_t* aNotDisplayed); - - int32_t mUnreadTotal; - int32_t mUnreadChat; -}; - -#endif // __nsMessengerOSXIntegration_h diff --git a/mailnews/base/src/nsMessengerOSXIntegration.mm b/mailnews/base/src/nsMessengerOSXIntegration.mm deleted file mode 100644 index a38716e17..000000000 --- a/mailnews/base/src/nsMessengerOSXIntegration.mm +++ /dev/null @@ -1,700 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nscore.h" -#include "nsMsgUtils.h" -#include "nsArrayUtils.h" -#include "nsMessengerOSXIntegration.h" -#include "nsIMsgMailSession.h" -#include "nsIMsgIncomingServer.h" -#include "nsIMsgIdentity.h" -#include "nsIMsgAccount.h" -#include "nsIMsgFolder.h" -#include "nsCOMPtr.h" -#include "nsMsgBaseCID.h" -#include "nsMsgFolderFlags.h" -#include "nsDirectoryServiceDefs.h" -#include "nsIDirectoryService.h" -#include "MailNewsTypes.h" -#include "nsIWindowMediator.h" -#include "nsIDOMChromeWindow.h" -#include "mozIDOMWindow.h" -#include "nsPIDOMWindow.h" -#include "nsIDocShell.h" -#include "nsIBaseWindow.h" -#include "nsIWidget.h" -#include "nsIObserverService.h" -#include "nsIPrefService.h" -#include "nsIPrefBranch.h" -#include "nsIMessengerWindowService.h" -#include "prprf.h" -#include "nsIAlertsService.h" -#include "nsIStringBundle.h" -#include "nsToolkitCompsCID.h" -#include "nsIMsgDatabase.h" -#include "nsIMsgHdr.h" -#include "nsISupportsPrimitives.h" -#include "nsIWindowWatcher.h" -#include "nsMsgLocalCID.h" -#include "nsIMsgMailNewsUrl.h" -#include "nsIMsgWindow.h" -#include "nsIMsgAccountManager.h" -#include "nsIMessenger.h" -#include "nsObjCExceptions.h" -#include "nsComponentManagerUtils.h" -#include "nsServiceManagerUtils.h" -#include "mozINewMailNotificationService.h" -#include "mozilla/mailnews/MimeHeaderParser.h" - -#include -#import - -#define kBiffAnimateDockIconPref "mail.biff.animate_dock_icon" -#define kMaxDisplayCount 10 - -using namespace mozilla::mailnews; - -// HACK: Limitations in Focus/SetFocus on Mac (see bug 465446) -nsresult FocusAppNative() -{ - ProcessSerialNumber psn; - - if (::GetCurrentProcess(&psn) != 0) - return NS_ERROR_FAILURE; - - if (::SetFrontProcess(&psn) != 0) - return NS_ERROR_FAILURE; - - return NS_OK; -} - -static void openMailWindow(const nsCString& aUri) -{ - nsresult rv; - nsCOMPtr mailSession ( do_GetService(NS_MSGMAILSESSION_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - nsCOMPtr topMostMsgWindow; - rv = mailSession->GetTopmostMsgWindow(getter_AddRefs(topMostMsgWindow)); - if (topMostMsgWindow) - { - if (!aUri.IsEmpty()) - { - nsCOMPtr msgUri(do_CreateInstance(NS_MAILBOXURL_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - rv = msgUri->SetSpec(aUri); - if (NS_FAILED(rv)) - return; - - bool isMessageUri = false; - msgUri->GetIsMessageUri(&isMessageUri); - if (isMessageUri) - { - nsCOMPtr wwatch(do_GetService(NS_WINDOWWATCHER_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - // SeaMonkey only supports message uris, whereas Thunderbird only - // supports message headers. This should be simplified/removed when - // bug 507593 is implemented. -#ifdef MOZ_SUITE - nsCOMPtr newWindow; - wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul", - "_blank", "all,chrome,dialog=no,status,toolbar", msgUri, - getter_AddRefs(newWindow)); -#else - nsCOMPtr messenger(do_CreateInstance(NS_MESSENGER_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - nsCOMPtr msgHdr; - messenger->MsgHdrFromURI(aUri, getter_AddRefs(msgHdr)); - if (msgHdr) - { - nsCOMPtr newWindow; - wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul", - "_blank", "all,chrome,dialog=no,status,toolbar", msgHdr, - getter_AddRefs(newWindow)); - } -#endif - } - else - { - nsCOMPtr windowCommands; - topMostMsgWindow->GetWindowCommands(getter_AddRefs(windowCommands)); - if (windowCommands) - windowCommands->SelectFolder(aUri); - } - } - - FocusAppNative(); - nsCOMPtr domWindow; - topMostMsgWindow->GetDomWindow(getter_AddRefs(domWindow)); - if (domWindow) { - nsCOMPtr privateWindow = nsPIDOMWindowOuter::From(domWindow); - privateWindow->Focus(); - } - } - else - { - // the user doesn't have a mail window open already so open one for them... - nsCOMPtr messengerWindowService = - do_GetService(NS_MESSENGERWINDOWSERVICE_CONTRACTID); - // if we want to preselect the first account with new mail, - // here is where we would try to generate a uri to pass in - // (and add code to the messenger window service to make that work) - if (messengerWindowService) - messengerWindowService->OpenMessengerWindowWithUri( - "mail:3pane", aUri.get(), nsMsgKey_None); - } -} - -nsMessengerOSXIntegration::nsMessengerOSXIntegration() -{ - mBiffStateAtom = MsgGetAtom("BiffState"); - mNewMailReceivedAtom = MsgGetAtom("NewMailReceived"); - mUnreadTotal = 0; -} - -nsMessengerOSXIntegration::~nsMessengerOSXIntegration() -{ - RestoreDockIcon(); -} - -NS_IMPL_ADDREF(nsMessengerOSXIntegration) -NS_IMPL_RELEASE(nsMessengerOSXIntegration) - -NS_INTERFACE_MAP_BEGIN(nsMessengerOSXIntegration) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIMessengerOSIntegration) - NS_INTERFACE_MAP_ENTRY(nsIMessengerOSIntegration) - NS_INTERFACE_MAP_ENTRY(nsIFolderListener) - NS_INTERFACE_MAP_ENTRY(nsIObserver) - NS_INTERFACE_MAP_ENTRY(mozINewMailListener) -NS_INTERFACE_MAP_END - - -nsresult -nsMessengerOSXIntegration::Init() -{ - nsresult rv; - nsCOMPtr observerService = do_GetService("@mozilla.org/observer-service;1", &rv); - NS_ENSURE_SUCCESS(rv, rv); - return observerService->AddObserver(this, "mail-startup-done", false); -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemPropertyChanged(nsIMsgFolder *, nsIAtom *, char const *, char const *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemUnicharPropertyChanged(nsIMsgFolder *, nsIAtom *, const char16_t *, const char16_t *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemRemoved(nsIMsgFolder *, nsISupports *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData) -{ - if (!strcmp(aTopic, "alertfinished")) - return OnAlertFinished(); - - if (!strcmp(aTopic, "alertclickcallback")) - return OnAlertClicked(aData); - -#ifdef MOZ_SUITE - // SeaMonkey does most of the GUI work in JS code when clicking on a mail - // notification, so it needs an extra function here - if (!strcmp(aTopic, "alertclicksimplecallback")) - return OnAlertClickedSimple(); -#endif - - if (!strcmp(aTopic, "mail-startup-done")) { - nsresult rv; - nsCOMPtr observerService = do_GetService("@mozilla.org/observer-service;1", &rv); - if (NS_SUCCEEDED(rv)) { - observerService->RemoveObserver(this, "mail-startup-done"); - - nsCOMPtr pref(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); - } - - // Register with the new mail service for changes to the unread message count - nsCOMPtr newmail - = do_GetService(MOZ_NEWMAILNOTIFICATIONSERVICE_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); // This should really be an assert with a helpful message - rv = newmail->AddListener(this, mozINewMailNotificationService::count); - NS_ENSURE_SUCCESS(rv, rv); // This should really be an assert with a helpful message - - // Get the initial unread count. Ignore return value; if code above didn't fail, this won't - rv = newmail->GetMessageCount(&mUnreadTotal); - BadgeDockIcon(); - - // register with the mail sesson for folder events - // we care about new count, biff status - nsCOMPtr mailSession = do_GetService(NS_MSGMAILSESSION_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - return mailSession->AddFolderListener(this, nsIFolderListener::boolPropertyChanged | nsIFolderListener::intPropertyChanged); - } - - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::GetStringBundle(nsIStringBundle **aBundle) -{ - NS_ENSURE_ARG_POINTER(aBundle); - nsresult rv; - nsCOMPtr bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv); - nsCOMPtr bundle; - if (bundleService && NS_SUCCEEDED(rv)) - bundleService->CreateBundle("chrome://messenger/locale/messenger.properties", getter_AddRefs(bundle)); - bundle.swap(*aBundle); - return rv; -} - -void -nsMessengerOSXIntegration::FillToolTipInfo(nsIMsgFolder *aFolder, int32_t aNewCount) -{ - if (aFolder) - { - nsString authors; - int32_t numNotDisplayed; - nsresult rv = GetNewMailAuthors(aFolder, authors, aNewCount, &numNotDisplayed); - - // If all senders are vetoed, the authors string will be empty. - if (NS_FAILED(rv) || authors.IsEmpty()) - return; - - // If this isn't the root folder, get it so we can report for it. - // GetRootFolder always returns the server's root, so calling on the root itself is fine. - nsCOMPtr rootFolder; - aFolder->GetRootFolder(getter_AddRefs(rootFolder)); - if (!rootFolder) - return; - - nsString accountName; - rootFolder->GetPrettiestName(accountName); - - nsCOMPtr bundle; - GetStringBundle(getter_AddRefs(bundle)); - if (bundle) - { - nsAutoString numNewMsgsText; - numNewMsgsText.AppendInt(aNewCount); - nsString finalText; - nsCString uri; - aFolder->GetURI(uri); - - if (numNotDisplayed > 0) - { - nsAutoString numNotDisplayedText; - numNotDisplayedText.AppendInt(numNotDisplayed); - const char16_t *formatStrings[3] = { numNewMsgsText.get(), authors.get(), numNotDisplayedText.get() }; - bundle->FormatStringFromName(u"macBiffNotification_messages_extra", - formatStrings, - 3, - getter_Copies(finalText)); - } - else - { - const char16_t *formatStrings[2] = { numNewMsgsText.get(), authors.get() }; - - if (aNewCount == 1) - { - bundle->FormatStringFromName(u"macBiffNotification_message", - formatStrings, - 2, - getter_Copies(finalText)); - // Since there is only 1 message, use the most recent mail's URI instead of the folder's - nsCOMPtr db; - rv = aFolder->GetMsgDatabase(getter_AddRefs(db)); - if (NS_SUCCEEDED(rv) && db) - { - uint32_t numNewKeys; - uint32_t *newMessageKeys; - rv = db->GetNewList(&numNewKeys, &newMessageKeys); - if (NS_SUCCEEDED(rv)) - { - nsCOMPtr hdr; - rv = db->GetMsgHdrForKey(newMessageKeys[numNewKeys - 1], - getter_AddRefs(hdr)); - if (NS_SUCCEEDED(rv) && hdr) - aFolder->GetUriForMsg(hdr, uri); - } - NS_Free(newMessageKeys); - } - } - else - bundle->FormatStringFromName(u"macBiffNotification_messages", - formatStrings, - 2, - getter_Copies(finalText)); - } - ShowAlertMessage(accountName, finalText, uri); - } // if we got a bundle - } // if we got a folder -} - -nsresult -nsMessengerOSXIntegration::ShowAlertMessage(const nsAString& aAlertTitle, - const nsAString& aAlertText, - const nsACString& aFolderURI) -{ - nsresult rv; - - nsCOMPtr alertsService (do_GetService(NS_ALERTSERVICE_CONTRACTID, &rv)); - // If we have an nsIAlertsService implementation, use it: - if (NS_SUCCEEDED(rv)) - { - alertsService->ShowAlertNotification(EmptyString(), - aAlertTitle, aAlertText, true, - NS_ConvertASCIItoUTF16(aFolderURI), - this, EmptyString(), - NS_LITERAL_STRING("auto"), - EmptyString(), EmptyString(), - nullptr, - false, - false); - } - - BounceDockIcon(); - - if (NS_FAILED(rv)) - OnAlertFinished(); - - return rv; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemIntPropertyChanged(nsIMsgFolder *aFolder, - nsIAtom *aProperty, - int64_t aOldValue, - int64_t aNewValue) -{ - // if we got new mail show an alert - if (aNewValue == nsIMsgFolder::nsMsgBiffState_NewMail) - { - bool performingBiff = false; - nsCOMPtr server; - aFolder->GetServer(getter_AddRefs(server)); - if (server) - server->GetPerformingBiff(&performingBiff); - if (!performingBiff) - return NS_OK; // kick out right now... - - // Biff happens for the root folder, but we want info for the child with new mail - nsCString folderUri; - GetFirstFolderWithNewMail(aFolder, folderUri); - nsCOMPtr childFolder; - nsresult rv = aFolder->GetChildWithURI(folderUri, true, true, - getter_AddRefs(childFolder)); - if (NS_FAILED(rv) || !childFolder) - return NS_ERROR_FAILURE; - - int32_t numNewMessages = 0; - childFolder->GetNumNewMessages(true, &numNewMessages); - FillToolTipInfo(childFolder, numNewMessages); - } - else if (mNewMailReceivedAtom == aProperty) - { - FillToolTipInfo(aFolder, aNewValue); - } - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::OnAlertClicked(const char16_t* aAlertCookie) -{ - openMailWindow(NS_ConvertUTF16toUTF8(aAlertCookie)); - return NS_OK; -} - -#ifdef MOZ_SUITE -nsresult -nsMessengerOSXIntegration::OnAlertClickedSimple() -{ - // SeaMonkey only function; only focus the app here, rest of the work will - // be done in suite/mailnews/mailWidgets.xml - FocusAppNative(); - return NS_OK; -} -#endif - -nsresult -nsMessengerOSXIntegration::OnAlertFinished() -{ - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::BounceDockIcon() -{ - nsresult rv; - nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - bool bounceDockIcon = false; - rv = prefBranch->GetBoolPref(kBiffAnimateDockIconPref, &bounceDockIcon); - NS_ENSURE_SUCCESS(rv, rv); - - if (!bounceDockIcon) - return NS_OK; - - nsCOMPtr mediator(do_GetService(NS_WINDOWMEDIATOR_CONTRACTID)); - if (mediator) - { - nsCOMPtr domWindow; - mediator->GetMostRecentWindow(u"mail:3pane", getter_AddRefs(domWindow)); - if (domWindow) - { - nsCOMPtr chromeWindow(do_QueryInterface(domWindow)); - chromeWindow->GetAttention(); - } - } - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::RestoreDockIcon() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - id tile = [[NSApplication sharedApplication] dockTile]; - [tile setBadgeLabel: nil]; - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -nsresult -nsMessengerOSXIntegration::BadgeDockIcon() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - int32_t unreadCount = mUnreadTotal; - // If count is less than one, we should restore the original dock icon. - if (unreadCount < 1) - { - RestoreDockIcon(); - return NS_OK; - } - - // Draw the number, first giving extensions a chance to modify. - // Extensions might wish to transform "1000" into "100+" or some - // other short string. Getting back the empty string will cause - // nothing to be drawn and us to return early. - nsresult rv; - nsCOMPtr os - (do_GetService("@mozilla.org/observer-service;1", &rv)); - if (NS_FAILED(rv)) - { - RestoreDockIcon(); - return rv; - } - - nsCOMPtr str - (do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - { - RestoreDockIcon(); - return rv; - } - - nsAutoString total; - total.AppendInt(unreadCount); - str->SetData(total); - os->NotifyObservers(str, "before-unread-count-display", - total.get()); - nsAutoString badgeString; - str->GetData(badgeString); - if (badgeString.IsEmpty()) - { - RestoreDockIcon(); - return NS_OK; - } - - id tile = [[NSApplication sharedApplication] dockTile]; - [tile setBadgeLabel:[NSString stringWithFormat:@"%S", (const unichar*)badgeString.get()]]; - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldFlag, uint32_t newFlag) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemAdded(nsIMsgFolder *, nsISupports *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemBoolPropertyChanged(nsIMsgFolder *aItem, - nsIAtom *aProperty, - bool aOldValue, - bool aNewValue) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemEvent(nsIMsgFolder *, nsIAtom *) -{ - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::GetNewMailAuthors(nsIMsgFolder* aFolder, - nsString& aAuthors, - int32_t aNewCount, - int32_t* aNotDisplayed) -{ - // Get a list of names or email addresses for the folder's authors - // with new mail. Note that we only process the most recent "new" - // mail (aNewCount), working from most recently added. Duplicates - // are removed, and names are displayed to a set limit - // (kMaxDisplayCount) with the remaining count being returned in - // aNotDisplayed. Extension developers can listen for - // "newmail-notification-requested" and then make a decision about - // including a given author or not. As a result, it is possible that - // the resulting length of aAuthors will be 0. - nsCOMPtr db; - nsresult rv = aFolder->GetMsgDatabase(getter_AddRefs(db)); - uint32_t numNewKeys = 0; - if (NS_SUCCEEDED(rv) && db) - { - nsCOMPtr os = - do_GetService("@mozilla.org/observer-service;1", &rv); - NS_ENSURE_SUCCESS(rv, rv); - - // Get proper l10n list separator -- ", " in English - nsCOMPtr bundle; - GetStringBundle(getter_AddRefs(bundle)); - if (!bundle) - return NS_ERROR_FAILURE; - - uint32_t *newMessageKeys; - rv = db->GetNewList(&numNewKeys, &newMessageKeys); - if (NS_SUCCEEDED(rv)) - { - nsString listSeparator; - bundle->GetStringFromName(u"macBiffNotification_separator", getter_Copies(listSeparator)); - - int32_t displayed = 0; - for (int32_t i = numNewKeys - 1; i >= 0; i--, aNewCount--) - { - if (0 == aNewCount || displayed == kMaxDisplayCount) - break; - - nsCOMPtr hdr; - rv = db->GetMsgHdrForKey(newMessageKeys[i], - getter_AddRefs(hdr)); - if (NS_SUCCEEDED(rv) && hdr) - { - nsString author; - rv = hdr->GetMime2DecodedAuthor(author); - if (NS_FAILED(rv)) - continue; - - nsString name; - ExtractName(DecodedHeader(author), name); - - // Give extensions a chance to suppress notifications for this author - nsCOMPtr notify = - do_CreateInstance(NS_SUPPORTS_PRBOOL_CONTRACTID); - - notify->SetData(true); - os->NotifyObservers(notify, "newmail-notification-requested", - author.get()); - - bool includeSender; - notify->GetData(&includeSender); - - // Don't add unwanted or duplicate names - if (includeSender && aAuthors.Find(name, true) == -1) - { - if (displayed > 0) - aAuthors.Append(listSeparator); - aAuthors.Append(name); - displayed++; - } - } - } - } - NS_Free(newMessageKeys); - } - *aNotDisplayed = aNewCount; - return rv; -} - -nsresult -nsMessengerOSXIntegration::GetFirstFolderWithNewMail(nsIMsgFolder* aFolder, nsCString& aFolderURI) -{ - // Find the subfolder in aFolder with new mail and return the folderURI - if (aFolder) - { - nsCOMPtr msgFolder; - // enumerate over the folders under this root folder till we find one with new mail.... - nsCOMPtr allFolders; - nsresult rv = aFolder->GetDescendants(getter_AddRefs(allFolders)); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr enumerator; - rv = allFolders->Enumerate(getter_AddRefs(enumerator)); - if (NS_SUCCEEDED(rv) && enumerator) - { - nsCOMPtr supports; - int32_t numNewMessages = 0; - bool hasMore = false; - while (NS_SUCCEEDED(enumerator->HasMoreElements(&hasMore)) && hasMore) - { - rv = enumerator->GetNext(getter_AddRefs(supports)); - if (NS_SUCCEEDED(rv) && supports) - { - msgFolder = do_QueryInterface(supports, &rv); - if (msgFolder) - { - numNewMessages = 0; - msgFolder->GetNumNewMessages(false, &numNewMessages); - if (numNewMessages) - break; // kick out of the while loop - } - } // if we have a folder - } // if we have more potential folders to enumerate - } // if enumerator - - if (msgFolder) - msgFolder->GetURI(aFolderURI); - } - - return NS_OK; -} - -/* - * Method implementations for mozINewMailListener - */ -NS_IMETHODIMP -nsMessengerOSXIntegration::OnCountChanged(uint32_t count) -{ - mUnreadTotal = count; - BadgeDockIcon(); - return NS_OK; -} diff --git a/mailnews/build/moz.build b/mailnews/build/moz.build index 9620e8f3d..9561fd33d 100644 --- a/mailnews/build/moz.build +++ b/mailnews/build/moz.build @@ -35,10 +35,6 @@ if CONFIG['OS_ARCH'] == 'WINNT': else: OS_LIBS += CONFIG['MOZ_ZLIB_LIBS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - OS_LIBS += CONFIG['TK_LIBS'] - OS_LIBS += ['-framework Cocoa'] - LOCAL_INCLUDES += [ '/mailnews/addrbook/src', '/mailnews/base/search/src', diff --git a/mailnews/compose/src/moz.build b/mailnews/compose/src/moz.build index dcb9960a6..831a0340f 100644 --- a/mailnews/compose/src/moz.build +++ b/mailnews/compose/src/moz.build @@ -35,16 +35,6 @@ SOURCES += [ 'nsURLFetcher.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'nsMsgAppleDoubleEncode.cpp', - 'nsMsgAppleEncode.cpp', - ] - EXPORTS += [ - 'nsMsgAppleCodes.h', - 'nsMsgAppleDouble.h', - ] - EXTRA_COMPONENTS += [ 'nsSMTPProtocolHandler.js', 'nsSMTPProtocolHandler.manifest', diff --git a/mailnews/compose/src/nsMsgAppleCodes.h b/mailnews/compose/src/nsMsgAppleCodes.h deleted file mode 100644 index d8ca2f327..000000000 --- a/mailnews/compose/src/nsMsgAppleCodes.h +++ /dev/null @@ -1,106 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* -** AD_Codes.h -** -** --------------- -** -** Head file for Apple Decode/Encode essential codes. -** -** -*/ - -#ifndef ad_codes_h -#define ad_codes_h - -/* -** applefile definitions used -*/ -#if PRAGMA_STRUCT_ALIGN - #pragma options align=mac68k -#endif - -#define APPLESINGLE_MAGIC 0x00051600L -#define APPLEDOUBLE_MAGIC 0x00051607L -#define VERSION 0x00020000 - -#define NUM_ENTRIES 6 - -#define ENT_DFORK 1L -#define ENT_RFORK 2L -#define ENT_NAME 3L -#define ENT_COMMENT 4L -#define ENT_DATES 8L -#define ENT_FINFO 9L -#define CONVERT_TIME 1265437696L - -/* -** data type used in the encoder/decoder. -*/ -typedef struct ap_header -{ - int32_t magic; - int32_t version; - char fill[16]; - int16_t entries; - -} ap_header; - -typedef struct ap_entry -{ - int32_t id; - int32_t offset; - int32_t length; - -} ap_entry; - -typedef struct ap_dates -{ - int32_t create, modify, backup, access; - -} ap_dates; - -typedef struct myFInfo /* the mac FInfo structure for the cross platform. */ -{ - int32_t fdType, fdCreator; - int16_t fdFlags; - int32_t fdLocation; /* it really should be a pointer, but just a place-holder */ - int16_t fdFldr; - -} myFInfo; - -PR_BEGIN_EXTERN_C -/* -** string utils. -*/ -int write_stream(appledouble_encode_object *p_ap_encode_obj, const char *s,int len); - -int fill_apple_mime_header(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_file_infor(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_header(appledouble_encode_object* p_ap_encode_obj, bool firstTime); -int ap_encode_data( appledouble_encode_object* p_ap_encode_obj, bool firstTime); - -/* -** the prototypes for the ap_decoder. -*/ -int fetch_a_line(appledouble_decode_object* p_ap_decode_obj, char *buff); -int ParseFileHeader(appledouble_decode_object* p_ap_decode_obj); -int ap_seek_part_start(appledouble_decode_object* p_ap_decode_obj); -void parse_param(char *p, char **param, char**define, char **np); -int ap_seek_to_boundary(appledouble_decode_object* p_ap_decode_obj, bool firstime); -int ap_parse_header(appledouble_decode_object* p_ap_decode_obj,bool firstime); -int ap_decode_file_infor(appledouble_decode_object* p_ap_decode_obj); -int ap_decode_process_header(appledouble_decode_object* p_ap_decode_obj, bool firstime); -int ap_decode_process_data( appledouble_decode_object* p_ap_decode_obj, bool firstime); - -PR_END_EXTERN_C - -#if PRAGMA_STRUCT_ALIGN - #pragma options align=reset -#endif - -#endif /* ad_codes_h */ diff --git a/mailnews/compose/src/nsMsgAppleDouble.h b/mailnews/compose/src/nsMsgAppleDouble.h deleted file mode 100644 index f4ae934ad..000000000 --- a/mailnews/compose/src/nsMsgAppleDouble.h +++ /dev/null @@ -1,207 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* -* AppleDouble.h -* ------------- -* -* The header file for a stream based apple single/double encodor/decodor. -* -* 2aug95 mym -* -*/ - - -#ifndef AppleDouble_h -#define AppleDouble_h - -#include "msgCore.h" -#include "nsComposeStrings.h" -#include "nsIOutputStream.h" -#include "nsCOMPtr.h" - -#include - -#define NOERR 0 -#define errDone 1 - /* Done with current operation. */ -#define errEOB 2 - /* End of a buffer. */ -#define errEOP 3 - /* End of a Part. */ - - -#define errFileOpen NS_ERROR_GET_CODE(NS_MSG_UNABLE_TO_OPEN_TMP_FILE) -#define errFileWrite -202 /*Error writing temporary file.*/ -#define errUsrCancel -2 /*MK_INTERRUPTED */ -#define errDecoding -1 - -/* -** The envirment block data type. -*/ -enum -{ - kInit, - kDoingHeaderPortion, - kDoneHeaderPortion, - kDoingDataPortion, - kDoneDataPortion -}; - -typedef struct _appledouble_encode_object -{ - char fname[256]; - FSIORefNum fileId; /* the id for the open file (data/resource fork) */ - - int state; - int text_file_type; /* if the file has a text file type with it. */ - char *boundary; /* the boundary string. */ - - int status; /* the error code if anyerror happens. */ - char b_overflow[200]; - int s_overflow; - - int state64; /* the left over state of base64 enocding */ - int ct; /* the character count of base64 encoding */ - int c1, c2; /* the left of the last base64 encoding */ - - char *outbuff; /* the outbuff by the caller. */ - int s_outbuff; /* the size of the buffer. */ - int pos_outbuff; /* the offset in the current buffer. */ - -} appledouble_encode_object; - -/* The possible content transfer encodings */ - -enum -{ - kEncodeNone, - kEncodeQP, - kEncodeBase64, - kEncodeUU -}; - -enum -{ - kGeneralMine, - kAppleDouble, - kAppleSingle -}; - -enum -{ - kInline, - kDontCare -}; - -enum -{ - kHeaderPortion, - kDataPortion -}; - -/* the decode states. */ -enum -{ - kBeginParseHeader = 3, - kParsingHeader, - kBeginSeekBoundary, - kSeekingBoundary, - kBeginHeaderPortion, - kProcessingHeaderPortion, - kBeginDataPortion, - kProcessingDataPortion, - kFinishing -}; - -/* uuencode states */ -enum -{ - kWaitingForBegin = (int) 0, - kBegin, - kMainBody, - kEnd -}; - -typedef struct _appledouble_decode_object -{ - int is_binary; - int is_apple_single; /* if the object encoded is in apple single */ - int write_as_binhex; - - int messagetype; - char* boundary0; /* the boundary for the enclosure. */ - int deposition; /* the deposition. */ - int encoding; /* the encoding method. */ - int which_part; - - char fname[256]; - // nsIOFileStream *fileSpec; /* the stream for data fork work. */ - - int state; - - int rksize; /* the resource fork size count. */ - int dksize; /* the data fork size count. */ - - int status; /* the error code if anyerror happens. */ - char b_leftover[256]; - int s_leftover; - - int encode; /* the encode type of the message. */ - int state64; /* the left over state of base64 enocding */ - int left; /* the character count of base64 encoding */ - int c[4]; /* the left of the last base64 encoding */ - int uu_starts_line; /* is decoder at the start of a line? (uuencode) */ - int uu_state; /* state w/r/t the uuencode body */ - int uu_bytes_written; /* bytes written from the current tuple (uuencode) */ - int uu_line_bytes; /* encoded bytes remaining in the current line (uuencode) */ - - char *inbuff; /* the outbuff by the caller. */ - int s_inbuff; /* the size of the buffer. */ - int pos_inbuff; /* the offset in the current buffer. */ - - - nsCOMPtr tmpFile; /* the temp file to hold the decode data fork */ - /* when doing the binhex exporting. */ - nsCOMPtr tmpFileStream; /* The output File Stream */ - int32_t data_size; /* the size of the data in the tmp file. */ - -} appledouble_decode_object; - - -/* -** The protypes. -*/ - -PR_BEGIN_EXTERN_C - -int ap_encode_init(appledouble_encode_object *p_ap_encode_obj, - const char* fname, - char* separator); - -int ap_encode_next(appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32_t buff_size, - int32_t* real_size); - -int ap_encode_end(appledouble_encode_object* p_ap_encode_obj, - bool is_aborting); - -int ap_decode_init(appledouble_decode_object* p_ap_decode_obj, - bool is_apple_single, - bool write_as_bin_hex, - void *closure); - -int ap_decode_next(appledouble_decode_object* p_ap_decode_obj, - char *in_buff, - int32_t buff_size); - -int ap_decode_end(appledouble_decode_object* p_ap_decode_obj, - bool is_aborting); - -PR_END_EXTERN_C - -#endif diff --git a/mailnews/compose/src/nsMsgAppleDoubleEncode.cpp b/mailnews/compose/src/nsMsgAppleDoubleEncode.cpp deleted file mode 100644 index 4d7178123..000000000 --- a/mailnews/compose/src/nsMsgAppleDoubleEncode.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* -* -* apple-double.c -* -------------- -* -* The codes to do apple double encoding/decoding. -* -* 02aug95 mym created. -* -*/ -#include "nsID.h" -#include "nscore.h" -#include "nsStringGlue.h" -#include "nsMsgAppleDouble.h" -#include "nsMsgAppleCodes.h" -#include "nsMsgCompUtils.h" -#include "nsCExternalHandlerService.h" -#include "nsIMIMEService.h" -#include "nsMimeTypes.h" -#include "prmem.h" -#include "nsNetUtil.h" - - -void -MacGetFileType(nsIFile *fs, - bool *useDefault, - char **fileType, - char **encoding) -{ - if ((fs == NULL) || (fileType == NULL) || (encoding == NULL)) - return; - - bool exists = false; - fs->Exists(&exists); - if (!exists) - return; - - *useDefault = TRUE; - *fileType = NULL; - *encoding = NULL; - - nsCOMPtr macFile = do_QueryInterface(fs); - FSRef fsRef; - FSCatalogInfo catalogInfo; - OSErr err = errFileOpen; - if (NS_SUCCEEDED(macFile->GetFSRef(&fsRef))) - err = ::FSGetCatalogInfo(&fsRef, kFSCatInfoFinderInfo, &catalogInfo, nullptr, nullptr, nullptr); - - if ( (err != noErr) || (((FileInfo*)(&catalogInfo.finderInfo))->fileType == 'TEXT') ) - *fileType = strdup(APPLICATION_OCTET_STREAM); - else - { - // At this point, we should call the mime service and - // see what we can find out? - nsresult rv; - nsCOMPtr tURI; - if (NS_SUCCEEDED(NS_NewFileURI(getter_AddRefs(tURI), fs)) && tURI) - { - nsCOMPtr mimeFinder (do_GetService(NS_MIMESERVICE_CONTRACTID, &rv)); - if (NS_SUCCEEDED(rv) && mimeFinder) - { - nsAutoCString mimeType; - rv = mimeFinder->GetTypeFromURI(tURI, mimeType); - if (NS_SUCCEEDED(rv)) - { - *fileType = ToNewCString(mimeType); - return; - } - } - } - - // If we hit here, return something...default to this... - *fileType = strdup(APPLICATION_OCTET_STREAM); - } -} - -//#pragma cplusplus reset - -/* -* ap_encode_init -* -------------- -* -* Setup the encode envirment -*/ - -int ap_encode_init( appledouble_encode_object *p_ap_encode_obj, - const char *fname, - char *separator) -{ - nsCOMPtr myFile; - NS_NewNativeLocalFile(nsDependentCString(fname), true, getter_AddRefs(myFile)); - bool exists; - if (myFile && NS_SUCCEEDED(myFile->Exists(&exists)) && !exists) - return -1; - - nsCOMPtr macFile = do_QueryInterface(myFile); - nsAutoCString path; - macFile->GetNativePath(path); - - memset(p_ap_encode_obj, 0, sizeof(appledouble_encode_object)); - - /* - ** Fill out the source file inforamtion. - */ - memcpy(p_ap_encode_obj->fname, path.get(), path.Length()); - p_ap_encode_obj->fname[path.Length()] = '\0'; - - p_ap_encode_obj->boundary = strdup(separator); - return noErr; -} - -/* -** ap_encode_next -** -------------- -** -** return : -** noErr : everything is ok -** errDone : when encoding is done. -** errors : otherwise. -*/ -int ap_encode_next( - appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32_t buff_size, - int32_t* real_size) -{ - int status; - - /* - ** install the out buff now. - */ - p_ap_encode_obj->outbuff = to_buff; - p_ap_encode_obj->s_outbuff = buff_size; - p_ap_encode_obj->pos_outbuff = 0; - - /* - ** first copy the outstandind data in the overflow buff to the out buffer. - */ - if (p_ap_encode_obj->s_overflow) - { - status = write_stream(p_ap_encode_obj, - (const char*)(p_ap_encode_obj->b_overflow), - p_ap_encode_obj->s_overflow); - if (status != noErr) - return status; - - p_ap_encode_obj->s_overflow = 0; - } - - /* - ** go the next processing stage based on the current state. - */ - switch (p_ap_encode_obj->state) - { - case kInit: - /* - ** We are in the starting position, fill out the header. - */ - status = fill_apple_mime_header(p_ap_encode_obj); - if (status != noErr) - break; /* some error happens */ - - p_ap_encode_obj->state = kDoingHeaderPortion; - status = ap_encode_header(p_ap_encode_obj, true); - /* it is the first time to calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** we are done with the header, so let's go to the data port. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is first time call do data portion */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingHeaderPortion: - - status = ap_encode_header(p_ap_encode_obj, false); - /* continue with the header portion. */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** start the data portion. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is the first time calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingDataPortion: - - status = ap_encode_data(p_ap_encode_obj, false); - /* it is not the first time */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoneDataPortion: - status = errDone; /* we are really done. */ - - break; - } - - *real_size = p_ap_encode_obj->pos_outbuff; - return status; -} - -/* -** ap_encode_end -** ------------- -** -** clear the apple encoding. -*/ - -int ap_encode_end( - appledouble_encode_object *p_ap_encode_obj, - bool is_aborting) -{ - /* - ** clear up the apple doubler. - */ - if (p_ap_encode_obj == NULL) - return noErr; - - if (p_ap_encode_obj->fileId) /* close the file if it is open. */ - ::FSCloseFork(p_ap_encode_obj->fileId); - - PR_FREEIF(p_ap_encode_obj->boundary); /* the boundary string. */ - - return noErr; -} diff --git a/mailnews/compose/src/nsMsgAppleEncode.cpp b/mailnews/compose/src/nsMsgAppleEncode.cpp deleted file mode 100644 index 27e39a8cd..000000000 --- a/mailnews/compose/src/nsMsgAppleEncode.cpp +++ /dev/null @@ -1,703 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - * - * apple_double_encode.c - * --------------------- - * - * The routines doing the Apple Double Encoding. - * - * 2aug95 mym Created. - * - */ - -#include "nscore.h" -#include "nsStringGlue.h" -#include "nsMimeTypes.h" -#include "prprf.h" -#include "nsServiceManagerUtils.h" -#include "nsMsgAppleDouble.h" -#include "nsMsgAppleCodes.h" -#include "nsILocalFileMac.h" - -/* -** Local Functions prototypes. -*/ -static int output64chunk( appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads); - -static int to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size); - -static int finish64(appledouble_encode_object* p_ap_encode_obj); - - -#define BUFF_LEFT(p) ((p)->s_outbuff - (p)->pos_outbuff) - -/* -** write_stream. -*/ -int write_stream( - appledouble_encode_object *p_ap_encode_obj, - const char *out_string, - int len) -{ - if (p_ap_encode_obj->pos_outbuff + len < p_ap_encode_obj->s_outbuff) - { - memcpy(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - len); - p_ap_encode_obj->pos_outbuff += len; - return noErr; - } - else - { - /* - ** If the buff doesn't have enough space, use the overflow buffer then. - */ - int s_len = p_ap_encode_obj->s_outbuff - p_ap_encode_obj->pos_outbuff; - - memcpy(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - s_len); - memcpy(p_ap_encode_obj->b_overflow + p_ap_encode_obj->s_overflow, - out_string + s_len, - p_ap_encode_obj->s_overflow += (len - s_len)); - p_ap_encode_obj->pos_outbuff += s_len; - return errEOB; - } -} - -int fill_apple_mime_header( - appledouble_encode_object *p_ap_encode_obj) -{ - int status; - - char tmpstr[266]; - -#if 0 -// strcpy(tmpstr, "Content-Type: multipart/mixed; boundary=\"-\"\n\n---\n"); -// status = write_stream(p_ap_encode_env, -// tmpstr, -// strlen(tmpstr)); -// if (status != noErr) -// return status; - - PR_snprintf(tmpstr, sizeof(tmpstr), - "Content-Type: multipart/appledouble; boundary=\"=\"; name=\""); - status = write_stream(p_ap_encode_obj, (const char*)tmpstr, strlen(tmpstr)); - if (status != noErr) - return status; - - status = write_stream(p_ap_encode_obj, - p_ap_encode_obj->fname, - strlen(p_ap_encode_obj->fname)); - if (status != noErr) - return status; - - PR_snprintf(tmpstr, sizeof(tmpstr), - "\"\r\nContent-Disposition: inline; filename=\"%s\"\r\n\r\n\r\n--=\r\n", - p_ap_encode_obj->fname); -#endif /* 0 */ - PR_snprintf(tmpstr, sizeof(tmpstr), "--%s" CRLF, p_ap_encode_obj->boundary); - status = write_stream(p_ap_encode_obj, (const char*)tmpstr, strlen(tmpstr)); - return status; -} - -int ap_encode_file_infor( - appledouble_encode_object *p_ap_encode_obj) -{ - ap_header head; - ap_entry entries[NUM_ENTRIES]; - ap_dates dates; - short i; - long comlen; - char comment[256]; - int status; - - nsCOMPtr resFile; - NS_NewNativeLocalFile(nsDependentCString(p_ap_encode_obj->fname), true, - getter_AddRefs(resFile)); - if (!resFile) - return errFileOpen; - - FSRef ref; - nsCOMPtr macFile = do_QueryInterface(resFile); - if (NS_FAILED(macFile->GetFSRef(&ref))) - return errFileOpen; - - FSCatalogInfo catalogInfo; - if (::FSGetCatalogInfo(&ref, kFSCatInfoFinderInfo, &catalogInfo, nullptr, nullptr, nullptr) != noErr) - { - return errFileOpen; - } - - /* get a file comment, if possible */ -#if 1 - // Carbon doesn't support GetWDInfo(). (Bug 555684) - - // not sure why working directories are needed here... - comlen = 0; -#else - long procID; - procID = 0; - GetWDInfo(p_ap_encode_obj->vRefNum, &fpb->ioVRefNum, &fpb->ioDirID, &procID); - IOParam vinfo; - memset((void *) &vinfo, '\0', sizeof (vinfo)); - GetVolParmsInfoBuffer vp; - vinfo.ioCompletion = nil; - vinfo.ioVRefNum = fpb->ioVRefNum; - vinfo.ioBuffer = (Ptr) &vp; - vinfo.ioReqCount = sizeof (vp); - comlen = 0; - if (PBHGetVolParmsSync((HParmBlkPtr) &vinfo) == noErr && - ((vp.vMAttrib >> bHasDesktopMgr) & 1)) - { - DTPBRec dtp; - memset((void *) &dtp, '\0', sizeof (dtp)); - dtp.ioVRefNum = fpb->ioVRefNum; - if (PBDTGetPath(&dtp) == noErr) - { - dtp.ioCompletion = nil; - dtp.ioDTBuffer = (Ptr) comment; - dtp.ioNamePtr = fpb->ioNamePtr; - dtp.ioDirID = fpb->ioFlParID; - if (PBDTGetCommentSync(&dtp) == noErr) - comlen = dtp.ioDTActCount; - } - } -#endif /* ! 1 */ - - /* write header */ -// head.magic = dfork ? APPLESINGLE_MAGIC : APPLEDOUBLE_MAGIC; - head.magic = APPLEDOUBLE_MAGIC; /* always do apple double */ - head.version = VERSION; - memset(head.fill, '\0', sizeof (head.fill)); - head.entries = NUM_ENTRIES - 1; - status = to64(p_ap_encode_obj, - (char *) &head, - sizeof (head)); - if (status != noErr) - return status; - - /* write entry descriptors */ - nsAutoCString leafname; - macFile->GetNativeLeafName(leafname); - entries[0].offset = sizeof (head) + sizeof (ap_entry) * head.entries; - entries[0].id = ENT_NAME; - entries[0].length = leafname.Length(); - entries[1].id = ENT_FINFO; - entries[1].length = sizeof (FInfo) + sizeof (FXInfo); - entries[2].id = ENT_DATES; - entries[2].length = sizeof (ap_dates); - entries[3].id = ENT_COMMENT; - entries[3].length = comlen; - entries[4].id = ENT_RFORK; - entries[4].length = catalogInfo.rsrcLogicalSize; - entries[5].id = ENT_DFORK; - entries[5].length = catalogInfo.dataLogicalSize; - - /* correct the link in the entries. */ - for (i = 1; i < NUM_ENTRIES; ++i) - { - entries[i].offset = entries[i-1].offset + entries[i-1].length; - } - status = to64(p_ap_encode_obj, - (char *) entries, - sizeof (ap_entry) * head.entries); - if (status != noErr) - return status; - - /* write name */ - status = to64(p_ap_encode_obj, - (char *) leafname.get(), - leafname.Length()); - if (status != noErr) - return status; - - /* write finder info */ - status = to64(p_ap_encode_obj, - (char *) &catalogInfo.finderInfo, - sizeof (FInfo)); - if (status != noErr) - return status; - - status = to64(p_ap_encode_obj, - (char *) &catalogInfo.extFinderInfo, - sizeof (FXInfo)); - if (status != noErr) - return status; - - /* write dates */ - dates.create = catalogInfo.createDate.lowSeconds + CONVERT_TIME; - dates.modify = catalogInfo.contentModDate.lowSeconds + CONVERT_TIME; - dates.backup = catalogInfo.backupDate.lowSeconds + CONVERT_TIME; - dates.access = catalogInfo.accessDate.lowSeconds + CONVERT_TIME; - status = to64(p_ap_encode_obj, - (char *) &dates, - sizeof (ap_dates)); - if (status != noErr) - return status; - - /* write comment */ - if (comlen) - { - status = to64(p_ap_encode_obj, - comment, - comlen * sizeof(char)); - } - /* - ** Get some help information on deciding the file type. - */ - if (((FileInfo*)(&catalogInfo.finderInfo))->fileType == 'TEXT' || - ((FileInfo*)(&catalogInfo.finderInfo))->fileType == 'text') - { - p_ap_encode_obj->text_file_type = true; - } - - return status; -} -/* -** ap_encode_header -** -** encode the file header and the resource fork. -** -*/ -int ap_encode_header( - appledouble_encode_object* p_ap_encode_obj, - bool firstime) -{ - char rd_buff[256]; - FSIORefNum fileId; - OSErr retval = noErr; - int status; - ByteCount inCount; - - if (firstime) - { - PL_strcpy(rd_buff, - "Content-Type: application/applefile\r\nContent-Transfer-Encoding: base64\r\n\r\n"); - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - if (status != noErr) - return status; - - status = ap_encode_file_infor(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** preparing to encode the resource fork. - */ - nsCOMPtr myFile; - NS_NewNativeLocalFile(nsDependentCString(p_ap_encode_obj->fname), true, getter_AddRefs(myFile)); - if (!myFile) - return errFileOpen; - - FSRef ref; - nsCOMPtr macFile = do_QueryInterface(myFile); - if (NS_FAILED(macFile->GetFSRef(&ref))) - return errFileOpen; - - HFSUniStr255 forkName; - ::FSGetResourceForkName(&forkName); - retval = ::FSOpenFork(&ref, forkName.length, forkName.unicode, fsRdPerm, &p_ap_encode_obj->fileId); - if (retval != noErr) - return retval; - } - - fileId = p_ap_encode_obj->fileId; - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - inCount = 0; - retval = ::FSReadFork(fileId, fsAtMark, 0, 256, rd_buff, &inCount); - if (inCount) - { - status = to64(p_ap_encode_obj, - rd_buff, - inCount); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - ::FSCloseFork(fileId); - p_ap_encode_obj->fileId = 0; - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** write out the boundary - */ - PR_snprintf(rd_buff, sizeof(rd_buff), - CRLF "--%s" CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - if (status == noErr) - status = errDone; - } - return status; -} - -#if 0 -// This is unused for now and Clang complains about that is it is ifdefed out -static void replace(char *p, int len, char frm, char to) -{ - for (; len > 0; len--, p++) - if (*p == frm) *p = to; -} -#endif - -/* Description of the various file formats and their magic numbers */ -struct magic -{ - const char *name; /* Name of the file format */ - const char *num; /* The magic number */ - int len; /* Length (0 means strlen(magicnum)) */ -}; - -/* The magic numbers of the file formats we know about */ -static struct magic magic[] = -{ - { "image/gif", "GIF", 0 }, - { "image/jpeg", "\377\330\377", 0 }, - { "video/mpeg", "\0\0\001\263", 4 }, - { "application/postscript", "%!", 0 }, -}; -static int num_magic = MOZ_ARRAY_LENGTH(magic); - -static const char *text_type = TEXT_PLAIN; /* the text file type. */ -static const char *default_type = APPLICATION_OCTET_STREAM; - - -/* - * Determins the format of the file "inputf". The name - * of the file format (or NULL on error) is returned. - */ -static const char *magic_look(char *inbuff, int numread) -{ - int i, j; - - for (i=0; i= magic[i].len) - { - for (j=0; j resFile; - NS_NewNativeLocalFile(nsDependentCString(p_ap_encode_obj->fname), true, - getter_AddRefs(resFile)); - if (!resFile) - return errFileOpen; - - FSRef ref; - nsCOMPtr macFile = do_QueryInterface(resFile); - if (NS_FAILED(macFile->GetFSRef(&ref))) - return errFileOpen; - - HFSUniStr255 forkName; - ::FSGetDataForkName(&forkName); - retval = ::FSOpenFork(&ref, forkName.length, forkName.unicode, fsRdPerm, &fileId); - if (retval != noErr) - return retval; - - p_ap_encode_obj->fileId = fileId; - - - if (!p_ap_encode_obj->text_file_type) - { - /* - ** do a smart check for the file type. - */ - in_count = 0; - retval = ::FSReadFork(fileId, fsFromStart, 0, 256, rd_buff, &in_count); - magic_type = magic_look(rd_buff, in_count); - - /* don't forget to rewind the index to start point. */ - ::FSSetForkPosition(fileId, fsFromStart, 0); - /* and reset retVal just in case... */ - if (retval == eofErr) - retval = noErr; - } - else - { - magic_type = text_type; /* we already know it is a text type. */ - } - - /* - ** the data portion header information. - */ - nsAutoCString leafName; - resFile->GetNativeLeafName(leafName); - PR_snprintf(rd_buff, sizeof(rd_buff), - "Content-Type: %s; name=\"%s\"" CRLF "Content-Transfer-Encoding: base64" CRLF "Content-Disposition: inline; filename=\"%s\"" CRLF CRLF, - magic_type, - leafName.get(), - leafName.get()); - - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - if (status != noErr) - return status; - } - - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - in_count = 0; - retval = ::FSReadFork(p_ap_encode_obj->fileId, fsAtMark, 0, 256, rd_buff, &in_count); - if (in_count) - { -#if 0 -/* replace(rd_buff, in_count, '\r', '\n'); */ -#endif -/* ** may be need to do character set conversion here for localization. ** */ - status = to64(p_ap_encode_obj, - rd_buff, - in_count); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - ::FSCloseFork(p_ap_encode_obj->fileId); - p_ap_encode_obj->fileId = 0; - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* write out the boundary */ - - PR_snprintf(rd_buff, sizeof(rd_buff), - CRLF "--%s--" CRLF CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - - if (status == noErr) - status = errDone; - } - return status; -} - -static char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -/* -** convert the stream in the inbuff to 64 format and put it in the out buff. -** To make the life easier, the caller will responcable of the cheking of the outbuff's bundary. -*/ -static int -to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size) -{ - int status; - int c1, c2, c3, ct; - unsigned char *inbuff = (unsigned char*)p; - - ct = p_ap_encode_obj->ct; /* the char count left last time. */ - - /* - ** resume the left state of the last conversion. - */ - switch (p_ap_encode_obj->state64) - { - case 0: - p_ap_encode_obj->c1 = c1 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 1; - return noErr; - } - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 1: - c1 = p_ap_encode_obj->c1; - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 2: - c1 = p_ap_encode_obj->c1; - c2 = p_ap_encode_obj->c2; - c3 = *inbuff ++; --in_size; - break; - } - - while (in_size >= 0) - { - status = output64chunk(p_ap_encode_obj, - c1, - c2, - c3, - 0); - if (status != noErr) - return status; - - ct += 4; - if (ct > 71) - { - status = write_stream(p_ap_encode_obj, - CRLF, - 2); - if (status != noErr) - return status; - - ct = 0; - } - - if (in_size <= 0) - { - p_ap_encode_obj->state64 = 0; - break; - } - - c1 = (int)*inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->state64 = 1; - break; - } - c2 = *inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->c2 = c2; - p_ap_encode_obj->state64 = 2; - break; - } - c3 = *inbuff++; - in_size--; - } - p_ap_encode_obj->ct = ct; - return status; -} - -/* -** clear the left base64 encodes. -*/ -static int -finish64(appledouble_encode_object* p_ap_encode_obj) -{ - int status; - - switch (p_ap_encode_obj->state64) - { - case 0: - break; - case 1: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - 0, - 0, - 2); - break; - case 2: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - p_ap_encode_obj->c2, - 0, - 1); - break; - } - status = write_stream(p_ap_encode_obj, CRLF, 2); - p_ap_encode_obj->state64 = 0; - p_ap_encode_obj->ct = 0; - return status; -} - -static int output64chunk( - appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads) -{ - char tmpstr[32]; - char *p = tmpstr; - - *p++ = basis_64[c1>>2]; - *p++ = basis_64[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)]; - if (pads == 2) - { - *p++ = '='; - *p++ = '='; - } - else if (pads) - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = '='; - } - else - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = basis_64[c3 & 0x3F]; - } - return write_stream(p_ap_encode_obj, (const char*) tmpstr, p-tmpstr); -} diff --git a/mailnews/import/build/moz.build b/mailnews/import/build/moz.build index e8ac0751f..58814a694 100644 --- a/mailnews/import/build/moz.build +++ b/mailnews/import/build/moz.build @@ -35,13 +35,6 @@ LOCAL_INCLUDES += [ '../vcard/src', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '../applemail/src', - ] - OS_LIBS += CONFIG['TK_LIBS'] - OS_LIBS += ['-framework Cocoa'] - if CONFIG['OS_ARCH'] == 'WINNT': LOCAL_INCLUDES += [ ] diff --git a/media/libcubeb/src/cubeb_osx_run_loop.c b/media/libcubeb/src/cubeb_osx_run_loop.c deleted file mode 100644 index 0ba953656..000000000 --- a/media/libcubeb/src/cubeb_osx_run_loop.c +++ /dev/null @@ -1,11 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "OSXRunLoopSingleton.h" - -void cubeb_set_coreaudio_notification_runloop() -{ - mozilla_set_coreaudio_notification_runloop_if_needed(); -} diff --git a/media/libcubeb/src/cubeb_osx_run_loop.h b/media/libcubeb/src/cubeb_osx_run_loop.h deleted file mode 100644 index 78cd68d09..000000000 --- a/media/libcubeb/src/cubeb_osx_run_loop.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright © 2014 Mozilla Foundation - * - * This program is made available under an ISC-style license. See the - * accompanying file LICENSE for details. - */ - -/* On OSX 10.6 and after, the notification callbacks from the audio hardware are - * called on the main thread. Setting the kAudioHardwarePropertyRunLoop property - * to null tells the OSX to use a separate thread for that. - * - * This has to be called only once per process, so it is in a separate header - * for easy integration in other code bases. */ -#if defined(__cplusplus) -extern "C" { -#endif - -void cubeb_set_coreaudio_notification_runloop(); - -#if defined(__cplusplus) -} -#endif diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build index 65aaf7256..c21cc873d 100644 --- a/media/libcubeb/src/moz.build +++ b/media/libcubeb/src/moz.build @@ -55,10 +55,6 @@ if CONFIG['OS_TARGET'] == 'Darwin': 'cubeb_audiounit.cpp', 'cubeb_resampler.cpp' ] - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'cubeb_osx_run_loop.c', - ] DEFINES['USE_AUDIOUNIT'] = True if CONFIG['OS_TARGET'] == 'WINNT': diff --git a/netwerk/base/NetworkInfoServiceCocoa.cpp b/netwerk/base/NetworkInfoServiceCocoa.cpp deleted file mode 100644 index cdfa8e5c9..000000000 --- a/netwerk/base/NetworkInfoServiceCocoa.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include -#include -#include -#include -#include -#include - -#include "mozilla/DebugOnly.h" -#include "mozilla/ScopeExit.h" - -#include "NetworkInfoServiceImpl.h" - -namespace mozilla { -namespace net { - -static nsresult -ListInterfaceAddresses(int aFd, const char* aIface, AddrMapType& aAddrMap); - -nsresult -DoListAddresses(AddrMapType& aAddrMap) -{ - int fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd < 0) { - return NS_ERROR_FAILURE; - } - - auto autoCloseSocket = MakeScopeExit([&] { - close(fd); - }); - - struct ifconf ifconf; - /* 16k of space should be enough to list all interfaces. Worst case, if it's - * not then we will error out and fail to list addresses. This should only - * happen on pathological machines with way too many interfaces. - */ - char buf[16384]; - - ifconf.ifc_len = sizeof(buf); - ifconf.ifc_buf = buf; - if (ioctl(fd, SIOCGIFCONF, &ifconf) != 0) { - return NS_ERROR_FAILURE; - } - - struct ifreq* ifreq = ifconf.ifc_req; - int i = 0; - while (i < ifconf.ifc_len) { - size_t len = IFNAMSIZ + ifreq->ifr_addr.sa_len; - - DebugOnly rv = - ListInterfaceAddresses(fd, ifreq->ifr_name, aAddrMap); - NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "ListInterfaceAddresses failed"); - - ifreq = (struct ifreq*) ((char*)ifreq + len); - i += len; - } - - autoCloseSocket.release(); - return NS_OK; -} - -static nsresult -ListInterfaceAddresses(int aFd, const char* aInterface, AddrMapType& aAddrMap) -{ - struct ifreq ifreq; - memset(&ifreq, 0, sizeof(struct ifreq)); - strncpy(ifreq.ifr_name, aInterface, IFNAMSIZ - 1); - if (ioctl(aFd, SIOCGIFADDR, &ifreq) != 0) { - return NS_ERROR_FAILURE; - } - - char host[128]; - int family; - switch(family=ifreq.ifr_addr.sa_family) { - case AF_INET: - case AF_INET6: - getnameinfo(&ifreq.ifr_addr, sizeof(ifreq.ifr_addr), host, sizeof(host), 0, 0, NI_NUMERICHOST); - break; - case AF_UNSPEC: - return NS_OK; - default: - // Unknown family. - return NS_OK; - } - - nsCString ifaceStr; - ifaceStr.AssignASCII(aInterface); - - nsCString addrStr; - addrStr.AssignASCII(host); - - aAddrMap.Put(ifaceStr, addrStr); - - return NS_OK; -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/base/moz.build b/netwerk/base/moz.build index 1659299f7..3ec17b2b2 100644 --- a/netwerk/base/moz.build +++ b/netwerk/base/moz.build @@ -257,10 +257,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': 'nsURLHelperWin.cpp', 'ShutdownLayer.cpp', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'nsURLHelperOSX.cpp', - ] else: SOURCES += [ 'nsURLHelperUnix.cpp', @@ -272,11 +268,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': 'NetworkInfoServiceWindows.cpp', 'nsNetworkInfoService.cpp', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'NetworkInfoServiceCocoa.cpp', - 'nsNetworkInfoService.cpp', - ] elif CONFIG['OS_ARCH'] == 'Linux': SOURCES += [ 'NetworkInfoServiceLinux.cpp', diff --git a/netwerk/base/nsURLHelperOSX.cpp b/netwerk/base/nsURLHelperOSX.cpp deleted file mode 100644 index bcc0b257f..000000000 --- a/netwerk/base/nsURLHelperOSX.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Mac OS X-specific local file uri parsing */ -#include "nsURLHelper.h" -#include "nsEscape.h" -#include "nsIFile.h" -#include "nsTArray.h" -#include "nsReadableUtils.h" -#include - -static nsTArray *gVolumeList = nullptr; - -static bool pathBeginsWithVolName(const nsACString& path, nsACString& firstPathComponent) -{ - // Return whether the 1st path component in path (escaped) is equal to the name - // of a mounted volume. Return the 1st path component (unescaped) in any case. - // This needs to be done as quickly as possible, so we cache a list of volume names. - // XXX Register an event handler to detect drives being mounted/unmounted? - - if (!gVolumeList) { - gVolumeList = new nsTArray; - if (!gVolumeList) { - return false; // out of memory - } - } - - // Cache a list of volume names - if (!gVolumeList->Length()) { - OSErr err; - ItemCount volumeIndex = 1; - - do { - HFSUniStr255 volName; - FSRef rootDirectory; - err = ::FSGetVolumeInfo(0, volumeIndex, nullptr, kFSVolInfoNone, nullptr, - &volName, &rootDirectory); - if (err == noErr) { - NS_ConvertUTF16toUTF8 volNameStr(Substring((char16_t *)volName.unicode, - (char16_t *)volName.unicode + volName.length)); - gVolumeList->AppendElement(volNameStr); - volumeIndex++; - } - } while (err == noErr); - } - - // Extract the first component of the path - nsACString::const_iterator start; - path.BeginReading(start); - start.advance(1); // path begins with '/' - nsACString::const_iterator directory_end; - path.EndReading(directory_end); - nsACString::const_iterator component_end(start); - FindCharInReadable('/', component_end, directory_end); - - nsAutoCString flatComponent((Substring(start, component_end))); - NS_UnescapeURL(flatComponent); - int32_t foundIndex = gVolumeList->IndexOf(flatComponent); - firstPathComponent = flatComponent; - return (foundIndex != -1); -} - -void -net_ShutdownURLHelperOSX() -{ - delete gVolumeList; - gVolumeList = nullptr; -} - -static nsresult convertHFSPathtoPOSIX(const nsACString& hfsPath, nsACString& posixPath) -{ - // Use CFURL to do the conversion. We don't want to do this by simply - // using SwapSlashColon - we need the charset mapped from MacRoman - // to UTF-8, and we need "/Volumes" (or whatever - Apple says this is subject to change) - // prepended if the path is not on the boot drive. - - CFStringRef pathStrRef = CFStringCreateWithCString(nullptr, - PromiseFlatCString(hfsPath).get(), - kCFStringEncodingMacRoman); - if (!pathStrRef) - return NS_ERROR_FAILURE; - - nsresult rv = NS_ERROR_FAILURE; - CFURLRef urlRef = CFURLCreateWithFileSystemPath(nullptr, - pathStrRef, kCFURLHFSPathStyle, true); - if (urlRef) { - UInt8 pathBuf[PATH_MAX]; - if (CFURLGetFileSystemRepresentation(urlRef, true, pathBuf, sizeof(pathBuf))) { - posixPath = (char *)pathBuf; - rv = NS_OK; - } - } - CFRelease(pathStrRef); - if (urlRef) - CFRelease(urlRef); - return rv; -} - -static void SwapSlashColon(char *s) -{ - while (*s) { - if (*s == '/') - *s = ':'; - else if (*s == ':') - *s = '/'; - s++; - } -} - -nsresult -net_GetURLSpecFromActualFile(nsIFile *aFile, nsACString &result) -{ - // NOTE: This is identical to the implementation in nsURLHelperUnix.cpp - - nsresult rv; - nsAutoCString ePath; - - // construct URL spec from native file path - rv = aFile->GetNativePath(ePath); - if (NS_FAILED(rv)) - return rv; - - nsAutoCString escPath; - NS_NAMED_LITERAL_CSTRING(prefix, "file://"); - - // Escape the path with the directory mask - if (NS_EscapeURL(ePath.get(), ePath.Length(), esc_Directory+esc_Forced, escPath)) - escPath.Insert(prefix, 0); - else - escPath.Assign(prefix + ePath); - - // esc_Directory does not escape the semicolons, so if a filename - // contains semicolons we need to manually escape them. - // This replacement should be removed in bug #473280 - escPath.ReplaceSubstring(";", "%3b"); - - result = escPath; - return NS_OK; -} - -nsresult -net_GetFileFromURLSpec(const nsACString &aURL, nsIFile **result) -{ - // NOTE: See also the implementation in nsURLHelperUnix.cpp - // This matches it except for the HFS path handling. - - nsresult rv; - - nsCOMPtr localFile; - rv = NS_NewNativeLocalFile(EmptyCString(), true, getter_AddRefs(localFile)); - if (NS_FAILED(rv)) - return rv; - - nsAutoCString directory, fileBaseName, fileExtension, path; - bool bHFSPath = false; - - rv = net_ParseFileURL(aURL, directory, fileBaseName, fileExtension); - if (NS_FAILED(rv)) - return rv; - - if (!directory.IsEmpty()) { - NS_EscapeURL(directory, esc_Directory|esc_AlwaysCopy, path); - - // The canonical form of file URLs on OSX use POSIX paths: - // file:///path-name. - // But, we still encounter file URLs that use HFS paths: - // file:///volume-name/path-name - // Determine that here and normalize HFS paths to POSIX. - nsAutoCString possibleVolName; - if (pathBeginsWithVolName(directory, possibleVolName)) { - // Though we know it begins with a volume name, it could still - // be a valid POSIX path if the boot drive is named "Mac HD" - // and there is a directory "Mac HD" at its root. If such a - // directory doesn't exist, we'll assume this is an HFS path. - FSRef testRef; - possibleVolName.Insert("/", 0); - if (::FSPathMakeRef((UInt8*)possibleVolName.get(), &testRef, nullptr) != noErr) - bHFSPath = true; - } - - if (bHFSPath) { - // "%2F"s need to become slashes, while all other slashes need to - // become colons. If we start out by changing "%2F"s to colons, we - // can reply on SwapSlashColon() to do what we need - path.ReplaceSubstring("%2F", ":"); - path.Cut(0, 1); // directory begins with '/' - SwapSlashColon((char *)path.get()); - // At this point, path is an HFS path made using the same - // algorithm as nsURLHelperMac. We'll convert to POSIX below. - } - } - if (!fileBaseName.IsEmpty()) - NS_EscapeURL(fileBaseName, esc_FileBaseName|esc_AlwaysCopy, path); - if (!fileExtension.IsEmpty()) { - path += '.'; - NS_EscapeURL(fileExtension, esc_FileExtension|esc_AlwaysCopy, path); - } - - NS_UnescapeURL(path); - if (path.Length() != strlen(path.get())) - return NS_ERROR_FILE_INVALID_PATH; - - if (bHFSPath) - convertHFSPathtoPOSIX(path, path); - - // assuming path is encoded in the native charset - rv = localFile->InitWithNativePath(path); - if (NS_FAILED(rv)) - return rv; - - localFile.forget(result); - return NS_OK; -} diff --git a/netwerk/build/moz.build b/netwerk/build/moz.build index ebafda48b..7c8416b9a 100644 --- a/netwerk/build/moz.build +++ b/netwerk/build/moz.build @@ -36,12 +36,7 @@ if CONFIG['OS_ARCH'] == 'WINNT': '/netwerk/system/win32', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/netwerk/system/mac', - ] - -elif CONFIG['OS_ARCH'] == 'Linux': +if CONFIG['OS_ARCH'] == 'Linux': LOCAL_INCLUDES += [ '/netwerk/system/linux', ] diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp b/netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp deleted file mode 100644 index 72b557774..000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp +++ /dev/null @@ -1,779 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MDNSResponderOperator.h" -#include "MDNSResponderReply.h" -#include "mozilla/EndianUtils.h" -#include "mozilla/Logging.h" -#include "mozilla/ScopeExit.h" -#include "mozilla/Unused.h" -#include "nsComponentManagerUtils.h" -#include "nsCOMPtr.h" -#include "nsDebug.h" -#include "nsDNSServiceInfo.h" -#include "nsHashPropertyBag.h" -#include "nsIProperty.h" -#include "nsISimpleEnumerator.h" -#include "nsIVariant.h" -#include "nsServiceManagerUtils.h" -#include "nsNetAddr.h" -#include "nsNetCID.h" -#include "nsSocketTransportService2.h" -#include "nsThreadUtils.h" -#include "nsXPCOMCID.h" -#include "private/pprio.h" - -#include "nsASocketHandler.h" - -namespace mozilla { -namespace net { - -static LazyLogModule gMDNSLog("MDNSResponderOperator"); -#undef LOG_I -#define LOG_I(...) MOZ_LOG(mozilla::net::gMDNSLog, mozilla::LogLevel::Debug, (__VA_ARGS__)) -#undef LOG_E -#define LOG_E(...) MOZ_LOG(mozilla::net::gMDNSLog, mozilla::LogLevel::Error, (__VA_ARGS__)) - -class MDNSResponderOperator::ServiceWatcher final - : public nsASocketHandler -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - - // nsASocketHandler methods - virtual void OnSocketReady(PRFileDesc* fd, int16_t outFlags) override - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - MOZ_ASSERT(fd == mFD); - - if (outFlags & (PR_POLL_ERR | PR_POLL_HUP | PR_POLL_NVAL)) { - LOG_E("error polling on listening socket (%p)", fd); - mCondition = NS_ERROR_UNEXPECTED; - } - - if (!(outFlags & PR_POLL_READ)) { - return; - } - - DNSServiceProcessResult(mService); - } - - virtual void OnSocketDetached(PRFileDesc *fd) override - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - MOZ_ASSERT(mThread); - MOZ_ASSERT(fd == mFD); - - if (!mFD) { - return; - } - - // Bug 1175387: do not double close the handle here. - PR_ChangeFileDescNativeHandle(mFD, -1); - PR_Close(mFD); - mFD = nullptr; - - mThread->Dispatch(NewRunnableMethod(this, &ServiceWatcher::Deallocate), - NS_DISPATCH_NORMAL); - } - - virtual void IsLocal(bool *aIsLocal) override { *aIsLocal = true; } - - virtual void KeepWhenOffline(bool *aKeepWhenOffline) override - { - *aKeepWhenOffline = true; - } - - virtual uint64_t ByteCountSent() override { return 0; } - virtual uint64_t ByteCountReceived() override { return 0; } - - explicit ServiceWatcher(DNSServiceRef aService, - MDNSResponderOperator* aOperator) - : mThread(nullptr) - , mSts(nullptr) - , mOperatorHolder(aOperator) - , mService(aService) - , mFD(nullptr) - , mAttached(false) - { - if (!gSocketTransportService) - { - nsCOMPtr sts = - do_GetService(NS_SOCKETTRANSPORTSERVICE_CONTRACTID); - } - } - - nsresult Init() - { - MOZ_ASSERT(PR_GetCurrentThread() != gSocketThread); - mThread = NS_GetCurrentThread(); - - if (!mService) { - return NS_OK; - } - - if (!gSocketTransportService) { - return NS_ERROR_FAILURE; - } - mSts = gSocketTransportService; - - int osfd = DNSServiceRefSockFD(mService); - if (osfd == -1) { - return NS_ERROR_FAILURE; - } - - mFD = PR_ImportFile(osfd); - return PostEvent(&ServiceWatcher::OnMsgAttach); - } - - void Close() - { - MOZ_ASSERT(PR_GetCurrentThread() != gSocketThread); - - if (!gSocketTransportService) { - Deallocate(); - return; - } - - PostEvent(&ServiceWatcher::OnMsgClose); - } - -private: - ~ServiceWatcher() = default; - - void Deallocate() - { - if (mService) { - DNSServiceRefDeallocate(mService); - mService = nullptr; - } - mOperatorHolder = nullptr; - } - - nsresult PostEvent(void(ServiceWatcher::*func)(void)) - { - return gSocketTransportService->Dispatch(NewRunnableMethod(this, func), - NS_DISPATCH_NORMAL); - } - - void OnMsgClose() - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - if (NS_FAILED(mCondition)) { - return; - } - - // tear down socket. this signals the STS to detach our socket handler. - mCondition = NS_BINDING_ABORTED; - - // if we are attached, then socket transport service will call our - // OnSocketDetached method automatically. Otherwise, we have to call it - // (and thus close the socket) manually. - if (!mAttached) { - OnSocketDetached(mFD); - } - } - - void OnMsgAttach() - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - if (NS_FAILED(mCondition)) { - return; - } - - mCondition = TryAttach(); - - // if we hit an error while trying to attach then bail... - if (NS_FAILED(mCondition)) { - NS_ASSERTION(!mAttached, "should not be attached already"); - OnSocketDetached(mFD); - } - - } - - nsresult TryAttach() - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - nsresult rv; - - if (!gSocketTransportService) { - return NS_ERROR_FAILURE; - } - - // - // find out if it is going to be ok to attach another socket to the STS. - // if not then we have to wait for the STS to tell us that it is ok. - // the notification is asynchronous, which means that when we could be - // in a race to call AttachSocket once notified. for this reason, when - // we get notified, we just re-enter this function. as a result, we are - // sure to ask again before calling AttachSocket. in this way we deal - // with the race condition. though it isn't the most elegant solution, - // it is far simpler than trying to build a system that would guarantee - // FIFO ordering (which wouldn't even be that valuable IMO). see bug - // 194402 for more info. - // - if (!gSocketTransportService->CanAttachSocket()) { - nsCOMPtr event = - NewRunnableMethod(this, &ServiceWatcher::OnMsgAttach); - - nsresult rv = gSocketTransportService->NotifyWhenCanAttachSocket(event); - if (NS_FAILED(rv)) { - return rv; - } - } - - // - // ok, we can now attach our socket to the STS for polling - // - rv = gSocketTransportService->AttachSocket(mFD, this); - if (NS_FAILED(rv)) { - return rv; - } - - mAttached = true; - - // - // now, configure our poll flags for listening... - // - mPollFlags = (PR_POLL_READ | PR_POLL_EXCEPT); - - return NS_OK; - } - - nsCOMPtr mThread; - RefPtr mSts; - RefPtr mOperatorHolder; - DNSServiceRef mService; - PRFileDesc* mFD; - bool mAttached; -}; - -NS_IMPL_ISUPPORTS(MDNSResponderOperator::ServiceWatcher, nsISupports) - -MDNSResponderOperator::MDNSResponderOperator() - : mService(nullptr) - , mWatcher(nullptr) - , mThread(NS_GetCurrentThread()) - , mIsCancelled(false) -{ -} - -MDNSResponderOperator::~MDNSResponderOperator() -{ - Stop(); -} - -nsresult -MDNSResponderOperator::Start() -{ - if (mIsCancelled) { - return NS_OK; - } - - if (IsServing()) { - Stop(); - } - - return NS_OK; -} - -nsresult -MDNSResponderOperator::Stop() -{ - return ResetService(nullptr); -} - -nsresult -MDNSResponderOperator::ResetService(DNSServiceRef aService) -{ - nsresult rv; - - if (aService != mService) { - if (mWatcher) { - mWatcher->Close(); - mWatcher = nullptr; - } - - if (aService) { - RefPtr watcher = new ServiceWatcher(aService, this); - if (NS_WARN_IF(NS_FAILED(rv = watcher->Init()))) { - return rv; - } - mWatcher = watcher; - } - - mService = aService; - } - return NS_OK; -} - -BrowseOperator::BrowseOperator(const nsACString& aServiceType, - nsIDNSServiceDiscoveryListener* aListener) - : MDNSResponderOperator() - , mServiceType(aServiceType) - , mListener(aListener) -{ -} - -nsresult -BrowseOperator::Start() -{ - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = MDNSResponderOperator::Start()))) { - return rv; - } - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = DNSServiceBrowse(&service, - 0, - kDNSServiceInterfaceIndexAny, - mServiceType.get(), - nullptr, - &BrowseReplyRunnable::Reply, - this); - NS_WARNING_ASSERTION(kDNSServiceErr_NoError == err, "DNSServiceBrowse fail"); - - if (mListener) { - if (kDNSServiceErr_NoError == err) { - mListener->OnDiscoveryStarted(mServiceType); - } else { - mListener->OnStartDiscoveryFailed(mServiceType, err); - } - } - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -nsresult -BrowseOperator::Stop() -{ - bool isServing = IsServing(); - nsresult rv = MDNSResponderOperator::Stop(); - - if (isServing && mListener) { - if (NS_SUCCEEDED(rv)) { - mListener->OnDiscoveryStopped(mServiceType); - } else { - mListener->OnStopDiscoveryFailed(mServiceType, - static_cast(rv)); - } - } - - return rv; -} - -void -BrowseOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - if (NS_WARN_IF(kDNSServiceErr_NoError != aErrorCode)) { - LOG_E("BrowseOperator::Reply (%d)", aErrorCode); - if (mListener) { - mListener->OnStartDiscoveryFailed(mServiceType, aErrorCode); - } - return; - } - - if (!mListener) { return; } - nsCOMPtr info = new nsDNSServiceInfo(); - - if (NS_WARN_IF(!info)) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetServiceName(aServiceName)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetServiceType(aRegType)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetDomainName(aReplyDomain)))) { return; } - - if (aFlags & kDNSServiceFlagsAdd) { - mListener->OnServiceFound(info); - } else { - mListener->OnServiceLost(info); - } -} - -RegisterOperator::RegisterOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSRegistrationListener* aListener) - : MDNSResponderOperator() - , mServiceInfo(aServiceInfo) - , mListener(aListener) -{ -} - -nsresult -RegisterOperator::Start() -{ - nsresult rv; - - rv = MDNSResponderOperator::Start(); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - uint16_t port; - if (NS_WARN_IF(NS_FAILED(rv = mServiceInfo->GetPort(&port)))) { - return rv; - } - nsAutoCString type; - if (NS_WARN_IF(NS_FAILED(rv = mServiceInfo->GetServiceType(type)))) { - return rv; - } - - TXTRecordRef txtRecord; - char buf[TXT_BUFFER_SIZE] = { 0 }; - TXTRecordCreate(&txtRecord, TXT_BUFFER_SIZE, buf); - - nsCOMPtr attributes; - if (NS_FAILED(rv = mServiceInfo->GetAttributes(getter_AddRefs(attributes)))) { - LOG_I("register: no attributes"); - } else { - nsCOMPtr enumerator; - if (NS_WARN_IF(NS_FAILED(rv = - attributes->GetEnumerator(getter_AddRefs(enumerator))))) { - return rv; - } - - bool hasMoreElements; - while (NS_SUCCEEDED(enumerator->HasMoreElements(&hasMoreElements)) && - hasMoreElements) { - nsCOMPtr element; - MOZ_ALWAYS_SUCCEEDS(enumerator->GetNext(getter_AddRefs(element))); - nsCOMPtr property = do_QueryInterface(element); - MOZ_ASSERT(property); - - nsAutoString name; - nsCOMPtr value; - MOZ_ALWAYS_SUCCEEDS(property->GetName(name)); - MOZ_ALWAYS_SUCCEEDS(property->GetValue(getter_AddRefs(value))); - - nsAutoCString str; - if (NS_WARN_IF(NS_FAILED(value->GetAsACString(str)))) { - continue; - } - - TXTRecordSetValue(&txtRecord, - /* it's safe because key name is ASCII only. */ - NS_LossyConvertUTF16toASCII(name).get(), - str.Length(), - str.get()); - } - } - - nsAutoCString host; - nsAutoCString name; - nsAutoCString domain; - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = - DNSServiceRegister(&service, - 0, - 0, - NS_SUCCEEDED(mServiceInfo->GetServiceName(name)) ? - name.get() : nullptr, - type.get(), - NS_SUCCEEDED(mServiceInfo->GetDomainName(domain)) ? - domain.get() : nullptr, - NS_SUCCEEDED(mServiceInfo->GetHost(host)) ? - host.get() : nullptr, - NativeEndian::swapToNetworkOrder(port), - TXTRecordGetLength(&txtRecord), - TXTRecordGetBytesPtr(&txtRecord), - &RegisterReplyRunnable::Reply, - this); - NS_WARNING_ASSERTION(kDNSServiceErr_NoError == err, - "DNSServiceRegister fail"); - - TXTRecordDeallocate(&txtRecord); - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - if (mListener) { - mListener->OnRegistrationFailed(mServiceInfo, err); - } - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -nsresult -RegisterOperator::Stop() -{ - bool isServing = IsServing(); - nsresult rv = MDNSResponderOperator::Stop(); - - if (isServing && mListener) { - if (NS_SUCCEEDED(rv)) { - mListener->OnServiceUnregistered(mServiceInfo); - } else { - mListener->OnUnregistrationFailed(mServiceInfo, - static_cast(rv)); - } - } - - return rv; -} - -void -RegisterOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& aDomain) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - if (kDNSServiceErr_NoError != aErrorCode) { - LOG_E("RegisterOperator::Reply (%d)", aErrorCode); - } - - if (!mListener) { return; } - nsCOMPtr info = new nsDNSServiceInfo(mServiceInfo); - if (NS_WARN_IF(NS_FAILED(info->SetServiceName(aName)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetServiceType(aRegType)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetDomainName(aDomain)))) { return; } - - if (kDNSServiceErr_NoError == aErrorCode) { - if (aFlags & kDNSServiceFlagsAdd) { - mListener->OnServiceRegistered(info); - } else { - // If a successfully-registered name later suffers a name conflict - // or similar problem and has to be deregistered, the callback will - // be invoked with the kDNSServiceFlagsAdd flag not set. - LOG_E("RegisterOperator::Reply: deregister"); - if (NS_WARN_IF(NS_FAILED(Stop()))) { - return; - } - } - } else { - mListener->OnRegistrationFailed(info, aErrorCode); - } -} - -ResolveOperator::ResolveOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener) - : MDNSResponderOperator() - , mServiceInfo(aServiceInfo) - , mListener(aListener) -{ -} - -nsresult -ResolveOperator::Start() -{ - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = MDNSResponderOperator::Start()))) { - return rv; - } - - nsAutoCString name; - mServiceInfo->GetServiceName(name); - nsAutoCString type; - mServiceInfo->GetServiceType(type); - nsAutoCString domain; - mServiceInfo->GetDomainName(domain); - - LOG_I("Resolve: (%s), (%s), (%s)", name.get(), type.get(), domain.get()); - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = - DNSServiceResolve(&service, - 0, - kDNSServiceInterfaceIndexAny, - name.get(), - type.get(), - domain.get(), - (DNSServiceResolveReply)&ResolveReplyRunnable::Reply, - this); - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - if (mListener) { - mListener->OnResolveFailed(mServiceInfo, err); - } - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -void -ResolveOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - auto guard = MakeScopeExit([&] { - Unused << NS_WARN_IF(NS_FAILED(Stop())); - }); - - if (NS_WARN_IF(kDNSServiceErr_NoError != aErrorCode)) { - LOG_E("ResolveOperator::Reply (%d)", aErrorCode); - return; - } - - // Resolve TXT record - int count = TXTRecordGetCount(aTxtLen, aTxtRecord); - LOG_I("resolve: txt count = %d, len = %d", count, aTxtLen); - nsCOMPtr attributes = new nsHashPropertyBag(); - if (NS_WARN_IF(!attributes)) { - return; - } - if (count) { - for (int i = 0; i < count; ++i) { - char key[TXT_BUFFER_SIZE] = { '\0' }; - uint8_t vSize = 0; - const void* value = nullptr; - if (kDNSServiceErr_NoError != - TXTRecordGetItemAtIndex(aTxtLen, - aTxtRecord, - i, - TXT_BUFFER_SIZE, - key, - &vSize, - &value)) { - break; - } - - nsAutoCString str(reinterpret_cast(value), vSize); - LOG_I("resolve TXT: (%d) %s=%s", vSize, key, str.get()); - - if (NS_WARN_IF(NS_FAILED(attributes->SetPropertyAsACString( - /* it's safe to convert because key name is ASCII only. */ - NS_ConvertASCIItoUTF16(key), - str)))) { - break; - } - } - } - - if (!mListener) { return; } - nsCOMPtr info = new nsDNSServiceInfo(mServiceInfo); - if (NS_WARN_IF(NS_FAILED(info->SetHost(aHostTarget)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetPort(aPort)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetAttributes(attributes)))) { return; } - - if (kDNSServiceErr_NoError == aErrorCode) { - GetAddrInfor(info); - } - else { - mListener->OnResolveFailed(info, aErrorCode); - Unused << NS_WARN_IF(NS_FAILED(Stop())); - } -} - -void -ResolveOperator::GetAddrInfor(nsIDNSServiceInfo* aServiceInfo) -{ - RefPtr getAddreOp = new GetAddrInfoOperator(aServiceInfo, - mListener); - Unused << NS_WARN_IF(NS_FAILED(getAddreOp->Start())); -} - -GetAddrInfoOperator::GetAddrInfoOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener) - : MDNSResponderOperator() - , mServiceInfo(aServiceInfo) - , mListener(aListener) -{ -} - -nsresult -GetAddrInfoOperator::Start() -{ - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = MDNSResponderOperator::Start()))) { - return rv; - } - - nsAutoCString host; - mServiceInfo->GetHost(host); - - LOG_I("GetAddrInfo: (%s)", host.get()); - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = - DNSServiceGetAddrInfo(&service, - kDNSServiceFlagsForceMulticast, - kDNSServiceInterfaceIndexAny, - kDNSServiceProtocol_IPv4 | kDNSServiceProtocol_IPv6, - host.get(), - (DNSServiceGetAddrInfoReply)&GetAddrInfoReplyRunnable::Reply, - this); - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - if (mListener) { - mListener->OnResolveFailed(mServiceInfo, err); - } - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -void -GetAddrInfoOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const NetAddr& aAddress, - uint32_t aTTL) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - auto guard = MakeScopeExit([&] { - Unused << NS_WARN_IF(NS_FAILED(Stop())); - }); - - if (NS_WARN_IF(kDNSServiceErr_NoError != aErrorCode)) { - LOG_E("GetAddrInfoOperator::Reply (%d)", aErrorCode); - return; - } - - if (!mListener) { return; } - - NetAddr addr = aAddress; - nsCOMPtr address = new nsNetAddr(&addr); - nsCString addressStr; - if (NS_WARN_IF(NS_FAILED(address->GetAddress(addressStr)))) { return; } - - nsCOMPtr info = new nsDNSServiceInfo(mServiceInfo); - if (NS_WARN_IF(NS_FAILED(info->SetAddress(addressStr)))) { return; } - - /** - * |kDNSServiceFlagsMoreComing| means this callback will be one or more - * callback events later, so this instance should be kept alive until all - * follow-up events are processed. - */ - if (aFlags & kDNSServiceFlagsMoreComing) { - guard.release(); - } - - if (kDNSServiceErr_NoError == aErrorCode) { - mListener->OnServiceResolved(info); - } else { - mListener->OnResolveFailed(info, aErrorCode); - } -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.h b/netwerk/dns/mdns/libmdns/MDNSResponderOperator.h deleted file mode 100644 index a932baa7c..000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.h +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_netwerk_dns_mdns_libmdns_MDNSResponderOperator_h -#define mozilla_netwerk_dns_mdns_libmdns_MDNSResponderOperator_h - -#include "dns_sd.h" -#include "mozilla/Atomics.h" -#include "mozilla/RefPtr.h" -#include "nsCOMPtr.h" -#include "nsIDNSServiceDiscovery.h" -#include "nsIThread.h" -#include "nsString.h" - -namespace mozilla { -namespace net { - -class MDNSResponderOperator -{ - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MDNSResponderOperator) - -public: - MDNSResponderOperator(); - - virtual nsresult Start(); - virtual nsresult Stop(); - void Cancel() { mIsCancelled = true; } - nsIThread* GetThread() const { return mThread; } - -protected: - virtual ~MDNSResponderOperator(); - - bool IsServing() const { return mService; } - nsresult ResetService(DNSServiceRef aService); - -private: - class ServiceWatcher; - - DNSServiceRef mService; - RefPtr mWatcher; - nsCOMPtr mThread; // remember caller thread for callback - Atomic mIsCancelled; -}; - -class BrowseOperator final : public MDNSResponderOperator -{ -public: - BrowseOperator(const nsACString& aServiceType, - nsIDNSServiceDiscoveryListener* aListener); - - nsresult Start() override; - nsresult Stop() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain); - -private: - ~BrowseOperator() = default; - - nsCString mServiceType; - nsCOMPtr mListener; -}; - -class RegisterOperator final : public MDNSResponderOperator -{ - enum { TXT_BUFFER_SIZE = 256 }; - -public: - RegisterOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSRegistrationListener* aListener); - - nsresult Start() override; - nsresult Stop() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& aDomain); - -private: - ~RegisterOperator() = default; - - nsCOMPtr mServiceInfo; - nsCOMPtr mListener; -}; - -class ResolveOperator final : public MDNSResponderOperator -{ - enum { TXT_BUFFER_SIZE = 256 }; - -public: - ResolveOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener); - - nsresult Start() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord); - -private: - ~ResolveOperator() = default; - void GetAddrInfor(nsIDNSServiceInfo* aServiceInfo); - - nsCOMPtr mServiceInfo; - nsCOMPtr mListener; -}; - -union NetAddr; - -class GetAddrInfoOperator final : public MDNSResponderOperator -{ -public: - GetAddrInfoOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener); - - nsresult Start() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const NetAddr& aAddress, - uint32_t aTTL); - -private: - ~GetAddrInfoOperator() = default; - - nsCOMPtr mServiceInfo; - nsCOMPtr mListener; -}; - -} // namespace net -} // namespace mozilla - -#endif // mozilla_netwerk_dns_mdns_libmdns_MDNSResponderOperator_h diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp b/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp deleted file mode 100644 index 7aa5b3759..000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp +++ /dev/null @@ -1,302 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MDNSResponderReply.h" -#include "mozilla/EndianUtils.h" -#include "private/pprio.h" - -namespace mozilla { -namespace net { - -BrowseReplyRunnable::BrowseReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain, - BrowseOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mInterfaceIndex(aInterfaceIndex) - , mErrorCode(aErrorCode) - , mServiceName(aServiceName) - , mRegType(aRegType) - , mReplyDomain(aReplyDomain) - , mContext(aContext) -{ -} - -NS_IMETHODIMP -BrowseReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - mContext->Reply(mSdRef, - mFlags, - mInterfaceIndex, - mErrorCode, - mServiceName, - mRegType, - mReplyDomain); - return NS_OK; -} - -void -BrowseReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aServiceName, - const char* aRegType, - const char* aReplyDomain, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - BrowseOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - thread->Dispatch(new BrowseReplyRunnable(aSdRef, - aFlags, - aInterfaceIndex, - aErrorCode, - nsCString(aServiceName), - nsCString(aRegType), - nsCString(aReplyDomain), - obj), - NS_DISPATCH_NORMAL); -} - -RegisterReplyRunnable::RegisterReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& domain, - RegisterOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mErrorCode(aErrorCode) - , mName(aName) - , mRegType(aRegType) - , mDomain(domain) - , mContext(aContext) -{ -} - -NS_IMETHODIMP -RegisterReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - - mContext->Reply(mSdRef, - mFlags, - mErrorCode, - mName, - mRegType, - mDomain); - return NS_OK; -} - -void -RegisterReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const char* aName, - const char* aRegType, - const char* domain, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - RegisterOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - thread->Dispatch(new RegisterReplyRunnable(aSdRef, - aFlags, - aErrorCode, - nsCString(aName), - nsCString(aRegType), - nsCString(domain), - obj), - NS_DISPATCH_NORMAL); -} - -ResolveReplyRunnable::ResolveReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - ResolveOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mInterfaceIndex(aInterfaceIndex) - , mErrorCode(aErrorCode) - , mFullname(aFullName) - , mHosttarget(aHostTarget) - , mPort(aPort) - , mTxtLen(aTxtLen) - , mTxtRecord(new unsigned char[aTxtLen]) - , mContext(aContext) -{ - if (mTxtRecord) { - memcpy(mTxtRecord.get(), aTxtRecord, aTxtLen); - } -} - -ResolveReplyRunnable::~ResolveReplyRunnable() -{ -} - -NS_IMETHODIMP -ResolveReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - mContext->Reply(mSdRef, - mFlags, - mInterfaceIndex, - mErrorCode, - mFullname, - mHosttarget, - mPort, - mTxtLen, - mTxtRecord.get()); - return NS_OK; -} - -void -ResolveReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aFullName, - const char* aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - ResolveOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - thread->Dispatch(new ResolveReplyRunnable(aSdRef, - aFlags, - aInterfaceIndex, - aErrorCode, - nsCString(aFullName), - nsCString(aHostTarget), - NativeEndian::swapFromNetworkOrder(aPort), - aTxtLen, - aTxtRecord, - obj), - NS_DISPATCH_NORMAL); -} - -GetAddrInfoReplyRunnable::GetAddrInfoReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const mozilla::net::NetAddr& aAddress, - uint32_t aTTL, - GetAddrInfoOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mInterfaceIndex(aInterfaceIndex) - , mErrorCode(aErrorCode) - , mHostName(aHostName) - , mAddress(aAddress) - , mTTL(aTTL) - , mContext(aContext) -{ -} - -GetAddrInfoReplyRunnable::~GetAddrInfoReplyRunnable() -{ -} - -NS_IMETHODIMP -GetAddrInfoReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - mContext->Reply(mSdRef, - mFlags, - mInterfaceIndex, - mErrorCode, - mHostName, - mAddress, - mTTL); - return NS_OK; -} - -void -GetAddrInfoReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aHostName, - const struct sockaddr* aAddress, - uint32_t aTTL, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - GetAddrInfoOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - NetAddr address; - address.raw.family = aAddress->sa_family; - - static_assert(sizeof(address.raw.data) >= sizeof(aAddress->sa_data), - "size of sockaddr.sa_data is too big"); - memcpy(&address.raw.data, aAddress->sa_data, sizeof(aAddress->sa_data)); - - thread->Dispatch(new GetAddrInfoReplyRunnable(aSdRef, - aFlags, - aInterfaceIndex, - aErrorCode, - nsCString(aHostName), - address, - aTTL, - obj), - NS_DISPATCH_NORMAL); -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderReply.h b/netwerk/dns/mdns/libmdns/MDNSResponderReply.h deleted file mode 100644 index 794a585f8..000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderReply.h +++ /dev/null @@ -1,164 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_netwerk_dns_mdns_libmdns_MDNSResponderReply_h -#define mozilla_netwerk_dns_mdns_libmdns_MDNSResponderReply_h - -#include "dns_sd.h" -#include "MDNSResponderOperator.h" -#include "mozilla/UniquePtr.h" -#include "nsIThread.h" -#include "mozilla/net/DNS.h" -#include "mozilla/RefPtr.h" -#include "nsThreadUtils.h" - -namespace mozilla { -namespace net { - -class BrowseReplyRunnable final : public Runnable -{ -public: - BrowseReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain, - BrowseOperator* aContext); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aServiceName, - const char* aRegType, - const char* aReplyDomain, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - uint32_t mInterfaceIndex; - DNSServiceErrorType mErrorCode; - nsCString mServiceName; - nsCString mRegType; - nsCString mReplyDomain; - RefPtr mContext; -}; - -class RegisterReplyRunnable final : public Runnable -{ -public: - RegisterReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& aDomain, - RegisterOperator* aContext); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const char* aName, - const char* aRegType, - const char* aDomain, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - DNSServiceErrorType mErrorCode; - nsCString mName; - nsCString mRegType; - nsCString mDomain; - RefPtr mContext; -}; - -class ResolveReplyRunnable final : public Runnable -{ -public: - ResolveReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - ResolveOperator* aContext); - ~ResolveReplyRunnable(); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aFullName, - const char* aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - uint32_t mInterfaceIndex; - DNSServiceErrorType mErrorCode; - nsCString mFullname; - nsCString mHosttarget; - uint16_t mPort; - uint16_t mTxtLen; - UniquePtr mTxtRecord; - RefPtr mContext; -}; - -class GetAddrInfoReplyRunnable final : public Runnable -{ -public: - GetAddrInfoReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const mozilla::net::NetAddr& aAddress, - uint32_t aTTL, - GetAddrInfoOperator* aContext); - ~GetAddrInfoReplyRunnable(); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aHostName, - const struct sockaddr* aAddress, - uint32_t aTTL, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - uint32_t mInterfaceIndex; - DNSServiceErrorType mErrorCode; - nsCString mHostName; - mozilla::net::NetAddr mAddress; - uint32_t mTTL; - RefPtr mContext; -}; - -} // namespace net -} // namespace mozilla - - #endif // mozilla_netwerk_dns_mdns_libmdns_MDNSResponderReply_h diff --git a/netwerk/dns/mdns/libmdns/moz.build b/netwerk/dns/mdns/libmdns/moz.build index 23445756c..5a67c0611 100644 --- a/netwerk/dns/mdns/libmdns/moz.build +++ b/netwerk/dns/mdns/libmdns/moz.build @@ -3,32 +3,20 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'MDNSResponderOperator.cpp', - 'MDNSResponderReply.cpp', - 'nsDNSServiceDiscovery.cpp', - ] +EXTRA_COMPONENTS += [ + 'nsDNSServiceDiscovery.js', + 'nsDNSServiceDiscovery.manifest', +] - LOCAL_INCLUDES += [ - '/netwerk/base', - ] - -else: - EXTRA_COMPONENTS += [ - 'nsDNSServiceDiscovery.js', - 'nsDNSServiceDiscovery.manifest', - ] - - EXTRA_JS_MODULES += [ - 'fallback/DataReader.jsm', - 'fallback/DataWriter.jsm', - 'fallback/DNSPacket.jsm', - 'fallback/DNSRecord.jsm', - 'fallback/DNSResourceRecord.jsm', - 'fallback/DNSTypes.jsm', - 'fallback/MulticastDNS.jsm', - ] +EXTRA_JS_MODULES += [ + 'fallback/DataReader.jsm', + 'fallback/DataWriter.jsm', + 'fallback/DNSPacket.jsm', + 'fallback/DNSRecord.jsm', + 'fallback/DNSResourceRecord.jsm', + 'fallback/DNSTypes.jsm', + 'fallback/MulticastDNS.jsm', +] SOURCES += [ 'nsDNSServiceInfo.cpp', diff --git a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp b/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp deleted file mode 100644 index cec8033d1..000000000 --- a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsDNSServiceDiscovery.h" -#include "MDNSResponderOperator.h" -#include "nsICancelable.h" -#include "nsXULAppAPI.h" -#include "private/pprio.h" - -namespace mozilla { -namespace net { - -namespace { - -inline void -StartService() -{ - /*** STUB ***/ -} - -inline void -StopService() -{ - /*** STUB ***/ -} - -class ServiceCounter -{ -public: - static bool IsServiceRunning() - { - return !!sUseCount; - } - -private: - static uint32_t sUseCount; - -protected: - ServiceCounter() - { - MOZ_ASSERT(NS_IsMainThread()); - if (!sUseCount++) { - StartService(); - } - } - - virtual ~ServiceCounter() - { - MOZ_ASSERT(NS_IsMainThread()); - if (!--sUseCount) { - StopService(); - } - } -}; - -uint32_t ServiceCounter::sUseCount = 0; - -class DiscoveryRequest final : public nsICancelable - , private ServiceCounter -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSICANCELABLE - - explicit DiscoveryRequest(nsDNSServiceDiscovery* aService, - nsIDNSServiceDiscoveryListener* aListener); - -private: - virtual ~DiscoveryRequest() { Cancel(NS_OK); } - - RefPtr mService; - nsIDNSServiceDiscoveryListener* mListener; -}; - -NS_IMPL_ISUPPORTS(DiscoveryRequest, nsICancelable) - -DiscoveryRequest::DiscoveryRequest(nsDNSServiceDiscovery* aService, - nsIDNSServiceDiscoveryListener* aListener) - : mService(aService) - , mListener(aListener) -{ -} - -NS_IMETHODIMP -DiscoveryRequest::Cancel(nsresult aReason) -{ - if (mService) { - mService->StopDiscovery(mListener); - } - - mService = nullptr; - return NS_OK; -} - -class RegisterRequest final : public nsICancelable - , private ServiceCounter -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSICANCELABLE - - explicit RegisterRequest(nsDNSServiceDiscovery* aService, - nsIDNSRegistrationListener* aListener); - -private: - virtual ~RegisterRequest() { Cancel(NS_OK); } - - RefPtr mService; - nsIDNSRegistrationListener* mListener; -}; - -NS_IMPL_ISUPPORTS(RegisterRequest, nsICancelable) - -RegisterRequest::RegisterRequest(nsDNSServiceDiscovery* aService, - nsIDNSRegistrationListener* aListener) - : mService(aService) - , mListener(aListener) -{ -} - -NS_IMETHODIMP -RegisterRequest::Cancel(nsresult aReason) -{ - if (mService) { - mService->UnregisterService(mListener); - } - - mService = nullptr; - return NS_OK; -} - -} // namespace anonymous - -NS_IMPL_ISUPPORTS(nsDNSServiceDiscovery, nsIDNSServiceDiscovery) - -nsDNSServiceDiscovery::~nsDNSServiceDiscovery() -{ -} - -nsresult -nsDNSServiceDiscovery::Init() -{ - if (!XRE_IsParentProcess()) { - MOZ_ASSERT(false, "nsDNSServiceDiscovery can only be used in parent process"); - return NS_ERROR_FAILURE; - } - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::StartDiscovery(const nsACString& aServiceType, - nsIDNSServiceDiscoveryListener* aListener, - nsICancelable** aRetVal) -{ - MOZ_ASSERT(aRetVal); - - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = StopDiscovery(aListener)))) { - return rv; - } - - nsCOMPtr req = new DiscoveryRequest(this, aListener); - RefPtr browserOp = new BrowseOperator(aServiceType, - aListener); - if (NS_WARN_IF(NS_FAILED(rv = browserOp->Start()))) { - return rv; - } - - mDiscoveryMap.Put(aListener, browserOp); - - req.forget(aRetVal); - - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::StopDiscovery(nsIDNSServiceDiscoveryListener* aListener) -{ - nsresult rv; - - RefPtr browserOp; - if (!mDiscoveryMap.Get(aListener, getter_AddRefs(browserOp))) { - return NS_OK; - } - - browserOp->Cancel(); // cancel non-started operation - if (NS_WARN_IF(NS_FAILED(rv = browserOp->Stop()))) { - return rv; - } - - mDiscoveryMap.Remove(aListener); - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::RegisterService(nsIDNSServiceInfo* aServiceInfo, - nsIDNSRegistrationListener* aListener, - nsICancelable** aRetVal) -{ - MOZ_ASSERT(aRetVal); - - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = UnregisterService(aListener)))) { - return rv; - } - - nsCOMPtr req = new RegisterRequest(this, aListener); - RefPtr registerOp = new RegisterOperator(aServiceInfo, - aListener); - if (NS_WARN_IF(NS_FAILED(rv = registerOp->Start()))) { - return rv; - } - - mRegisterMap.Put(aListener, registerOp); - - req.forget(aRetVal); - - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::UnregisterService(nsIDNSRegistrationListener* aListener) -{ - nsresult rv; - - RefPtr registerOp; - if (!mRegisterMap.Get(aListener, getter_AddRefs(registerOp))) { - return NS_OK; - } - - registerOp->Cancel(); // cancel non-started operation - if (NS_WARN_IF(NS_FAILED(rv = registerOp->Stop()))) { - return rv; - } - - mRegisterMap.Remove(aListener); - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::ResolveService(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener) -{ - if (!ServiceCounter::IsServiceRunning()) { - return NS_ERROR_FAILURE; - } - - nsresult rv; - - RefPtr resolveOp = new ResolveOperator(aServiceInfo, - aListener); - if (NS_WARN_IF(NS_FAILED(rv = resolveOp->Start()))) { - return rv; - } - - return NS_OK; -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h b/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h deleted file mode 100644 index abe98f357..000000000 --- a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_netwerk_dns_mdns_libmdns_nsDNSServiceDiscovery_h -#define mozilla_netwerk_dns_mdns_libmdns_nsDNSServiceDiscovery_h - -#include "MDNSResponderOperator.h" -#include "nsIDNSServiceDiscovery.h" -#include "nsCOMPtr.h" -#include "mozilla/RefPtr.h" -#include "nsRefPtrHashtable.h" - -namespace mozilla { -namespace net { - -class BrowseOperator; -class RegisterOperator; - -class nsDNSServiceDiscovery final : public nsIDNSServiceDiscovery -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIDNSSERVICEDISCOVERY - - explicit nsDNSServiceDiscovery() = default; - - /* - ** The mDNS service is started on demand. If no one uses, mDNS service will not - ** start. Therefore, all operations before service started will fail - ** and get error code |kDNSServiceErr_ServiceNotRunning| defined in dns_sd.h. - **/ - nsresult Init(); - - nsresult StopDiscovery(nsIDNSServiceDiscoveryListener* aListener); - nsresult UnregisterService(nsIDNSRegistrationListener* aListener); - -private: - virtual ~nsDNSServiceDiscovery(); - - nsRefPtrHashtable mDiscoveryMap; - nsRefPtrHashtable mRegisterMap; -}; - -} // namespace net -} // namespace mozilla - -#endif // mozilla_netwerk_dns_mdns_libmdns_nsDNSServiceDiscovery_h diff --git a/netwerk/streamconv/converters/moz.build b/netwerk/streamconv/converters/moz.build index 863092240..546cfb998 100644 --- a/netwerk/streamconv/converters/moz.build +++ b/netwerk/streamconv/converters/moz.build @@ -11,6 +11,7 @@ XPIDL_MODULE = 'necko_http' SOURCES += [ 'mozTXTToHTMLConv.cpp', + 'nsBinHexDecoder.cpp', 'nsDirIndex.cpp', 'nsDirIndexParser.cpp', 'nsHTTPCompressConv.cpp', @@ -26,11 +27,6 @@ if 'ftp' in CONFIG['NECKO_PROTOCOLS']: 'ParseFTPList.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'cocoa': - SOURCES += [ - 'nsBinHexDecoder.cpp', - ] - FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ diff --git a/netwerk/system/mac/moz.build b/netwerk/system/mac/moz.build deleted file mode 100644 index f884a08b7..000000000 --- a/netwerk/system/mac/moz.build +++ /dev/null @@ -1,13 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -SOURCES += [ - 'nsNetworkLinkService.mm', -] - -FINAL_LIBRARY = 'xul' - -if CONFIG['CLANG_CXX']: - CXXFLAGS += ['-Wno-error=shadow'] diff --git a/netwerk/system/mac/nsNetworkLinkService.h b/netwerk/system/mac/nsNetworkLinkService.h deleted file mode 100644 index ee5462247..000000000 --- a/netwerk/system/mac/nsNetworkLinkService.h +++ /dev/null @@ -1,54 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef NSNETWORKLINKSERVICEMAC_H_ -#define NSNETWORKLINKSERVICEMAC_H_ - -#include "nsINetworkLinkService.h" -#include "nsIObserver.h" - -#include -#include - -class nsNetworkLinkService : public nsINetworkLinkService, - public nsIObserver -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSINETWORKLINKSERVICE - NS_DECL_NSIOBSERVER - - nsNetworkLinkService(); - - nsresult Init(); - nsresult Shutdown(); - -protected: - virtual ~nsNetworkLinkService(); - -private: - bool mLinkUp; - bool mStatusKnown; - - // Toggles allowing the sending of network-changed event. - bool mAllowChangedEvent; - - SCNetworkReachabilityRef mReachability; - CFRunLoopRef mCFRunLoop; - CFRunLoopSourceRef mRunLoopSource; - SCDynamicStoreRef mStoreRef; - - void UpdateReachability(); - void SendEvent(bool aNetworkChanged); - static void ReachabilityChanged(SCNetworkReachabilityRef target, - SCNetworkConnectionFlags flags, - void *info); - static void IPConfigChanged(SCDynamicStoreRef store, - CFArrayRef changedKeys, - void *info); - void calculateNetworkId(void); - nsCString mNetworkId; -}; - -#endif /* NSNETWORKLINKSERVICEMAC_H_ */ diff --git a/netwerk/system/mac/nsNetworkLinkService.mm b/netwerk/system/mac/nsNetworkLinkService.mm deleted file mode 100644 index 5b2d7575a..000000000 --- a/netwerk/system/mac/nsNetworkLinkService.mm +++ /dev/null @@ -1,526 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include "nsCOMPtr.h" -#include "nsIObserverService.h" -#include "nsServiceManagerUtils.h" -#include "nsString.h" -#include "nsCRT.h" -#include "mozilla/Logging.h" -#include "mozilla/Preferences.h" -#include "mozilla/SHA1.h" -#include "mozilla/Base64.h" -#include "nsNetworkLinkService.h" - -#import -#import - -#define NETWORK_NOTIFY_CHANGED_PREF "network.notify.changed" - -using namespace mozilla; - -static LazyLogModule gNotifyAddrLog("nsNotifyAddr"); -#define LOG(args) MOZ_LOG(gNotifyAddrLog, mozilla::LogLevel::Debug, args) - -// If non-successful, extract the error code and return it. This -// error code dance is inspired by -// http://developer.apple.com/technotes/tn/tn1145.html -static OSStatus getErrorCodeBool(Boolean success) -{ - OSStatus err = noErr; - if (!success) { - int scErr = ::SCError(); - if (scErr == kSCStatusOK) { - scErr = kSCStatusFailed; - } - err = scErr; - } - return err; -} - -// If given a NULL pointer, return the error code. -static OSStatus getErrorCodePtr(const void *value) -{ - return getErrorCodeBool(value != NULL); -} - -// Convenience function to allow NULL input. -static void CFReleaseSafe(CFTypeRef cf) -{ - if (cf) { - // "If cf is NULL, this will cause a runtime error and your - // application will crash." / Apple docs - ::CFRelease(cf); - } -} - -NS_IMPL_ISUPPORTS(nsNetworkLinkService, - nsINetworkLinkService, - nsIObserver) - -nsNetworkLinkService::nsNetworkLinkService() - : mLinkUp(true) - , mStatusKnown(false) - , mAllowChangedEvent(true) - , mReachability(nullptr) - , mCFRunLoop(nullptr) - , mRunLoopSource(nullptr) - , mStoreRef(nullptr) -{ -} - -nsNetworkLinkService::~nsNetworkLinkService() = default; - -NS_IMETHODIMP -nsNetworkLinkService::GetIsLinkUp(bool *aIsUp) -{ - *aIsUp = mLinkUp; - return NS_OK; -} - -NS_IMETHODIMP -nsNetworkLinkService::GetLinkStatusKnown(bool *aIsUp) -{ - *aIsUp = mStatusKnown; - return NS_OK; -} - -NS_IMETHODIMP -nsNetworkLinkService::GetLinkType(uint32_t *aLinkType) -{ - NS_ENSURE_ARG_POINTER(aLinkType); - - // XXX This function has not yet been implemented for this platform - *aLinkType = nsINetworkLinkService::LINK_TYPE_UNKNOWN; - return NS_OK; -} - -#ifndef SA_SIZE -#define SA_SIZE(sa) \ - ( (!(sa) || ((struct sockaddr *)(sa))->sa_len == 0) ? \ - sizeof(uint32_t) : \ - 1 + ( (((struct sockaddr *)(sa))->sa_len - 1) | (sizeof(uint32_t) - 1) ) ) -#endif - -static char *getMac(struct sockaddr_dl *sdl, char *buf, size_t bufsize) -{ - char *cp; - int n, p = 0; - - buf[0] = 0; - cp = (char *)LLADDR(sdl); - n = sdl->sdl_alen; - if (n > 0) { - while (--n >= 0) { - p += snprintf(&buf[p], bufsize - p, "%02x%s", - *cp++ & 0xff, n > 0 ? ":" : ""); - } - } - return buf; -} - -/* If the IP matches, get the MAC and return true */ -static bool matchIp(struct sockaddr_dl *sdl, struct sockaddr_inarp *addr, - char *ip, char *buf, size_t bufsize) -{ - if (sdl->sdl_alen) { - if (!strcmp(inet_ntoa(addr->sin_addr), ip)) { - getMac(sdl, buf, bufsize); - return true; /* done! */ - } - } - return false; /* continue */ -} - -/* - * Scan for the 'IP' address in the ARP table and store the corresponding MAC - * address in 'mac'. The output buffer is 'maclen' bytes big. - * - * Returns 'true' if it found the IP and returns a MAC. - */ -static bool scanArp(char *ip, char *mac, size_t maclen) -{ - int mib[6]; - char *lim, *next; - int st; - - mib[0] = CTL_NET; - mib[1] = PF_ROUTE; - mib[2] = 0; - mib[3] = AF_INET; - mib[4] = NET_RT_FLAGS; - mib[5] = RTF_LLINFO; - - size_t needed; - if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { - return false; - } - if (needed == 0) { - // empty table - return false; - } - - UniquePtr buf(new char[needed]); - - for (;;) { - st = sysctl(mib, 6, &buf[0], &needed, NULL, 0); - if (st == 0 || errno != ENOMEM) { - break; - } - needed += needed / 8; - - auto tmp = MakeUnique(needed); - memcpy(&tmp[0], &buf[0], needed); - buf = Move(tmp); - } - if (st == -1) { - return false; - } - lim = &buf[needed]; - - struct rt_msghdr *rtm; - for (next = &buf[0]; next < lim; next += rtm->rtm_msglen) { - rtm = reinterpret_cast(next); - struct sockaddr_inarp *sin2 = - reinterpret_cast(rtm + 1); - struct sockaddr_dl *sdl = - reinterpret_cast - ((char *)sin2 + SA_SIZE(sin2)); - if (matchIp(sdl, sin2, ip, mac, maclen)) { - return true; - } - } - - return false; -} - -static int routingTable(char *gw, size_t aGwLen) -{ - size_t needed; - int mib[6]; - struct rt_msghdr *rtm; - struct sockaddr *sa; - struct sockaddr_in *sockin; - - mib[0] = CTL_NET; - mib[1] = PF_ROUTE; - mib[2] = 0; - mib[3] = 0; - mib[4] = NET_RT_DUMP; - mib[5] = 0; - if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { - return 1; - } - - UniquePtr buf(new char[needed]); - - if (sysctl(mib, 6, &buf[0], &needed, NULL, 0) < 0) { - return 3; - } - - rtm = reinterpret_cast(&buf[0]); - sa = reinterpret_cast(rtm + 1); - sa = reinterpret_cast(SA_SIZE(sa) + (char *)sa); - sockin = reinterpret_cast(sa); - inet_ntop(AF_INET, &sockin->sin_addr.s_addr, gw, aGwLen-1); - - return 0; -} - -// -// Figure out the current "network identification" string. -// -// It detects the IP of the default gateway in the routing table, then the MAC -// address of that IP in the ARP table before it hashes that string (to avoid -// information leakage). -// -void nsNetworkLinkService::calculateNetworkId(void) -{ - bool found = false; - char hw[MAXHOSTNAMELEN]; - if (!routingTable(hw, sizeof(hw))) { - char mac[256]; // big enough for a printable MAC address - if (scanArp(hw, mac, sizeof(mac))) { - LOG(("networkid: MAC %s\n", hw)); - nsAutoCString mac(hw); - // This 'addition' could potentially be a - // fixed number from the profile or something. - nsAutoCString addition("local-rubbish"); - nsAutoCString output; - SHA1Sum sha1; - nsCString combined(mac + addition); - sha1.update(combined.get(), combined.Length()); - uint8_t digest[SHA1Sum::kHashSize]; - sha1.finish(digest); - nsCString newString(reinterpret_cast(digest), - SHA1Sum::kHashSize); - nsresult rv = Base64Encode(newString, output); - MOZ_RELEASE_ASSERT(NS_SUCCEEDED(rv)); - LOG(("networkid: id %s\n", output.get())); - if (mNetworkId != output) { - // new id - mNetworkId = output; - } - else { - // same id - } - found = true; - } - } - if (!found) { - // no id - } -} - - -NS_IMETHODIMP -nsNetworkLinkService::Observe(nsISupports *subject, - const char *topic, - const char16_t *data) -{ - if (!strcmp(topic, "xpcom-shutdown")) { - Shutdown(); - } - - return NS_OK; -} - -/* static */ -void -nsNetworkLinkService::IPConfigChanged(SCDynamicStoreRef aStoreREf, - CFArrayRef aChangedKeys, - void *aInfo) -{ - nsNetworkLinkService *service = - static_cast(aInfo); - service->SendEvent(true); -} - -nsresult -nsNetworkLinkService::Init(void) -{ - nsresult rv; - - nsCOMPtr observerService = - do_GetService("@mozilla.org/observer-service;1", &rv); - NS_ENSURE_SUCCESS(rv, rv); - - rv = observerService->AddObserver(this, "xpcom-shutdown", false); - NS_ENSURE_SUCCESS(rv, rv); - - Preferences::AddBoolVarCache(&mAllowChangedEvent, - NETWORK_NOTIFY_CHANGED_PREF, true); - - // If the network reachability API can reach 0.0.0.0 without - // requiring a connection, there is a network interface available. - struct sockaddr_in addr; - bzero(&addr, sizeof(addr)); - addr.sin_len = sizeof(addr); - addr.sin_family = AF_INET; - mReachability = - ::SCNetworkReachabilityCreateWithAddress(NULL, - (struct sockaddr *)&addr); - if (!mReachability) { - return NS_ERROR_NOT_AVAILABLE; - } - - SCNetworkReachabilityContext context = {0, this, NULL, NULL, NULL}; - if (!::SCNetworkReachabilitySetCallback(mReachability, - ReachabilityChanged, - &context)) { - NS_WARNING("SCNetworkReachabilitySetCallback failed."); - ::CFRelease(mReachability); - mReachability = NULL; - return NS_ERROR_NOT_AVAILABLE; - } - - SCDynamicStoreContext storeContext = {0, this, NULL, NULL, NULL}; - mStoreRef = - ::SCDynamicStoreCreate(NULL, - CFSTR("AddIPAddressListChangeCallbackSCF"), - IPConfigChanged, &storeContext); - - CFStringRef patterns[2] = {NULL, NULL}; - OSStatus err = getErrorCodePtr(mStoreRef); - if (err == noErr) { - // This pattern is "State:/Network/Service/[^/]+/IPv4". - patterns[0] = - ::SCDynamicStoreKeyCreateNetworkServiceEntity(NULL, - kSCDynamicStoreDomainState, - kSCCompAnyRegex, - kSCEntNetIPv4); - err = getErrorCodePtr(patterns[0]); - if (err == noErr) { - // This pattern is "State:/Network/Service/[^/]+/IPv6". - patterns[1] = - ::SCDynamicStoreKeyCreateNetworkServiceEntity(NULL, - kSCDynamicStoreDomainState, - kSCCompAnyRegex, - kSCEntNetIPv6); - err = getErrorCodePtr(patterns[1]); - } - } - - CFArrayRef patternList = NULL; - // Create a pattern list containing just one pattern, - // then tell SCF that we want to watch changes in keys - // that match that pattern list, then create our run loop - // source. - if (err == noErr) { - patternList = ::CFArrayCreate(NULL, (const void **) patterns, - 2, &kCFTypeArrayCallBacks); - if (!patternList) { - err = -1; - } - } - if (err == noErr) { - err = - getErrorCodeBool(::SCDynamicStoreSetNotificationKeys(mStoreRef, - NULL, - patternList)); - } - - if (err == noErr) { - mRunLoopSource = - ::SCDynamicStoreCreateRunLoopSource(NULL, mStoreRef, 0); - err = getErrorCodePtr(mRunLoopSource); - } - - CFReleaseSafe(patterns[0]); - CFReleaseSafe(patterns[1]); - CFReleaseSafe(patternList); - - if (err != noErr) { - CFReleaseSafe(mStoreRef); - return NS_ERROR_NOT_AVAILABLE; - } - - // Get the current run loop. This service is initialized at startup, - // so we shouldn't run in to any problems with modal dialog run loops. - mCFRunLoop = [[NSRunLoop currentRunLoop] getCFRunLoop]; - if (!mCFRunLoop) { - NS_WARNING("Could not get current run loop."); - ::CFRelease(mReachability); - mReachability = NULL; - return NS_ERROR_NOT_AVAILABLE; - } - ::CFRetain(mCFRunLoop); - - ::CFRunLoopAddSource(mCFRunLoop, mRunLoopSource, kCFRunLoopDefaultMode); - - if (!::SCNetworkReachabilityScheduleWithRunLoop(mReachability, mCFRunLoop, - kCFRunLoopDefaultMode)) { - NS_WARNING("SCNetworkReachabilityScheduleWIthRunLoop failed."); - ::CFRelease(mReachability); - mReachability = NULL; - ::CFRelease(mCFRunLoop); - mCFRunLoop = NULL; - return NS_ERROR_NOT_AVAILABLE; - } - - UpdateReachability(); - - return NS_OK; -} - -nsresult -nsNetworkLinkService::Shutdown() -{ - if (!::SCNetworkReachabilityUnscheduleFromRunLoop(mReachability, - mCFRunLoop, - kCFRunLoopDefaultMode)) { - NS_WARNING("SCNetworkReachabilityUnscheduleFromRunLoop failed."); - } - - CFRunLoopRemoveSource(mCFRunLoop, mRunLoopSource, kCFRunLoopDefaultMode); - - ::CFRelease(mReachability); - mReachability = nullptr; - - ::CFRelease(mCFRunLoop); - mCFRunLoop = nullptr; - - ::CFRelease(mStoreRef); - mStoreRef = nullptr; - - ::CFRelease(mRunLoopSource); - mRunLoopSource = nullptr; - - return NS_OK; -} - -void -nsNetworkLinkService::UpdateReachability() -{ - if (!mReachability) { - return; - } - - SCNetworkConnectionFlags flags; - if (!::SCNetworkReachabilityGetFlags(mReachability, &flags)) { - mStatusKnown = false; - return; - } - - bool reachable = (flags & kSCNetworkFlagsReachable) != 0; - bool needsConnection = (flags & kSCNetworkFlagsConnectionRequired) != 0; - - mLinkUp = (reachable && !needsConnection); - mStatusKnown = true; -} - -void -nsNetworkLinkService::SendEvent(bool aNetworkChanged) -{ - nsCOMPtr observerService = - do_GetService("@mozilla.org/observer-service;1"); - if (!observerService) { - return; - } - - const char *event; - if (aNetworkChanged) { - if (!mAllowChangedEvent) { - return; - } - event = NS_NETWORK_LINK_DATA_CHANGED; - } else if (!mStatusKnown) { - event = NS_NETWORK_LINK_DATA_UNKNOWN; - } else { - event = mLinkUp ? NS_NETWORK_LINK_DATA_UP - : NS_NETWORK_LINK_DATA_DOWN; - } - LOG(("SendEvent: network is '%s'\n", event)); - - observerService->NotifyObservers(static_cast(this), - NS_NETWORK_LINK_TOPIC, - NS_ConvertASCIItoUTF16(event).get()); -} - -/* static */ -void -nsNetworkLinkService::ReachabilityChanged(SCNetworkReachabilityRef target, - SCNetworkConnectionFlags flags, - void *info) -{ - nsNetworkLinkService *service = - static_cast(info); - - service->UpdateReachability(); - service->SendEvent(false); - service->calculateNetworkId(); -} diff --git a/netwerk/system/moz.build b/netwerk/system/moz.build index dcf7d6c3f..a8034d749 100644 --- a/netwerk/system/moz.build +++ b/netwerk/system/moz.build @@ -5,7 +5,5 @@ if CONFIG['OS_ARCH'] == 'WINNT': DIRS += ['win32'] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DIRS += ['mac'] elif CONFIG['OS_ARCH'] == 'Linux': DIRS += ['linux'] diff --git a/toolkit/components/parentalcontrols/moz.build b/toolkit/components/parentalcontrols/moz.build index 577162945..6c8bd9a8c 100644 --- a/toolkit/components/parentalcontrols/moz.build +++ b/toolkit/components/parentalcontrols/moz.build @@ -10,8 +10,6 @@ XPIDL_MODULE = 'parentalcontrols' if not CONFIG['MOZ_DISABLE_PARENTAL_CONTROLS']: if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': SOURCES += ['nsParentalControlsServiceWin.cpp'] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - UNIFIED_SOURCES += ['nsParentalControlsServiceCocoa.mm'] else: SOURCES += ['nsParentalControlsServiceDefault.cpp'] diff --git a/toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm b/toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm deleted file mode 100644 index 0eb018400..000000000 --- a/toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode:nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsParentalControlsService.h" -#include "nsString.h" -#include "nsIFile.h" - -#import - -NS_IMPL_ISUPPORTS(nsParentalControlsService, nsIParentalControlsService) - -nsParentalControlsService::nsParentalControlsService() : - mEnabled(false) -{ - mEnabled = CFPreferencesAppValueIsForced(CFSTR("restrictWeb"), - CFSTR("com.apple.familycontrols.contentfilter")); -} - -nsParentalControlsService::~nsParentalControlsService() -{ -} - -NS_IMETHODIMP -nsParentalControlsService::GetParentalControlsEnabled(bool *aResult) -{ - *aResult = mEnabled; - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::GetBlockFileDownloadsEnabled(bool *aResult) -{ - *aResult = false; - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::GetLoggingEnabled(bool *aResult) -{ - *aResult = false; - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::Log(int16_t aEntryType, - bool blocked, - nsIURI *aSource, - nsIFile *aTarget) -{ - // silently drop on the floor - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::RequestURIOverride(nsIURI *aTarget, - nsIInterfaceRequestor *aWindowContext, - bool *_retval) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsParentalControlsService::RequestURIOverrides(nsIArray *aTargets, - nsIInterfaceRequestor *aWindowContext, - bool *_retval) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsParentalControlsService::IsAllowed(int16_t aAction, - nsIURI *aUri, - bool *_retval) -{ - return NS_ERROR_NOT_AVAILABLE; -} - diff --git a/toolkit/components/startup/moz.build b/toolkit/components/startup/moz.build index b12fe9a53..7ee23d9ce 100644 --- a/toolkit/components/startup/moz.build +++ b/toolkit/components/startup/moz.build @@ -7,7 +7,7 @@ DIRS += ['public'] EXPORTS.mozilla += ['StartupTimeline.h'] -UNIFIED_SOURCES += [ +SOURCES += [ 'nsAppStartup.cpp', 'StartupTimeline.cpp', ] @@ -16,9 +16,7 @@ if CONFIG['MOZ_USERINFO']: if CONFIG['OS_ARCH'] == 'WINNT': # This file cannot be built in unified mode because of name clashes with Windows headers. SOURCES += ['nsUserInfoWin.cpp'] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - UNIFIED_SOURCES += ['nsUserInfoMac.mm'] else: - UNIFIED_SOURCES += ['nsUserInfoUnix.cpp'] + SOURCES += ['nsUserInfoUnix.cpp'] FINAL_LIBRARY = 'xul' diff --git a/toolkit/components/startup/nsUserInfoMac.h b/toolkit/components/startup/nsUserInfoMac.h deleted file mode 100644 index 822e0edd5..000000000 --- a/toolkit/components/startup/nsUserInfoMac.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifndef __nsUserInfoMac_h -#define __nsUserInfoMac_h - -#include "nsIUserInfo.h" -#include "nsReadableUtils.h" - -class nsUserInfo: public nsIUserInfo -{ -public: - nsUserInfo(); - - NS_DECL_ISUPPORTS - NS_DECL_NSIUSERINFO - - nsresult GetPrimaryEmailAddress(nsCString &aEmailAddress); - -protected: - virtual ~nsUserInfo() {} -}; - -#endif /* __nsUserInfo_h */ diff --git a/toolkit/components/startup/nsUserInfoMac.mm b/toolkit/components/startup/nsUserInfoMac.mm deleted file mode 100644 index 1895cf177..000000000 --- a/toolkit/components/startup/nsUserInfoMac.mm +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - -#include "nsUserInfoMac.h" -#include "nsObjCExceptions.h" -#include "nsString.h" - -#import -#import - -NS_IMPL_ISUPPORTS(nsUserInfo, nsIUserInfo) - -nsUserInfo::nsUserInfo() {} - -NS_IMETHODIMP -nsUserInfo::GetFullname(char16_t **aFullname) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT - - NS_ConvertUTF8toUTF16 fullName([NSFullUserName() UTF8String]); - *aFullname = ToNewUnicode(fullName); - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT -} - -NS_IMETHODIMP -nsUserInfo::GetUsername(char **aUsername) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT - - nsAutoCString username([NSUserName() UTF8String]); - *aUsername = ToNewCString(username); - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT -} - -nsresult -nsUserInfo::GetPrimaryEmailAddress(nsCString &aEmailAddress) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT - - // Try to get this user's primary email from the system addressbook's "me card" - // (if they've filled it) - ABPerson *me = [[ABAddressBook sharedAddressBook] me]; - ABMultiValue *emailAddresses = [me valueForProperty:kABEmailProperty]; - if ([emailAddresses count] > 0) { - // get the index of the primary email, in case there are more than one - int primaryEmailIndex = [emailAddresses indexForIdentifier:[emailAddresses primaryIdentifier]]; - aEmailAddress.Assign([[emailAddresses valueAtIndex:primaryEmailIndex] UTF8String]); - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT -} - -NS_IMETHODIMP -nsUserInfo::GetEmailAddress(char **aEmailAddress) -{ - nsAutoCString email; - if (NS_SUCCEEDED(GetPrimaryEmailAddress(email))) - *aEmailAddress = ToNewCString(email); - return NS_OK; -} - -NS_IMETHODIMP -nsUserInfo::GetDomain(char **aDomain) -{ - nsAutoCString email; - if (NS_SUCCEEDED(GetPrimaryEmailAddress(email))) { - int32_t index = email.FindChar('@'); - if (index != -1) { - // chop off everything before, and including the '@' - *aDomain = ToNewCString(Substring(email, index + 1)); - } - } - return NS_OK; -} diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build index a0a84b22e..a28f0eb9e 100644 --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build @@ -12,14 +12,8 @@ def Libxul_defines(): @template def Libxul(name): - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'): - # This is going to be a framework named "XUL", not an ordinary library named - # "libxul.dylib" - GeckoFramework(name, linkage=None) - SHARED_LIBRARY_NAME = 'XUL' - else: - GeckoSharedLibrary(name, linkage=None) - SHARED_LIBRARY_NAME = 'xul' + GeckoSharedLibrary(name, linkage=None) + SHARED_LIBRARY_NAME = 'xul' DELAYLOAD_DLLS += [ 'comdlg32.dll', @@ -127,9 +121,6 @@ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT'] or \ 'freetype', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - CXXFLAGS += CONFIG['TK_CFLAGS'] - if CONFIG['MOZ_WEBRTC']: if CONFIG['OS_TARGET'] == 'WINNT': OS_LIBS += [ @@ -143,19 +134,6 @@ if CONFIG['MOZ_WEBRTC']: 'wininet', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - OS_LIBS += [ - '-framework OpenGL', - '-framework SystemConfiguration', - '-framework AVFoundation', - '-framework CoreMedia', - '-framework IOKit', - '-F%s' % CONFIG['MACOS_PRIVATE_FRAMEWORKS_DIR'], - '-framework CoreUI', - '-framework CoreSymbolication', - 'cups', - ] - if CONFIG['MOZ_WMF']: OS_LIBS += [ 'mfuuid', @@ -218,9 +196,6 @@ if 'rtsp' in CONFIG['NECKO_PROTOCOLS']: OS_LIBS += CONFIG['ICONV_LIBS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'): - OS_LIBS += CONFIG['TK_LIBS'] - if CONFIG['MOZ_SNDIO']: OS_LIBS += [ 'sndio', @@ -306,14 +281,11 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': ] if CONFIG['COMPILE_ENVIRONMENT']: - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'): - full_libname = SHARED_LIBRARY_NAME - else: - full_libname = '%s%s%s' % ( - CONFIG['DLL_PREFIX'], - LIBRARY_NAME, - CONFIG['DLL_SUFFIX'] - ) + full_libname = '%s%s%s' % ( + CONFIG['DLL_PREFIX'], + LIBRARY_NAME, + CONFIG['DLL_SUFFIX'] + ) GENERATED_FILES += ['dependentlibs.list'] GENERATED_FILES['dependentlibs.list'].script = 'dependentlibs.py:gen_list' GENERATED_FILES['dependentlibs.list'].inputs = [ diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build index 9adafe140..225f3d932 100644 --- a/toolkit/modules/moz.build +++ b/toolkit/modules/moz.build @@ -94,7 +94,7 @@ EXTRA_PP_JS_MODULES += [ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3'): DEFINES['MENUBAR_CAN_AUTOHIDE'] = 1 -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3', 'cocoa'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3'): DEFINES['HAVE_SHELL_SERVICE'] = 1 EXTRA_PP_JS_MODULES += [ diff --git a/toolkit/moz.build b/toolkit/moz.build index 9e05b2a4f..9bf579bb2 100644 --- a/toolkit/moz.build +++ b/toolkit/moz.build @@ -39,7 +39,5 @@ DIRS += ['xre'] if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): DIRS += ['system/unixproxy'] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DIRS += ['system/osxproxy'] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': DIRS += ['system/windowsproxy'] diff --git a/toolkit/moz.configure b/toolkit/moz.configure index fbd728fdc..4f4acdfd5 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -62,7 +62,7 @@ set_config('L10NBASEDIR', l10n_base) # reason. option('--enable-default-toolkit', nargs=1, choices=('cairo-windows', 'cairo-gtk2', 'cairo-gtk2-x11', 'cairo-gtk3', - 'cairo-cocoa', 'cairo-uikit'), + 'cairo-uikit'), help='Select default toolkit') @depends('--enable-default-toolkit', target) @@ -72,8 +72,6 @@ def toolkit(value, target): os = target.os if target.os == 'WINNT': platform_choices = ('cairo-windows',) - elif target.os == 'OSX': - platform_choices = ('cairo-cocoa',) elif target.os == 'iOS': platform_choices = ('cairo-uikit',) else: @@ -196,7 +194,7 @@ option(env='MOZ_INSTRUMENT_EVENT_LOOP', @depends('MOZ_INSTRUMENT_EVENT_LOOP', toolkit) def instrument_event_loop(value, toolkit): - if value or (toolkit in ('windows', 'gtk2', 'gtk3', 'cocoa') and value.origin == 'default'): + if value or (toolkit in ('windows', 'gtk2', 'gtk3') and value.origin == 'default'): return True set_config('MOZ_INSTRUMENT_EVENT_LOOP', instrument_event_loop) @@ -282,7 +280,7 @@ add_old_configure_assignment('FT2_CFLAGS', # ============================================================== @depends(toolkit) def applemedia(toolkit): - if toolkit in ('cocoa', 'uikit'): + if toolkit in ('uikit'): return True set_config('MOZ_APPLEMEDIA', applemedia) diff --git a/toolkit/mozapps/update/updater/Makefile.in b/toolkit/mozapps/update/updater/Makefile.in index 84a843d18..c1cfcead7 100644 --- a/toolkit/mozapps/update/updater/Makefile.in +++ b/toolkit/mozapps/update/updater/Makefile.in @@ -14,16 +14,3 @@ endif endif include $(topsrcdir)/config/rules.mk - -ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) -export:: - sed -e 's/%MOZ_MACBUNDLE_ID%/$(MOZ_MACBUNDLE_ID)/' $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/bin/Info.plist -libs:: - $(NSINSTALL) -D $(DIST)/bin/updater.app - rsync -a -C --exclude '*.in' $(srcdir)/macbuild/Contents $(DIST)/bin/updater.app - rsync -a -C $(DIST)/bin/Info.plist $(DIST)/bin/updater.app/Contents - sed -e 's/%APP_NAME%/$(MOZ_APP_DISPLAYNAME)/' $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | \ - iconv -f UTF-8 -t UTF-16 > $(DIST)/bin/updater.app/Contents/Resources/English.lproj/InfoPlist.strings - $(NSINSTALL) -D $(DIST)/bin/updater.app/Contents/MacOS - $(NSINSTALL) $(DIST)/bin/org.mozilla.updater $(DIST)/bin/updater.app/Contents/MacOS -endif diff --git a/toolkit/mozapps/update/updater/launchchild_osx.mm b/toolkit/mozapps/update/updater/launchchild_osx.mm deleted file mode 100644 index 5a36ae623..000000000 --- a/toolkit/mozapps/update/updater/launchchild_osx.mm +++ /dev/null @@ -1,384 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include -#include -#include -#include -#include -#include -#include "readstrings.h" - -class MacAutoreleasePool { -public: - MacAutoreleasePool() - { - mPool = [[NSAutoreleasePool alloc] init]; - } - ~MacAutoreleasePool() - { - [mPool release]; - } - -private: - NSAutoreleasePool* mPool; -}; - -void LaunchChild(int argc, const char** argv) -{ - MacAutoreleasePool pool; - - @try { - NSString* launchPath = [NSString stringWithUTF8String:argv[0]]; - NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:argc - 1]; - for (int i = 1; i < argc; i++) { - [arguments addObject:[NSString stringWithUTF8String:argv[i]]]; - } - [NSTask launchedTaskWithLaunchPath:launchPath - arguments:arguments]; - } @catch (NSException* e) { - NSLog(@"%@: %@", e.name, e.reason); - } -} - -void -LaunchMacPostProcess(const char* aAppBundle) -{ - MacAutoreleasePool pool; - - // Launch helper to perform post processing for the update; this is the Mac - // analogue of LaunchWinPostProcess (PostUpdateWin). - NSString* iniPath = [NSString stringWithUTF8String:aAppBundle]; - iniPath = - [iniPath stringByAppendingPathComponent:@"Contents/Resources/updater.ini"]; - - NSFileManager* fileManager = [NSFileManager defaultManager]; - if (![fileManager fileExistsAtPath:iniPath]) { - // the file does not exist; there is nothing to run - return; - } - - int readResult; - char values[2][MAX_TEXT_LEN]; - readResult = ReadStrings([iniPath UTF8String], - "ExeRelPath\0ExeArg\0", - 2, - values, - "PostUpdateMac"); - if (readResult) { - return; - } - - NSString *exeRelPath = [NSString stringWithUTF8String:values[0]]; - NSString *exeArg = [NSString stringWithUTF8String:values[1]]; - if (!exeArg || !exeRelPath) { - return; - } - - // The path must not traverse directories and it must be a relative path. - if ([exeRelPath rangeOfString:@".."].location != NSNotFound || - [exeRelPath rangeOfString:@"./"].location != NSNotFound || - [exeRelPath rangeOfString:@"/"].location == 0) { - return; - } - - NSString* exeFullPath = [NSString stringWithUTF8String:aAppBundle]; - exeFullPath = [exeFullPath stringByAppendingPathComponent:exeRelPath]; - - char optVals[1][MAX_TEXT_LEN]; - readResult = ReadStrings([iniPath UTF8String], - "ExeAsync\0", - 1, - optVals, - "PostUpdateMac"); - - NSTask *task = [[NSTask alloc] init]; - [task setLaunchPath:exeFullPath]; - [task setArguments:[NSArray arrayWithObject:exeArg]]; - [task launch]; - if (!readResult) { - NSString *exeAsync = [NSString stringWithUTF8String:optVals[0]]; - if ([exeAsync isEqualToString:@"false"]) { - [task waitUntilExit]; - } - } - // ignore the return value of the task, there's nothing we can do with it - [task release]; -} - -id ConnectToUpdateServer() -{ - MacAutoreleasePool pool; - - id updateServer = nil; - BOOL isConnected = NO; - int currTry = 0; - const int numRetries = 10; // Number of IPC connection retries before - // giving up. - while (!isConnected && currTry < numRetries) { - @try { - updateServer = (id)[NSConnection - rootProxyForConnectionWithRegisteredName: - @"org.mozilla.updater.server" - host:nil - usingNameServer:[NSSocketPortNameServer sharedInstance]]; - if (!updateServer || - ![updateServer respondsToSelector:@selector(abort)] || - ![updateServer respondsToSelector:@selector(getArguments)] || - ![updateServer respondsToSelector:@selector(shutdown)]) { - NSLog(@"Server doesn't exist or doesn't provide correct selectors."); - sleep(1); // Wait 1 second. - currTry++; - } else { - isConnected = YES; - } - } @catch (NSException* e) { - NSLog(@"Encountered exception, retrying: %@: %@", e.name, e.reason); - sleep(1); // Wait 1 second. - currTry++; - } - } - if (!isConnected) { - NSLog(@"Failed to connect to update server after several retries."); - return nil; - } - return updateServer; -} - -void CleanupElevatedMacUpdate(bool aFailureOccurred) -{ - MacAutoreleasePool pool; - - id updateServer = ConnectToUpdateServer(); - if (updateServer) { - @try { - if (aFailureOccurred) { - [updateServer performSelector:@selector(abort)]; - } else { - [updateServer performSelector:@selector(shutdown)]; - } - } @catch (NSException* e) { } - } - - NSFileManager* manager = [NSFileManager defaultManager]; - [manager removeItemAtPath:@"/Library/PrivilegedHelperTools/org.mozilla.updater" - error:nil]; - [manager removeItemAtPath:@"/Library/LaunchDaemons/org.mozilla.updater.plist" - error:nil]; - const char* launchctlArgs[] = {"/bin/launchctl", - "remove", - "org.mozilla.updater"}; - // The following call will terminate the current process due to the "remove" - // argument in launchctlArgs. - LaunchChild(3, launchctlArgs); -} - -// Note: Caller is responsible for freeing argv. -bool ObtainUpdaterArguments(int* argc, char*** argv) -{ - MacAutoreleasePool pool; - - id updateServer = ConnectToUpdateServer(); - if (!updateServer) { - // Let's try our best and clean up. - CleanupElevatedMacUpdate(true); - return false; // Won't actually get here due to CleanupElevatedMacUpdate. - } - - @try { - NSArray* updaterArguments = - [updateServer performSelector:@selector(getArguments)]; - *argc = [updaterArguments count]; - char** tempArgv = (char**)malloc(sizeof(char*) * (*argc)); - for (int i = 0; i < *argc; i++) { - int argLen = [[updaterArguments objectAtIndex:i] length] + 1; - tempArgv[i] = (char*)malloc(argLen); - strncpy(tempArgv[i], [[updaterArguments objectAtIndex:i] UTF8String], - argLen); - } - *argv = tempArgv; - } @catch (NSException* e) { - // Let's try our best and clean up. - CleanupElevatedMacUpdate(true); - return false; // Won't actually get here due to CleanupElevatedMacUpdate. - } - return true; -} - -/** - * The ElevatedUpdateServer is launched from a non-elevated updater process. - * It allows an elevated updater process (usually a privileged helper tool) to - * connect to it and receive all the necessary arguments to complete a - * successful update. - */ -@interface ElevatedUpdateServer : NSObject -{ - NSArray* mUpdaterArguments; - BOOL mShouldKeepRunning; - BOOL mAborted; -} -- (id)initWithArgs:(NSArray*)args; -- (BOOL)runServer; -- (NSArray*)getArguments; -- (void)abort; -- (BOOL)wasAborted; -- (void)shutdown; -- (BOOL)shouldKeepRunning; -@end - -@implementation ElevatedUpdateServer - -- (id)initWithArgs:(NSArray*)args -{ - self = [super init]; - if (!self) { - return nil; - } - mUpdaterArguments = args; - mShouldKeepRunning = YES; - mAborted = NO; - return self; -} - -- (BOOL)runServer -{ - NSPort* serverPort = [NSSocketPort port]; - NSConnection* server = [NSConnection connectionWithReceivePort:serverPort - sendPort:serverPort]; - [server setRootObject:self]; - if ([server registerName:@"org.mozilla.updater.server" - withNameServer:[NSSocketPortNameServer sharedInstance]] == NO) { - NSLog(@"Unable to register as DirectoryServer."); - NSLog(@"Is another copy running?"); - return NO; - } - - while ([self shouldKeepRunning] && - [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode - beforeDate:[NSDate distantFuture]]); - return ![self wasAborted]; -} - -- (NSArray*)getArguments -{ - return mUpdaterArguments; -} - -- (void)abort -{ - mAborted = YES; - [self shutdown]; -} - -- (BOOL)wasAborted -{ - return mAborted; -} - -- (void)shutdown -{ - mShouldKeepRunning = NO; -} - -- (BOOL)shouldKeepRunning -{ - return mShouldKeepRunning; -} - -@end - -bool ServeElevatedUpdate(int argc, const char** argv) -{ - MacAutoreleasePool pool; - - NSMutableArray* updaterArguments = [NSMutableArray arrayWithCapacity:argc]; - for (int i = 0; i < argc; i++) { - [updaterArguments addObject:[NSString stringWithUTF8String:argv[i]]]; - } - - ElevatedUpdateServer* updater = - [[ElevatedUpdateServer alloc] initWithArgs:[updaterArguments copy]]; - bool didSucceed = [updater runServer]; - - [updater release]; - return didSucceed; -} - -bool IsOwnedByGroupAdmin(const char* aAppBundle) -{ - MacAutoreleasePool pool; - - NSString* appDir = [NSString stringWithUTF8String:aAppBundle]; - NSFileManager* fileManager = [NSFileManager defaultManager]; - - NSDictionary* attributes = [fileManager attributesOfItemAtPath:appDir - error:nil]; - bool isOwnedByAdmin = false; - if (attributes && - [[attributes valueForKey:NSFileGroupOwnerAccountID] intValue] == 80) { - isOwnedByAdmin = true; - } - return isOwnedByAdmin; -} - -void SetGroupOwnershipAndPermissions(const char* aAppBundle) -{ - MacAutoreleasePool pool; - - NSString* appDir = [NSString stringWithUTF8String:aAppBundle]; - NSFileManager* fileManager = [NSFileManager defaultManager]; - NSError* error = nil; - NSArray* paths = - [fileManager subpathsOfDirectoryAtPath:appDir - error:&error]; - if (error) { - return; - } - - // Set group ownership of Firefox.app to 80 ("admin") and permissions to - // 0775. - if (![fileManager setAttributes:@{ NSFileGroupOwnerAccountID: @(80), - NSFilePosixPermissions: @(0775) } - ofItemAtPath:appDir - error:&error] || error) { - return; - } - - NSArray* permKeys = [NSArray arrayWithObjects:NSFileGroupOwnerAccountID, - NSFilePosixPermissions, - nil]; - // For all descendants of Firefox.app, set group ownership to 80 ("admin") and - // ensure write permission for the group. - for (NSString* currPath in paths) { - NSString* child = [appDir stringByAppendingPathComponent:currPath]; - NSDictionary* oldAttributes = - [fileManager attributesOfItemAtPath:child - error:&error]; - if (error) { - return; - } - // Skip symlinks, since they could be pointing to files outside of the .app - // bundle. - if ([oldAttributes fileType] == NSFileTypeSymbolicLink) { - continue; - } - NSNumber* oldPerms = - (NSNumber*)[oldAttributes valueForKey:NSFilePosixPermissions]; - NSArray* permObjects = - [NSArray arrayWithObjects: - [NSNumber numberWithUnsignedLong:80], - [NSNumber numberWithUnsignedLong:[oldPerms shortValue] | 020], - nil]; - NSDictionary* attributes = [NSDictionary dictionaryWithObjects:permObjects - forKeys:permKeys]; - if (![fileManager setAttributes:attributes - ofItemAtPath:child - error:&error] || error) { - return; - } - } -} diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in b/toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in deleted file mode 100644 index a9b9fcba9..000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in +++ /dev/null @@ -1,39 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - org.mozilla.updater - CFBundleIconFile - updater.icns - CFBundleIdentifier - org.mozilla.updater - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - LSMinimumSystemVersion - 10.5 - LSMinimumSystemVersionByArchitecture - - i386 - 10.5.0 - x86_64 - 10.6.0 - - SMAuthorizedClients - - identifier "%MOZ_MACBUNDLE_ID%" and ((anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9]) or (anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] and certificate leaf[field.1.2.840.113635.100.6.1.13] and certificate leaf[subject.OU] = "43AQ936H96")) - - - diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo b/toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo deleted file mode 100644 index bd04210fb..000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in deleted file mode 100644 index bca4022e7..000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in +++ /dev/null @@ -1,7 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Localized versions of Info.plist keys */ - -CFBundleName = "%APP_NAME% Software Update"; diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 6cfb50406..000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,19 +0,0 @@ -{ - IBClasses = ( - { - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; -}, - { - CLASS = UpdaterUI; - LANGUAGE = ObjC; - OUTLETS = { - progressBar = NSProgressIndicator; - progressTextField = NSTextField; - }; - SUPERCLASS = NSObject; -} - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib deleted file mode 100644 index 150917837..000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib +++ /dev/null @@ -1,22 +0,0 @@ - - - - - IBDocumentLocation - 111 162 356 240 0 0 1440 878 - IBEditorPositions - - 29 - 106 299 84 44 0 0 1440 878 - - IBFramework Version - 489.0 - IBOpenObjects - - 21 - 29 - - IBSystem Version - 10J567 - - diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/keyedobjects.nib b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/keyedobjects.nib deleted file mode 100644 index 61ff026009dc837450268c20ed7de18d2c386fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5567 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 diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/updater.icns b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/updater.icns deleted file mode 100644 index d7499c6692db1d268b180d1afb6c3d0ea0572adf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55969 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 N@9lqc;Qv?-{6BR<2ZI0r diff --git a/toolkit/mozapps/update/updater/moz.build b/toolkit/mozapps/update/updater/moz.build index 4dc557ea3..6cf377afe 100644 --- a/toolkit/mozapps/update/updater/moz.build +++ b/toolkit/mozapps/update/updater/moz.build @@ -3,26 +3,13 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - Program('org.mozilla.updater') -else: - Program('updater') +Program('updater') updater_rel_path = '' include('updater-common.build') CXXFLAGS += CONFIG['MOZ_BZ2_CFLAGS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LDFLAGS += ['-sectcreate', - '__TEXT', - '__info_plist', - TOPOBJDIR + '/dist/bin/Info.plist', - '-sectcreate', - '__TEXT', - '__launchd_plist', - SRCDIR + '/Launchd.plist'] - GENERATED_FILES = [ 'primaryCert.h', 'secondaryCert.h', diff --git a/toolkit/mozapps/update/updater/progressui_osx.mm b/toolkit/mozapps/update/updater/progressui_osx.mm deleted file mode 100644 index 54c9c41b7..000000000 --- a/toolkit/mozapps/update/updater/progressui_osx.mm +++ /dev/null @@ -1,144 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#include -#include -#include "mozilla/Sprintf.h" -#include "progressui.h" -#include "readstrings.h" -#include "errors.h" - -#define TIMER_INTERVAL 0.2 - -static float sProgressVal; // between 0 and 100 -static BOOL sQuit = NO; -static BOOL sIndeterminate = NO; -static StringTable sLabels; -static const char *sUpdatePath; - -@interface UpdaterUI : NSObject -{ - IBOutlet NSProgressIndicator *progressBar; - IBOutlet NSTextField *progressTextField; -} -@end - -@implementation UpdaterUI - --(void)awakeFromNib -{ - NSWindow *w = [progressBar window]; - - [w setTitle:[NSString stringWithUTF8String:sLabels.title]]; - [progressTextField setStringValue:[NSString stringWithUTF8String:sLabels.info]]; - - NSRect origTextFrame = [progressTextField frame]; - [progressTextField sizeToFit]; - - int widthAdjust = progressTextField.frame.size.width - origTextFrame.size.width; - - if (widthAdjust > 0) { - NSRect f; - f.size.width = w.frame.size.width + widthAdjust; - f.size.height = w.frame.size.height; - [w setFrame:f display:YES]; - } - - [w center]; - - [progressBar setIndeterminate:sIndeterminate]; - [progressBar setDoubleValue:0.0]; - - [[NSTimer scheduledTimerWithTimeInterval:TIMER_INTERVAL target:self - selector:@selector(updateProgressUI:) - userInfo:nil repeats:YES] retain]; - - // Make sure we are on top initially - [NSApp activateIgnoringOtherApps:YES]; -} - -// called when the timer goes off --(void)updateProgressUI:(NSTimer *)aTimer -{ - if (sQuit) { - [aTimer invalidate]; - [aTimer release]; - - // It seems to be necessary to activate and hide ourselves before we stop, - // otherwise the "run" method will not return until the user focuses some - // other app. The activate step is necessary if we are not the active app. - // This is a big hack, but it seems to do the trick. - [NSApp activateIgnoringOtherApps:YES]; - [NSApp hide:self]; - [NSApp stop:self]; - } - - float progress = sProgressVal; - - [progressBar setDoubleValue:(double)progress]; -} - -// leave this as returning a BOOL instead of NSApplicationTerminateReply -// for backward compatibility -- (BOOL)applicationShouldTerminate:(NSApplication *)sender -{ - return sQuit; -} - -@end - -int -InitProgressUI(int *pargc, char ***pargv) -{ - sUpdatePath = (*pargv)[1]; - - return 0; -} - -int -ShowProgressUI(bool indeterminate) -{ - // Only show the Progress UI if the process is taking a significant amount of - // time where a significant amount of time is defined as .5 seconds after - // ShowProgressUI is called sProgress is less than 70. - usleep(500000); - - if (sQuit || sProgressVal > 70.0f) - return 0; - - char path[PATH_MAX]; - SprintfLiteral(path, "%s/updater.ini", sUpdatePath); - if (ReadStrings(path, &sLabels) != OK) - return -1; - - // Continue the update without showing the Progress UI if any of the supplied - // strings are larger than MAX_TEXT_LEN (Bug 628829). - if (!(strlen(sLabels.title) < MAX_TEXT_LEN - 1 && - strlen(sLabels.info) < MAX_TEXT_LEN - 1)) - return -1; - - sIndeterminate = indeterminate; - [NSApplication sharedApplication]; - [NSBundle loadNibNamed:@"MainMenu" owner:NSApp]; - [NSApp run]; - - return 0; -} - -// Called on a background thread -void -QuitProgressUI() -{ - sQuit = YES; -} - -// Called on a background thread -void -UpdateProgressUI(float progress) -{ - sProgressVal = progress; // 32-bit writes are atomic -} diff --git a/toolkit/mozapps/update/updater/updater-common.build b/toolkit/mozapps/update/updater/updater-common.build index 0e5521329..a46c1388c 100644 --- a/toolkit/mozapps/update/updater/updater-common.build +++ b/toolkit/mozapps/update/updater/updater-common.build @@ -72,24 +72,6 @@ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: 'progressui_gtk.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - have_progressui = 1 - srcs += [ - 'launchchild_osx.mm', - 'progressui_osx.mm', - ] - OS_LIBS += [ - '-framework Cocoa', - '-framework Security', - '-framework SystemConfiguration', - ] - UNIFIED_SOURCES += [ - '/toolkit/xre/updaterfileutils_osx.mm', - ] - LOCAL_INCLUDES += [ - '/toolkit/xre', - ] - if have_progressui == 0: srcs += [ 'progressui_null.cpp', diff --git a/toolkit/system/osxproxy/ProxyUtils.h b/toolkit/system/osxproxy/ProxyUtils.h deleted file mode 100644 index d6e5ddbd4..000000000 --- a/toolkit/system/osxproxy/ProxyUtils.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_toolkit_system_osxproxy_ProxyUtils_h -#define mozilla_toolkit_system_osxproxy_ProxyUtils_h - -#include "nsStringGlue.h" - -namespace mozilla { -namespace toolkit { -namespace system { - -bool IsHostProxyEntry(const nsACString& aHost, const nsACString& aOverride); - -} // namespace system -} // namespace toolkit -} // namespace mozilla - -#endif // mozilla_toolkit_system_osxproxy_ProxyUtils_h diff --git a/toolkit/system/osxproxy/ProxyUtils.mm b/toolkit/system/osxproxy/ProxyUtils.mm deleted file mode 100644 index 4e59f226a..000000000 --- a/toolkit/system/osxproxy/ProxyUtils.mm +++ /dev/null @@ -1,182 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ProxyUtils.h" -#include "nsTArray.h" -#include "prnetdb.h" -#include "prtypes.h" - -namespace mozilla { -namespace toolkit { -namespace system { - -/** - * Normalize the short IP form into the complete form. - * For example, it converts "192.168" into "192.168.0.0" - */ -static bool -NormalizeAddr(const nsACString& aAddr, nsCString& aNormalized) -{ - nsTArray addr; - if (!ParseString(aAddr, '.', addr)) { - return false; - } - aNormalized = ""; - for (uint32_t i = 0; i < 4; ++i) { - if (i != 0) { - aNormalized.Append("."); - } - if (i < addr.Length()) { - aNormalized.Append(addr[i]); - } else { - aNormalized.Append("0"); - } - } - return true; -} - -static PRUint32 -MaskIPv4Addr(PRUint32 aAddr, uint16_t aMaskLen) -{ - if (aMaskLen == 32) { - return aAddr; - } - return PR_htonl(PR_ntohl(aAddr) & (~0L << (32 - aMaskLen))); -} - -static void -MaskIPv6Addr(PRIPv6Addr& aAddr, uint16_t aMaskLen) -{ - if (aMaskLen == 128) { - return; - } - - if (aMaskLen > 96) { - aAddr.pr_s6_addr32[3] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[3]) & (~0L << (128 - aMaskLen))); - } else if (aMaskLen > 64) { - aAddr.pr_s6_addr32[3] = 0; - aAddr.pr_s6_addr32[2] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[2]) & (~0L << (96 - aMaskLen))); - } else if (aMaskLen > 32) { - aAddr.pr_s6_addr32[3] = 0; - aAddr.pr_s6_addr32[2] = 0; - aAddr.pr_s6_addr32[1] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[1]) & (~0L << (64 - aMaskLen))); - } else { - aAddr.pr_s6_addr32[3] = 0; - aAddr.pr_s6_addr32[2] = 0; - aAddr.pr_s6_addr32[1] = 0; - aAddr.pr_s6_addr32[0] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[0]) & (~0L << (32 - aMaskLen))); - } - - return; -} - -static bool -IsMatchMask(const nsACString& aHost, const nsACString& aOverride) -{ - nsresult rv; - - auto tokenEnd = aOverride.FindChar('/'); - if (tokenEnd == -1) { - return false; - } - - nsAutoCString prefixStr(Substring(aOverride, - tokenEnd + 1, - aOverride.Length() - tokenEnd - 1)); - auto maskLen = prefixStr.ToInteger(&rv); - if (NS_WARN_IF(NS_FAILED(rv))) { - return false; - } - - nsAutoCString override(aOverride); - if (!NormalizeAddr(Substring(aOverride, 0, tokenEnd), override)) { - return false; - } - - PRNetAddr prAddrHost; - PRNetAddr prAddrOverride; - if (PR_SUCCESS != PR_StringToNetAddr(PromiseFlatCString(aHost).get(), - &prAddrHost) || - PR_SUCCESS != PR_StringToNetAddr(override.get(), - &prAddrOverride)) { - return false; - } - - if (prAddrHost.raw.family == PR_AF_INET && - prAddrOverride.raw.family == PR_AF_INET) { - return MaskIPv4Addr(prAddrHost.inet.ip, maskLen) == - MaskIPv4Addr(prAddrOverride.inet.ip, maskLen); - } - else if (prAddrHost.raw.family == PR_AF_INET6 && - prAddrOverride.raw.family == PR_AF_INET6) { - MaskIPv6Addr(prAddrHost.ipv6.ip, maskLen); - MaskIPv6Addr(prAddrOverride.ipv6.ip, maskLen); - - return memcmp(&prAddrHost.ipv6.ip, - &prAddrOverride.ipv6.ip, - sizeof(PRIPv6Addr)) == 0; - } - - return false; -} - -static bool -IsMatchWildcard(const nsACString& aHost, const nsACString& aOverride) -{ - nsAutoCString host(aHost); - nsAutoCString override(aOverride); - - int32_t overrideLength = override.Length(); - int32_t tokenStart = 0; - int32_t offset = 0; - bool star = false; - - while (tokenStart < overrideLength) { - int32_t tokenEnd = override.FindChar('*', tokenStart); - if (tokenEnd == tokenStart) { - // Star is the first character in the token. - star = true; - tokenStart++; - // If the character following the '*' is a '.' character then skip - // it so that "*.foo.com" allows "foo.com". - if (override.FindChar('.', tokenStart) == tokenStart) { - nsAutoCString token(Substring(override, - tokenStart + 1, - overrideLength - tokenStart - 1)); - if (host.Equals(token)) { - return true; - } - } - } else { - if (tokenEnd == -1) { - tokenEnd = overrideLength; // no '*' char, match rest of string - } - nsAutoCString token(Substring(override, tokenStart, tokenEnd - tokenStart)); - offset = host.Find(token, offset); - if (offset == -1 || (!star && offset)) { - return false; - } - star = false; - tokenStart = tokenEnd; - offset += token.Length(); - } - } - - return (star || (offset == static_cast(host.Length()))); -} - -bool -IsHostProxyEntry(const nsACString& aHost, const nsACString& aOverride) -{ - return IsMatchMask(aHost, aOverride) || IsMatchWildcard(aHost, aOverride); -} - -} // namespace system -} // namespace toolkit -} // namespace mozilla diff --git a/toolkit/system/osxproxy/moz.build b/toolkit/system/osxproxy/moz.build deleted file mode 100644 index 64a01ce6b..000000000 --- a/toolkit/system/osxproxy/moz.build +++ /dev/null @@ -1,13 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -TEST_DIRS += ['tests/gtest'] - -SOURCES += [ - 'nsOSXSystemProxySettings.mm', - 'ProxyUtils.mm', -] - -FINAL_LIBRARY = 'xul' diff --git a/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm b/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm deleted file mode 100644 index 77fd2e482..000000000 --- a/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm +++ /dev/null @@ -1,326 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#import - -#include "nsISystemProxySettings.h" -#include "mozilla/ModuleUtils.h" -#include "nsIServiceManager.h" -#include "nsPrintfCString.h" -#include "nsNetCID.h" -#include "nsISupportsPrimitives.h" -#include "nsIURI.h" -#include "nsObjCExceptions.h" -#include "mozilla/Attributes.h" -#include "ProxyUtils.h" - -class nsOSXSystemProxySettings final : public nsISystemProxySettings { -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSISYSTEMPROXYSETTINGS - - nsOSXSystemProxySettings(); - nsresult Init(); - - // called by OSX when the proxy settings have changed - void ProxyHasChanged(); - - // is there a PAC url specified in the system configuration - bool IsAutoconfigEnabled() const; - // retrieve the pac url - nsresult GetAutoconfigURL(nsAutoCString& aResult) const; - - // Find the SystemConfiguration proxy & port for a given URI - nsresult FindSCProxyPort(const nsACString &aScheme, nsACString& aResultHost, int32_t& aResultPort, bool& aResultSocksProxy); - - // is host:port on the proxy exception list? - bool IsInExceptionList(const nsACString& aHost) const; - -private: - ~nsOSXSystemProxySettings(); - - SCDynamicStoreContext mContext; - SCDynamicStoreRef mSystemDynamicStore; - NSDictionary* mProxyDict; - - - // Mapping of URI schemes to SystemConfiguration keys - struct SchemeMapping { - const char* mScheme; - CFStringRef mEnabled; - CFStringRef mHost; - CFStringRef mPort; - bool mIsSocksProxy; - }; - static const SchemeMapping gSchemeMappingList[]; -}; - -NS_IMPL_ISUPPORTS(nsOSXSystemProxySettings, nsISystemProxySettings) - -NS_IMETHODIMP -nsOSXSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly) -{ - *aMainThreadOnly = true; - return NS_OK; -} - -// Mapping of URI schemes to SystemConfiguration keys -const nsOSXSystemProxySettings::SchemeMapping nsOSXSystemProxySettings::gSchemeMappingList[] = { - {"http", kSCPropNetProxiesHTTPEnable, kSCPropNetProxiesHTTPProxy, kSCPropNetProxiesHTTPPort, false}, - {"https", kSCPropNetProxiesHTTPSEnable, kSCPropNetProxiesHTTPSProxy, kSCPropNetProxiesHTTPSPort, false}, - {"ftp", kSCPropNetProxiesFTPEnable, kSCPropNetProxiesFTPProxy, kSCPropNetProxiesFTPPort, false}, - {"socks", kSCPropNetProxiesSOCKSEnable, kSCPropNetProxiesSOCKSProxy, kSCPropNetProxiesSOCKSPort, true}, - {NULL, NULL, NULL, NULL, false}, -}; - -static void -ProxyHasChangedWrapper(SCDynamicStoreRef aStore, CFArrayRef aChangedKeys, void* aInfo) -{ - static_cast(aInfo)->ProxyHasChanged(); -} - - -nsOSXSystemProxySettings::nsOSXSystemProxySettings() - : mSystemDynamicStore(NULL), mProxyDict(NULL) -{ - mContext = (SCDynamicStoreContext){0, this, NULL, NULL, NULL}; -} - -nsresult -nsOSXSystemProxySettings::Init() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - // Register for notification of proxy setting changes - // See: http://developer.apple.com/documentation/Networking/Conceptual/CFNetwork/CFStreamTasks/chapter_4_section_5.html - mSystemDynamicStore = SCDynamicStoreCreate(NULL, CFSTR("Mozilla"), ProxyHasChangedWrapper, &mContext); - if (!mSystemDynamicStore) - return NS_ERROR_FAILURE; - - // Set up the store to monitor any changes to the proxies - CFStringRef proxiesKey = SCDynamicStoreKeyCreateProxies(NULL); - if (!proxiesKey) - return NS_ERROR_FAILURE; - - CFArrayRef keyArray = CFArrayCreate(NULL, (const void**)(&proxiesKey), 1, &kCFTypeArrayCallBacks); - CFRelease(proxiesKey); - if (!keyArray) - return NS_ERROR_FAILURE; - - SCDynamicStoreSetNotificationKeys(mSystemDynamicStore, keyArray, NULL); - CFRelease(keyArray); - - // Add the dynamic store to the run loop - CFRunLoopSourceRef storeRLSource = SCDynamicStoreCreateRunLoopSource(NULL, mSystemDynamicStore, 0); - if (!storeRLSource) - return NS_ERROR_FAILURE; - CFRunLoopAddSource(CFRunLoopGetCurrent(), storeRLSource, kCFRunLoopCommonModes); - CFRelease(storeRLSource); - - // Load the initial copy of proxy info - mProxyDict = (NSDictionary*)SCDynamicStoreCopyProxies(mSystemDynamicStore); - if (!mProxyDict) - return NS_ERROR_FAILURE; - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -nsOSXSystemProxySettings::~nsOSXSystemProxySettings() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [mProxyDict release]; - - if (mSystemDynamicStore) { - // Invalidate the dynamic store's run loop source - // to get the store out of the run loop - CFRunLoopSourceRef rls = SCDynamicStoreCreateRunLoopSource(NULL, mSystemDynamicStore, 0); - if (rls) { - CFRunLoopSourceInvalidate(rls); - CFRelease(rls); - } - CFRelease(mSystemDynamicStore); - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - - -void -nsOSXSystemProxySettings::ProxyHasChanged() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [mProxyDict release]; - mProxyDict = (NSDictionary*)SCDynamicStoreCopyProxies(mSystemDynamicStore); - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -nsresult -nsOSXSystemProxySettings::FindSCProxyPort(const nsACString &aScheme, nsACString& aResultHost, int32_t& aResultPort, bool& aResultSocksProxy) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - NS_ENSURE_TRUE(mProxyDict != NULL, NS_ERROR_FAILURE); - - for (const SchemeMapping* keys = gSchemeMappingList; keys->mScheme != NULL; ++keys) { - // Check for matching scheme (when appropriate) - if (strcasecmp(keys->mScheme, PromiseFlatCString(aScheme).get()) && - !keys->mIsSocksProxy) - continue; - - // Check the proxy is enabled - NSNumber* enabled = [mProxyDict objectForKey:(NSString*)keys->mEnabled]; - NS_ENSURE_TRUE(enabled == NULL || [enabled isKindOfClass:[NSNumber class]], NS_ERROR_FAILURE); - if ([enabled intValue] == 0) - continue; - - // Get the proxy host - NSString* host = [mProxyDict objectForKey:(NSString*)keys->mHost]; - if (host == NULL) - break; - NS_ENSURE_TRUE([host isKindOfClass:[NSString class]], NS_ERROR_FAILURE); - aResultHost.Assign([host UTF8String]); - - // Get the proxy port - NSNumber* port = [mProxyDict objectForKey:(NSString*)keys->mPort]; - NS_ENSURE_TRUE([port isKindOfClass:[NSNumber class]], NS_ERROR_FAILURE); - aResultPort = [port intValue]; - - aResultSocksProxy = keys->mIsSocksProxy; - - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -bool -nsOSXSystemProxySettings::IsAutoconfigEnabled() const -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - NSNumber* value = [mProxyDict objectForKey:(NSString*)kSCPropNetProxiesProxyAutoConfigEnable]; - NS_ENSURE_TRUE(value == NULL || [value isKindOfClass:[NSNumber class]], false); - return ([value intValue] != 0); - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false); -} - -nsresult -nsOSXSystemProxySettings::GetAutoconfigURL(nsAutoCString& aResult) const -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - NSString* value = [mProxyDict objectForKey:(NSString*)kSCPropNetProxiesProxyAutoConfigURLString]; - if (value != NULL) { - NS_ENSURE_TRUE([value isKindOfClass:[NSString class]], NS_ERROR_FAILURE); - aResult.Assign([value UTF8String]); - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -bool -nsOSXSystemProxySettings::IsInExceptionList(const nsACString& aHost) const -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - NS_ENSURE_TRUE(mProxyDict != NULL, false); - - NSArray* exceptionList = [mProxyDict objectForKey:(NSString*)kSCPropNetProxiesExceptionsList]; - NS_ENSURE_TRUE(exceptionList == NULL || [exceptionList isKindOfClass:[NSArray class]], false); - - NSEnumerator* exceptionEnumerator = [exceptionList objectEnumerator]; - NSString* currentValue = NULL; - while ((currentValue = [exceptionEnumerator nextObject])) { - NS_ENSURE_TRUE([currentValue isKindOfClass:[NSString class]], false); - nsAutoCString overrideStr([currentValue UTF8String]); - if (mozilla::toolkit::system::IsHostProxyEntry(aHost, overrideStr)) - return true; - } - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false); -} - -nsresult -nsOSXSystemProxySettings::GetPACURI(nsACString& aResult) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - NS_ENSURE_TRUE(mProxyDict != NULL, NS_ERROR_FAILURE); - - nsAutoCString pacUrl; - if (IsAutoconfigEnabled() && NS_SUCCEEDED(GetAutoconfigURL(pacUrl))) { - aResult.Assign(pacUrl); - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -nsresult -nsOSXSystemProxySettings::GetProxyForURI(const nsACString & aSpec, - const nsACString & aScheme, - const nsACString & aHost, - const int32_t aPort, - nsACString & aResult) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - int32_t proxyPort; - nsAutoCString proxyHost; - bool proxySocks; - nsresult rv = FindSCProxyPort(aScheme, proxyHost, proxyPort, proxySocks); - - if (NS_FAILED(rv) || IsInExceptionList(aHost)) { - aResult.AssignLiteral("DIRECT"); - } else if (proxySocks) { - aResult.Assign(NS_LITERAL_CSTRING("SOCKS ") + proxyHost + nsPrintfCString(":%d", proxyPort)); - } else { - aResult.Assign(NS_LITERAL_CSTRING("PROXY ") + proxyHost + nsPrintfCString(":%d", proxyPort)); - } - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -#define NS_OSXSYSTEMPROXYSERVICE_CID /* 9afcd4b8-2e0f-41f4-8f1f-3bf0d3cf67de */\ - { 0x9afcd4b8, 0x2e0f, 0x41f4, \ - { 0x8f, 0x1f, 0x3b, 0xf0, 0xd3, 0xcf, 0x67, 0xde } } - -NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsOSXSystemProxySettings, Init); -NS_DEFINE_NAMED_CID(NS_OSXSYSTEMPROXYSERVICE_CID); - -static const mozilla::Module::CIDEntry kOSXSysProxyCIDs[] = { - { &kNS_OSXSYSTEMPROXYSERVICE_CID, false, NULL, nsOSXSystemProxySettingsConstructor }, - { NULL } -}; - -static const mozilla::Module::ContractIDEntry kOSXSysProxyContracts[] = { - { NS_SYSTEMPROXYSETTINGS_CONTRACTID, &kNS_OSXSYSTEMPROXYSERVICE_CID }, - { NULL } -}; - -static const mozilla::Module kOSXSysProxyModule = { - mozilla::Module::kVersion, - kOSXSysProxyCIDs, - kOSXSysProxyContracts -}; - -NSMODULE_DEFN(nsOSXProxyModule) = &kOSXSysProxyModule; diff --git a/toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp b/toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp deleted file mode 100644 index 790349109..000000000 --- a/toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "gtest/gtest.h" -#include "ProxyUtils.h" - -using namespace mozilla::toolkit::system; - -TEST(OSXProxy, TestProxyBypassRules) -{ - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("mozilla.org"), NS_LITERAL_CSTRING("mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("mozilla.org"),NS_LITERAL_CSTRING("*mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("mozilla.org"), NS_LITERAL_CSTRING("*.mozilla.org"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("notmozilla.org"), NS_LITERAL_CSTRING("*.mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("www.mozilla.org"), NS_LITERAL_CSTRING("*mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("www.mozilla.org"), NS_LITERAL_CSTRING("*.mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("www.mozilla.com"), NS_LITERAL_CSTRING("*.mozilla.*"))); -} - -TEST(OSXProxy, TestProxyBypassRulesIPv4) -{ - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.1.1"), NS_LITERAL_CSTRING("192.168.1.*"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.1.1"), NS_LITERAL_CSTRING("192.168.2.*"))); - - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("10.1.2.3"), NS_LITERAL_CSTRING("10.0.0.0/8"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.192.1"), NS_LITERAL_CSTRING("192.168/16"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.192.1"), NS_LITERAL_CSTRING("192.168/17"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.192.1"), NS_LITERAL_CSTRING("192.168.128/17"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.1.1"), NS_LITERAL_CSTRING("192.168.1.1/32"))); -} - -TEST(OSXProxy, TestProxyBypassRulesIPv6) -{ - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0123:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/64"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0000:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/80"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0123:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/80"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0000:0000:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/96"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0123:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/96"))); -} diff --git a/toolkit/system/osxproxy/tests/gtest/moz.build b/toolkit/system/osxproxy/tests/gtest/moz.build deleted file mode 100644 index 94768a204..000000000 --- a/toolkit/system/osxproxy/tests/gtest/moz.build +++ /dev/null @@ -1,17 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, you can obtain one at http://mozilla.org/MPL/2.0/. - -UNIFIED_SOURCES += [ - 'TestProxyBypassRules.cpp', -] - -LOCAL_INCLUDES += [ - '/toolkit/system/osxproxy', -] - -FINAL_LIBRARY = 'xul-gtest' - -if CONFIG['GNU_CXX']: - CXXFLAGS += ['-Wshadow'] diff --git a/toolkit/themes/moz.build b/toolkit/themes/moz.build index 74f53391e..b24036f1a 100644 --- a/toolkit/themes/moz.build +++ b/toolkit/themes/moz.build @@ -21,9 +21,7 @@ if CONFIG['MOZ_PHOENIX']: else: app = CONFIG['MOZ_BUILD_APP'] -if toolkit == 'cocoa': - DIRS += ['osx'] -elif toolkit in ('gtk2', 'gtk3'): +if toolkit in ('gtk2', 'gtk3'): DIRS += ['linux'] else: DIRS += ['windows'] diff --git a/toolkit/themes/osx/global/10pct_transparent_grey.png b/toolkit/themes/osx/global/10pct_transparent_grey.png deleted file mode 100644 index 01f2edd9f4f8ba7bc193252aa2f2240934d6782c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blmUKs7M+Sy#H?H_c7y@z$Dnyzf%3} UrbUGgx3uT4$a);iz+i0+0KpFxO8@`> diff --git a/toolkit/themes/osx/global/arrow/arrow-dn-dis.png b/toolkit/themes/osx/global/arrow/arrow-dn-dis.png deleted file mode 100644 index a202fd85c9d8082f36b94f2570a7882b51bc9042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=mUKs7M+SzCeKo%WCjBFLsy8xes4ohdPgQu&X%Q~loCII_3KMw!^ diff --git a/toolkit/themes/osx/global/arrow/arrow-dn-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-dn-sharp.gif deleted file mode 100644 index 206d7c19dd524614e18f807aef483c5ca6aab515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 wcmZ?wbhEHbjEB<5wG8q|kKzxu40~3Ew|H{*{49Xrwt8T2h{YQks F8USKu4vhc+ diff --git a/toolkit/themes/osx/global/arrow/arrow-dn.png b/toolkit/themes/osx/global/arrow/arrow-dn.png deleted file mode 100644 index 91486a3e9a6d11e9742a74b0c7ecdb0bf0a131a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=mUKs7M+SzCeKo%WCj8x3^>>IyiDa;pFIq~7mP2=`;>(+htpKrI7{o}zV khciEZeop5W;C;l*(Bfl$_24RoMxbR3p00i_>zopr0JCRCy8r+H diff --git a/toolkit/themes/osx/global/arrow/arrow-lft-dis.gif b/toolkit/themes/osx/global/arrow/arrow-lft-dis.gif deleted file mode 100644 index 33243517b1b588c92dd307b74cf89fcec63ec5f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmZ?wbhEHbjEB<5wG8q|kKzxu40~5bXUBU|Ky$dD^Zfcu%YCQvk FH2_{D4iW$W diff --git a/toolkit/themes/osx/global/arrow/arrow-lft-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-lft-sharp.gif deleted file mode 100644 index ae9b1dd0fb6ab5c5ed2f6b991a2f15d768707a7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmZ?wbhEHbWM$xFXkcUjg8%>jEB<5wG8q|kKzxu40~1dVGkfQ4?pTum!zcy@YXBnM B3P}I} diff --git a/toolkit/themes/osx/global/arrow/arrow-lft.gif b/toolkit/themes/osx/global/arrow/arrow-lft.gif deleted file mode 100644 index c5c362d89b19dadd509869efa700a2dedcbffa3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmZ?wbhEHb!5RQCl@!ka diff --git a/toolkit/themes/osx/global/arrow/arrow-rit-hov.gif b/toolkit/themes/osx/global/arrow/arrow-rit-hov.gif deleted file mode 100644 index 5010921adc6cdd64d5d2a489ac8f989e5127d40c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmZ?wbhEHbjEB<5wG8q|kKzxu40~5bX-2#bSFMYb(4w4Tt~$ diff --git a/toolkit/themes/osx/global/arrow/arrow-rit-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-rit-sharp.gif deleted file mode 100644 index ca628ba69bdcd33fa6d77e0e5deaeca7c0a143c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmZ?wbhEHbWM$xFXkcUjg8%>jEB<5wG8q|kKzxu40~3#nT*C6(-;#oIR7JQLtN|`@ B3v~bh diff --git a/toolkit/themes/osx/global/arrow/arrow-rit.gif b/toolkit/themes/osx/global/arrow/arrow-rit.gif deleted file mode 100644 index dce39aecc1887e897d4b23e7272bf7f977b6064a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmZ?wbhEHb@z$DbuzfyB= U{;ZM>P9N3$7E~v&vNBi$0Jv)uO8@`> diff --git a/toolkit/themes/osx/global/arrow/arrow-up-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-up-sharp.gif deleted file mode 100644 index 883a4f95ca178e01f7559013b6124b54532e771f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52 zcmZ?wbhEHbjEB<5wG8q|kKzxu40~2=-^YQ~-cX;OHA7Wy#1^_3P B3=RMQ diff --git a/toolkit/themes/osx/global/arrow/arrow-up.gif b/toolkit/themes/osx/global/arrow/arrow-up.gif deleted file mode 100644 index b8e09b21b8786b5ea51db8504457d2e65b130e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmZ?wbhEHb&g^9! QKyw&8UHx3vIVCg!015>oNB{r; diff --git a/toolkit/themes/osx/global/arrow/panelarrow-horizontal@2x.png b/toolkit/themes/osx/global/arrow/panelarrow-horizontal@2x.png deleted file mode 100644 index 4cb7353e7053969f420a6f58bfffc6806ec2826c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdWfP)Yx$~4uh zu@#7EV4IrC)z}Wk6fB2f3Lehw@x} diff --git a/toolkit/themes/osx/global/arrow/panelarrow-vertical.png b/toolkit/themes/osx/global/arrow/panelarrow-vertical.png deleted file mode 100644 index 3986f9cbf5355316442bc14c898affbb3a1d50e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&L!2%?OosMY%DIZT4$B+uf)boy92NZZ*E=I2U zBGY>3e^slAK!(+ypWLGN+!D)=TAsYsxw!tH#;1^(+S8WptZU&(xzV?F9lt=jN{Z6P hU&|Fz!aG{tur9v8-F%;8Ss>6{22WQ%mvv4FO#ozkFF^nR diff --git a/toolkit/themes/osx/global/arrow/panelarrow-vertical@2x.png b/toolkit/themes/osx/global/arrow/panelarrow-vertical@2x.png deleted file mode 100644 index a741dd0e16b75535ef0bc5eaceb7adfcc41fbd50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmV<90382`P)*BN%IQ!rOeuvUD1H-^1%`-PjDmt-BtO toolbaritem > textbox > hbox > hbox > html|*.textbox-input { - visibility: hidden; -} - -toolbarpaletteitem > toolbaritem > * > textbox > hbox > hbox > html|*.textbox-input { - visibility: hidden; -} diff --git a/toolkit/themes/osx/global/button.css b/toolkit/themes/osx/global/button.css deleted file mode 100644 index 45f292e1f..000000000 --- a/toolkit/themes/osx/global/button.css +++ /dev/null @@ -1,85 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -button { - -moz-appearance: button; - /* The horizontal margin used here come from the Aqua Human Interface - Guidelines, there should be 12 pixels between two buttons. */ - margin: 5px 6px 3px; - min-width: 79px; - color: ButtonText; - text-shadow: none; -} - -button:not([disabled="true"]):hover:active { - color: -moz-mac-buttonactivetext; -} - -/* When the window isn't focused, the default button background isn't drawn, - * so don't change the text color then: */ -button[default="true"]:not([disabled="true"]):not(:-moz-window-inactive) { - color: -moz-mac-defaultbuttontext; -} - -/* Likewise, when active (mousedown) but not hovering, the default button - * background isn't drawn, override the previous selector for that case: */ -button[default="true"]:not(:hover):active { - color: ButtonText; -} - -.button-text { - margin: 1px 0 !important; - margin-inline-start: 3px !important; - margin-inline-end: 2px !important; - text-align: center; -} - -.button-icon { - margin-inline-start: 1px; -} - -button[type="default"] { - font: menu; -} - -/* .......... disabled state .......... */ - -button[disabled="true"] { - color: GrayText; -} - -/* ::::: menu/menu-button buttons ::::: */ - -button[type="menu-button"] { - margin: 0; - border: none; -} - -.button-menu-dropmarker, -.button-menubutton-dropmarker { - -moz-appearance: none !important; - border: none; - background-color: transparent !important; - margin: 1px; -} - -.button-menu-dropmarker { - display: none; -} - -/* ::::: plain buttons ::::: */ - -button.plain { - margin: 0 !important; - padding: 0 !important; -} - -/* ::::: help button ::::: */ - -button[dlgtype="help"] { - -moz-appearance: -moz-mac-help-button; - width: 20px; -} diff --git a/toolkit/themes/osx/global/checkbox.css b/toolkit/themes/osx/global/checkbox.css deleted file mode 100644 index b49af98d0..000000000 --- a/toolkit/themes/osx/global/checkbox.css +++ /dev/null @@ -1,39 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -checkbox { - -moz-appearance: checkbox-container; - -moz-box-align: center; - margin: 4px 2px; -} - -.checkbox-icon { - margin-right: 2px; -} - -.checkbox-label { - margin: 1px 0 !important; -} - -/* ..... disabled state ..... */ - -checkbox[disabled="true"] { - color: GrayText !important; -} - -/* ::::: checkmark image ::::: */ - -.checkbox-check { - -moz-appearance: checkbox; - margin: 1px 1px 0; - /* vertical-align tells native theming where to snap to. However, this doesn't - * always work reliably because of bug 503833. */ - vertical-align: top; - width: 1.3em; - height: 1.3em; -} - - diff --git a/toolkit/themes/osx/global/checkbox/cbox-check-dis.gif b/toolkit/themes/osx/global/checkbox/cbox-check-dis.gif deleted file mode 100644 index bd43dd17c3bd07b1787baca148442ec777797d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60 zcmZ?wbhEHbWM^P!X!y@?;J|@~h6cr-EQ}05paUX6G7d~UE%GbHX4EJ}bB6>lFj#vT KMK9N8um%9ts19BL diff --git a/toolkit/themes/osx/global/checkbox/cbox-check.gif b/toolkit/themes/osx/global/checkbox/cbox-check.gif deleted file mode 100644 index f6919f8fade6ee12fe5010e3280a39e5167a86e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZ?wbhEHbWM^P!X!y@?;J^U}1_s5SEQ~;kK?g*DWE_}yTI5%X&8Sg|<_-y9V6e6Z E082ItH2?qr diff --git a/toolkit/themes/osx/global/colorpicker.css b/toolkit/themes/osx/global/colorpicker.css deleted file mode 100644 index 075437db8..000000000 --- a/toolkit/themes/osx/global/colorpicker.css +++ /dev/null @@ -1,41 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* ::::: colorpicker button ::::: */ - -colorpicker[type="button"] { - width: 38px; - height: 24px; - border: 1px solid #a7a7a7; - background-color: ThreeDFace; - padding: 3px; - -moz-appearance: button-bevel; -} - -.colorpicker-button-colorbox { - border: 1px solid #000000; -} - -/* ::::: colorpicker tiles ::::: */ - -.colorpickertile { - width : 20px; - height : 20px; - margin : 1px; -} - -.colorpickertile[selected="true"] { - border : 1px outset #C0C0C0; - -} - -.colorpickertile[hover="true"] { - border : 1px dotted #A7A7A7; -} - -.cp-light[hover="true"] { - border : 1px dotted #000000; -} diff --git a/toolkit/themes/osx/global/commonDialog.css b/toolkit/themes/osx/global/commonDialog.css deleted file mode 100644 index 53b02796d..000000000 --- a/toolkit/themes/osx/global/commonDialog.css +++ /dev/null @@ -1,35 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#commonDialog { - line-height: 13px; -} - -#filler { - margin: 0px -14px; -} - -#infoContainer { - max-width: 33em; -} - -#loginContainer { - padding-top: 10px; -} - -#info\.icon { - margin-inline-end: 14px; -} - -#info\.title, -#info\.header, -#info\.body { - font: menu; - line-height: 16px; - margin-bottom: 6px; -} - -#info\.title { - font-weight: bold; -} diff --git a/toolkit/themes/osx/global/console/console-error-caret.gif b/toolkit/themes/osx/global/console/console-error-caret.gif deleted file mode 100644 index a8f30f9263f49e8af6ed0d147103c604fcd67840..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZ?wbhEHbWM|-HXkcVuSQf~@z@Ye(1;}J%&;ha;Kr#$Wd_9Srt55TVPBLClrR&Yg GU=0BL015*D diff --git a/toolkit/themes/osx/global/console/console-error-dash.gif b/toolkit/themes/osx/global/console/console-error-dash.gif deleted file mode 100644 index 74679a25e24478b8784b00f920661a0b2b279f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 ycmZ?wbhEHbWM$xFXkcJqSQZE*6o0ZXGB7YQ=m6OaAQ=WG_MZNgr@7)87_0%hD+j~? diff --git a/toolkit/themes/osx/global/console/console.css b/toolkit/themes/osx/global/console/console.css deleted file mode 100644 index f18f6f680..000000000 --- a/toolkit/themes/osx/global/console/console.css +++ /dev/null @@ -1,165 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* ===== console.css ==================================================== - == Styles used by the Error Console window. - ======================================================================= */ - -/* View buttons */ -@import "chrome://global/skin/viewbuttons.css"; - -%include ../shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -.console-box { - background-color: -moz-Field; - color: -moz-FieldText; - overflow: auto; -} - -/* ::::: console rows ::::: */ - -.console-row { - border-bottom: 1px solid #A3A3A3; - padding: 4px; -} - -.console-row-file { - color: #505050; -} - -.console-row-msg > label:first-child { - font-weight: bold; -} - -.console-row-msg > label, .comsole-row-msg > description, .console-error-msg, .console-row-file, .console-row-code { - margin: 2px; -} - -.console-row-file > label { - margin: 0; -} - -.console-msg-text { - white-space: pre-wrap !important; -} -.console-icon { - list-style-image: inherit; - padding-right: 6px; - padding-left: 6px; -} - -/* ..... error rows ..... */ - -.console-row-code { - color: #0000BB; - font-size: larger; -} - -.console-dots, -.console-caret { - height: 9px; -} - -.console-dots { - background: url("chrome://global/skin/console/console-error-dash.gif") repeat-x top; -} - -.console-caret { - width: 7px; - background: url("chrome://global/skin/console/console-error-caret.gif") no-repeat top; -} - -/* ..... message rows ..... */ - -.console-row[type="message"] { - font-family: monospace; -} - -/* ..... selected state ..... */ - -.console-row[selected="true"] { - background-color: #3D80DF !important; - color: #FFF; -} - -.console-row-code[selected="true"], -.console-row-content[selected="true"] > .console-row-file, -.console-row-content[selected="true"] > .console-row-file > .console-error-source > .text-link { - color: #FFF !important; -} - -/* ::::: row colors ::::: */ - -.console-row[type="error"], -.console-row[type="exception"] { - background-color: #FFD0DC; -} - -.console-row[type="warning"] { - background-color: #F8F3CC; -} - -.console-row[type="message"] { - background-color: #D3EDFF; -} - -/* ::::: toolbars ::::: */ - -#ToolbarEval { - -moz-appearance: none; - background: @scopeBarBackground@; - border-bottom: @scopeBarSeparatorBorder@; - padding: 2px; -} - -#ToolbarEval > label { - font-weight: bold; - color: @scopeBarTitleColor@; -} - -#TextfieldEval { - margin: 2px !important; -} - -#ButtonEval { - margin: 0 4px; - padding: 1px 10px; - -moz-appearance: none; - border-radius: 10000px; - border: @roundButtonBorder@; - background: @roundButtonBackground@; - box-shadow: @roundButtonShadow@; -} - -#ButtonEval:hover:active { - text-shadow: @loweredShadow@; - background: @roundButtonPressedBackground@; - box-shadow: @roundButtonPressedShadow@; -} - -toolbarseparator { - min-height: 1em; - background-image: none; -} - -/* Toolbar icons */ - -#ToolbarMode { - -moz-box-pack: center; -} - -#ToolbarMode toolbarbutton > .toolbarbutton-icon { - display: none; -} - -#Console\:clear { - -moz-box-orient: vertical; - -moz-box-align: center; - -moz-appearance: toolbarbutton; - font: menu; - text-shadow: @loweredShadow@; - margin: 4px 0 9px; - padding: 0 1px; -} diff --git a/toolkit/themes/osx/global/customizeToolbar.css b/toolkit/themes/osx/global/customizeToolbar.css deleted file mode 100644 index bcedb2b99..000000000 --- a/toolkit/themes/osx/global/customizeToolbar.css +++ /dev/null @@ -1,38 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#palette-box { - margin-top: 2px; - -moz-appearance: listbox; - margin: 0 0 10px; -} - -#palette-box > toolbarpaletteitem { - padding: 8px 2px; - margin: 0 8px; -} - -#main-box { - padding: 12px; -} - -#main-box > separator { - -moz-appearance: none; - border-bottom: none; -} - -#instructions { - font: menu; - font-weight: bold; - line-height: 16pt; -} - -hbox button { - font: menu; -} - -#main-box > box > button { - min-height: 19px; /* aqua size for small buttons */ - font: message-box; -} diff --git a/toolkit/themes/osx/global/datetimepicker.css b/toolkit/themes/osx/global/datetimepicker.css deleted file mode 100644 index 3d7b201f2..000000000 --- a/toolkit/themes/osx/global/datetimepicker.css +++ /dev/null @@ -1,126 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -datepicker, timepicker { - padding: 0 0 1px; - margin: 4px; - border: none; -} - -.datetimepicker-input-box { - -moz-appearance: textfield; - cursor: text; - margin-right: 4px; - margin-bottom: 2px; - border: 3px solid; - -moz-border-top-colors: transparent #888888 #000000; - -moz-border-right-colors: transparent #FFFFFF #000000; - -moz-border-bottom-colors: transparent #FFFFFF #000000; - -moz-border-left-colors: transparent #888888 #000000; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - padding: 0px; - background-color: -moz-Field; - color: -moz-FieldText; -} - -.datetimepicker-input-subbox { - width: 1.6em; -} - -html|*.datetimepicker-input { - text-align: end; -} - -.datetimepicker-separator { - margin: 0 !important; -} - -.datetimepicker-year { - width: 3.2em; -} - -.datepicker-dropmarker { - margin-bottom: 2px; -} - -datepicker[readonly="true"], -timepicker[readonly="true"] { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -datepicker[disabled="true"], -timepicker[disabled="true"] { - cursor: default; - -moz-border-top-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-right-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-bottom-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-left-colors: transparent ThreeDShadow -moz-Dialog; - background-color: -moz-Dialog; - color: GrayText; -} - -.datepicker-mainbox { - margin: 2px 4px; - border: 2px solid; - -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow; - -moz-border-right-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow; - background-color: #EEEEEE; - color: -moz-DialogText; -} - -.datepicker-popupgrid > .datepicker-mainbox { - margin: 0; - border: none; -} - -.datepicker-gridlabel, .datepicker-weeklabel { - text-align: center; -} - -.datepicker-gridlabel[today="true"] { - background-color: darkgrey; - color: white; -} - -.datepicker-gridlabel[selected="true"] { - background-color: Highlight; - color: HighlightText; -} - -.datepicker-button { - -moz-appearance: none; - min-width: 8px; - padding: 0px; -} - -.datepicker-previous { - list-style-image: url("chrome://global/skin/arrow/arrow-lft.gif"); -} - -.datepicker-next { - list-style-image: url("chrome://global/skin/arrow/arrow-rit.gif"); -} - -.datepicker-previous:hover { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-hov.gif"); -} - -.datepicker-next:hover { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-hov.gif"); -} - -.datepicker-previous[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-dis.gif"); -} - -.datepicker-next[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-dis.gif"); -} diff --git a/toolkit/themes/osx/global/dialog.css b/toolkit/themes/osx/global/dialog.css deleted file mode 100644 index 98ed3ca20..000000000 --- a/toolkit/themes/osx/global/dialog.css +++ /dev/null @@ -1,77 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -#commonDialog > image { - margin-inline-end: 14px !important; -} - -#commonDialog > .dialog-button-box { - margin-inline-start: 80px; -} - -dialog { - -moz-appearance: dialog; - padding: 14px; -} - -/* ::::: dialog buttons ::::: */ - -.dialog-button { - font: menu; -} - -/* ::::: dialog header ::::: */ - -dialogheader { - margin: 0 5px 5px; - padding: 5px 8px; -} - -.dialogheader-title { - margin: 0 !important; - font-size: larger; - font-weight: bold; - display: none; -} - -/* ::::: large dialog header ::::: */ - -.header-large { - -moz-box-orient: vertical; - margin: -14px -14px 0; - padding: 12px; - padding-inline-end: 5px; - padding-inline-start: 25px; -} - -.header-large > .dialogheader-title { - font: inherit; - font-weight: bold; -} - -.header-large > .dialogheader-description { - margin-left: 12px !important; -} - -.dialogheader-description { - font-weight: bold !important; -} - -.dialogheader-title { - font-weight: bold !important; -} - -/*XXX - belongs to toolkit/content/finddialog.xul: */ - -#findDialog, -#findDialog > menu, -#findDialog > groupbox { - font: menu !important; -} - -#dialog\.caseSensitive { - margin-top: 8px; -} diff --git a/toolkit/themes/osx/global/dirListing/dirListing.css b/toolkit/themes/osx/global/dirListing/dirListing.css deleted file mode 100644 index de881a5e4..000000000 --- a/toolkit/themes/osx/global/dirListing/dirListing.css +++ /dev/null @@ -1,104 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -:root { - background-color: -moz-dialog; - color: -moz-dialogtext; - font: message-box; - padding-left: 2em; - padding-right: 2em; -} - -body { - border: 1px solid ThreeDShadow; - border-radius: 10px; - padding: 3em; - min-width: 30em; - max-width: 65em; - margin: 4em auto; - background-color: -moz-field; - color: -moz-fieldtext; -} - -h1 { - font-size: 160%; - margin: 0 0 .6em; - border-bottom: 1px solid ThreeDLightShadow; - font-weight: normal; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -p { - font-size: 110%; -} - -#UI_goUp { - margin-top: 0; - float: left; -} - -#UI_goUp:dir(rtl) { - float: right; -} - -#UI_showHidden { - margin-top: 0; - float: right; -} - -#UI_showHidden:dir(rtl) { - float: left; -} - -table { - clear: both; - width: 90%; - margin: 0 auto; -} - -thead { - font-size: 130%; -} - -/* last modified */ -th:last-child { - text-align: center; -} - -th:hover > a { - text-decoration: underline; -} - -body > table > tbody > tr:hover { - outline: 1px solid ThreeDLightShadow; - -moz-outline-radius: .3em; -} - -/* let 'Size' and 'Last Modified' take only as much space as they need and 'Name' all the rest */ -td:not(:first-child) { - width: 0; -} - -.up { - padding: 0 .5em; - margin-inline-start: 20px; -} - -.up::before { - margin-inline-end: 4px; - margin-inline-start: -20px; - vertical-align: middle; - content: url(chrome://global/skin/dirListing/up.png); -} - -.dir::before { - content: url(chrome://global/skin/dirListing/folder.png); -} diff --git a/toolkit/themes/osx/global/dirListing/folder.png b/toolkit/themes/osx/global/dirListing/folder.png deleted file mode 100644 index eb3a607e03d2592b4ffd689cdfad5517dd1e765f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmV-L0lNN)P)z|0y&;=-w;AOi^+z!+NIckL?N~9^7R3 z|MwqW&D;Wlr&#{}`D@l*o`pr)8AIehoPdDFDT~a&UU>2TE5nc9e@F^ERu(2i82tM4 zm*MB{za$y(@85rf0Y8DZ|0K}`fBzx5;QOyXU`z^NVL~?GC+P+-Gch6z`1b2J!w(V- zU}9uMbpfei0M!o*gWuqoAjtsaqzsC}-y|AGbG1GwJ2c_Zjmv4Vkxos%fdKR&%<*wvp1vXBd8 z0Q0|p{}_I=@-h7WhpMnDBM?lt%~+2r!6VK9(gV^9GJplddG`y`CPqFRx&VfLV{&-LpFnjM>vDLz8%9~pgu-M1_qEGmH;GpBZl)G+9-bf2E;q@!~{ss_U+r5fxcnL1A1X1 z0~tU~O)Veff}al_Jh&kvBcqBO0ssI1XF`b)Mn+Ju|A+CPJb7{(q!;7@6(Dv5Vpu9t z*3{HAlaP?GKsMmTix(%ZU%!3|$h->``VPeVS%5a(0W$6YZ4iJOcHQ0G-ItAx4aK>? ze*F>$8n6Y(d=F9&)b{}-j_gcLP{xXhiHYan;80{@Vq!qXATf{}H1la9`xWNL!29>_ zuOlY#6crVNfcn;>8{hz>#E6W5S3rFSKn#EY0|2;^tp{Woh-v@;002ovPDHLkV1hV& B@z($V diff --git a/toolkit/themes/osx/global/dirListing/up.png b/toolkit/themes/osx/global/dirListing/up.png deleted file mode 100644 index 7af8949ad368f760d0f8208e574ee3ef9f24071c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmV-v0+#)WP) za-KW;Yi7rpS-HLCf(j1I@a=nV-hT6aGnSMR|1*eQW-i@%kaB*upRfse`1IDrbN^(Z zH`g0S3&c|El{WmVfi*LG`!)N~Y3$lRULe+2-b0G?kDJTe##%&h(YQH#VGH`?03v%! zHm==$+%QL2-|!J8ydV}LLG#_biH{#V565u}yi4q?R(grKK$PTjN8+rjODfGXnweXwbfPJyZ>mQfG?l445u|( z>xWT(4}4`%qmwvNJA}~pu@qe2vTgO!6%3clDA7^)L7W?eswe^u99jlREx17yLDvRn zS>?H;a8U&*Rg`ALXhY761{{|9qL4&@T07D8l&Dk6S{lM&((n{|t4Pw^K({5~SzEY} zp!QyLzEgFaiosHM$Y7eY5;6D|mKT~mAQc=jVfdJSLM$VdEJ2tuY<^*2?FHBl>1l^6 zqdITwQ*)%>bk9WffJ~)Rcr>;pKELU-b&`EB`z62tM+*yP3N>_Y00000NkvXXu0mjf D^;Z-D diff --git a/toolkit/themes/osx/global/dropmarker.css b/toolkit/themes/osx/global/dropmarker.css deleted file mode 100644 index 701eea75c..000000000 --- a/toolkit/themes/osx/global/dropmarker.css +++ /dev/null @@ -1,31 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -dropmarker { - -moz-appearance: menulist-button; - width: 16px; - -moz-box-align: center; - -moz-box-pack: center; - border: 2px solid; - -moz-border-top-colors: ThreeDLightShadow ThreeDHighlight; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDLightShadow ThreeDHighlight; - background-color: -moz-Dialog; - padding: 1px; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); - -moz-image-region: auto; -} - -dropmarker:hover:active:not([disabled="true"]) { - -moz-border-top-colors: ThreeDShadow ThreeDFace; - -moz-border-right-colors: ThreeDShadow ThreeDFace; - -moz-border-bottom-colors: ThreeDShadow ThreeDFace; - -moz-border-left-colors: ThreeDShadow ThreeDFace; - padding: 2px 0 0 2px; -} - -dropmarker[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.gif"); -} diff --git a/toolkit/themes/osx/global/filefield.css b/toolkit/themes/osx/global/filefield.css deleted file mode 100644 index 8ae3fdb52..000000000 --- a/toolkit/themes/osx/global/filefield.css +++ /dev/null @@ -1,38 +0,0 @@ -/* -# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -*/ - -.fileFieldIcon { - width: 16px; - height: 16px; -} - -.fileFieldIcon[disabled="true"] { - opacity: 0.5; -} - -filefield { - margin: 4px; - margin-inline-start: 27px; - -moz-appearance: textfield; -} - -.fileFieldContentBox { - margin: -3px; - background-color: rgba(230, 230, 230, 0.6); - color: -moz-DialogText; - padding-top: 2px; - padding-bottom: 2px; - padding-inline-start: 5px; - padding-inline-end: 3px; -} - -.fileFieldLabel { - -moz-appearance: none; - background-color: transparent; - border: none; - margin: 0 4px; -} diff --git a/toolkit/themes/osx/global/filters.svg b/toolkit/themes/osx/global/filters.svg deleted file mode 100644 index d3ad6a76b..000000000 --- a/toolkit/themes/osx/global/filters.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - diff --git a/toolkit/themes/osx/global/findBar.css b/toolkit/themes/osx/global/findBar.css deleted file mode 100644 index 869a62432..000000000 --- a/toolkit/themes/osx/global/findBar.css +++ /dev/null @@ -1,270 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -findbar { - background: @scopeBarBackground@; - border-top: @scopeBarSeparatorBorder@; - min-width: 1px; - padding: 4px 2px; - transition-property: margin-bottom, opacity, visibility; - transition-duration: 150ms, 150ms, 0s; - transition-timing-function: ease-in-out, ease-in-out, linear; -} - -findbar[hidden] { - /* Override display:none to make the transition work. */ - display: -moz-box; - visibility: collapse; - margin-bottom: -1em; - opacity: 0; - transition-delay: 0s, 0s, 150ms; -} - -findbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-style: none; -} - -label.findbar-find-fast { - margin: 1px 3px 0 !important; - color: @scopeBarTitleColor@; - font-weight: bold; - text-shadow: @loweredShadow@; -} - -label.findbar-find-fast:-moz-lwtheme, -.findbar-find-status:-moz-lwtheme { - color: inherit; - text-shadow: inherit; -} - -.findbar-closebutton { - padding: 0; - margin: 0 4px; - border: none; -} - -.findbar-closebutton:-moz-lwtheme-brighttext { - list-style-image: url("chrome://global/skin/icons/close-inverted.png"); -} - -@media (min-resolution: 2dppx) { - .findbar-closebutton:-moz-lwtheme-brighttext { - list-style-image: url("chrome://global/skin/icons/close-inverted@2x.png"); - } - - .findbar-closebutton > .toolbarbutton-icon { - width: 16px; - } -} - -.findbar-find-next, -.findbar-find-previous, -.findbar-highlight { - margin: 0 4px; - padding: 1px 3px; - -moz-appearance: none; - border-radius: 10000px; - border: @roundButtonBorder@; - background: @roundButtonBackground@; - box-shadow: @roundButtonShadow@; - color: buttontext; -} - -.findbar-container > toolbarbutton:-moz-focusring { - position: relative; - box-shadow: @focusRingShadow@, @roundButtonShadow@; -} - -.findbar-container > toolbarbutton > .toolbarbutton-text { - margin: 0 6px !important; -} - -.findbar-container > toolbarbutton[disabled] { - color: GrayText !important; -} - -.findbar-find-next:not([disabled]):hover:active, -.findbar-find-previous:not([disabled]):hover:active, -.findbar-highlight:not([disabled]):hover:active { - text-shadow: @loweredShadow@; - background: @roundButtonPressedBackground@; - box-shadow: @roundButtonPressedShadow@; -} - -.findbar-container > toolbarbutton:hover:active:-moz-focusring { - text-shadow: @loweredShadow@; - background: @roundButtonPressedBackground@; - box-shadow: @focusRingShadow@, @roundButtonPressedShadow@; -} - -.findbar-closebutton > .toolbarbutton-text { - display: none; -} - -/* Match case checkbox */ - -.findbar-container > checkbox { - list-style-image: url("chrome://global/skin/icons/checkbox.png"); - -moz-image-region: rect(0px 16px 16px 0px); - -moz-appearance: none; - margin: 0 2px; - -moz-margin-start: 7px; -} - -.findbar-container > checkbox:hover:active { - -moz-image-region: rect(0px 32px 16px 16px); -} -.findbar-container > checkbox[checked] { - -moz-image-region: rect(0px 48px 16px 32px); -} -.findbar-container > checkbox[checked]:hover:active { - -moz-image-region: rect(0px 64px 16px 48px); -} - -@media (min-resolution: 2dppx) { - .findbar-container > checkbox { - list-style-image: url("chrome://global/skin/icons/checkbox@2x.png"); - -moz-image-region: rect(0px 32px 32px 0px); - } - - .findbar-container > checkbox:hover:active { - -moz-image-region: rect(0px 64px 32px 32px); - } - .findbar-container > checkbox[checked] { - -moz-image-region: rect(0px 96px 32px 64px); - } - .findbar-container > checkbox[checked]:hover:active { - -moz-image-region: rect(0px 128px 32px 96px); - } -} - - - -.findbar-container > checkbox > .checkbox-check { - display: none; -} - -.findbar-container > checkbox > .checkbox-label-box > .checkbox-label { - margin: 0 !important; - padding: 2px 0 0; -} - -.findbar-container > checkbox > .checkbox-label-box > .checkbox-icon { - -moz-padding-start: 1px; - padding-bottom: 1px; -} -@media (min-resolution: 2dppx) { - .findbar-container > checkbox > .checkbox-label-box > .checkbox-icon { - width: 17px; - height: 17px; - } -} - -.findbar-container > checkbox:-moz-focusring > .checkbox-label-box > .checkbox-icon { - border-radius: 4px; - box-shadow: @focusRingShadow@; -} - -/* Search field */ - -.findbar-textbox { - -moz-appearance: none; - border-radius: 10000px; - border: none; - box-shadow: 0 1px 1.5px rgba(0, 0, 0, .7) inset, - 0 0 0 1px rgba(0, 0, 0, .17) inset; - background: url("chrome://global/skin/icons/search-textbox.png") -moz-Field no-repeat 5px center; - margin: 0 4px -1px; - padding: 3px 8px 2px; - -moz-padding-start: 19px; -} - -.findbar-textbox:not([focused="true"]):-moz-lwtheme { - opacity: 0.9; -} - -.findbar-textbox[focused="true"] { - box-shadow: @focusRingShadow@, - 0 1px 1.5px rgba(0, 0, 0, .8) inset; -} - -.findbar-textbox[flash="true"] { - background-color: #F7E379; - color: #000; -} - -.findbar-textbox[status="notfound"] { - background-color: #FD919B; - color: #FFF; -} - -/* find-next button */ - -.findbar-find-next { - -moz-border-end: none; - -moz-margin-end: 0 !important; -} - -.findbar-find-next:-moz-locale-dir(ltr), -.findbar-find-previous:-moz-locale-dir(rtl) { - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} - -/* find-previous button */ - -.findbar-find-previous { - -moz-margin-start: 0 !important; -} - -.findbar-find-previous:-moz-locale-dir(ltr), -.findbar-find-next:-moz-locale-dir(rtl) { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -/* highlight button */ - -.findbar-highlight { - -moz-margin-start: 8px; -} - -.findbar-highlight > .toolbarbutton-icon { - width: 13px; - height: 8px; - margin: 0 4px; - -moz-margin-end: 0; - border: 1px solid #818181; - border-radius: 4px; - background-color: #F4F4F3; -} - - -.findbar-highlight[checked="true"] > .toolbarbutton-icon { - background-color: #FFFF00; - border-color: #818100; -} - -.find-status-icon { - display: none; -} - -.find-status-icon[status="pending"] { - display: block; - list-style-image: url("chrome://global/skin/icons/loading_16.png"); -} - -.findbar-find-status, -.found-matches { - color: #436599; - font-weight: bold; - text-shadow: 0 1px rgba(255, 255, 255, .4); - margin: 1px 1px 0 !important; - -moz-margin-start: 12px !important; -} diff --git a/toolkit/themes/osx/global/global.css b/toolkit/themes/osx/global/global.css deleted file mode 100644 index 261abe313..000000000 --- a/toolkit/themes/osx/global/global.css +++ /dev/null @@ -1,378 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* all localizable skin settings shall live here */ -@import url("chrome://global/locale/intl.css"); - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* ::::: XBL bindings ::::: */ - -menulist > menupopup { - -moz-binding: url("chrome://global/content/bindings/popup.xml#popup-scrollbars"); -} - -/* ::::: Variables ::::: */ -:root { - --arrowpanel-padding: 16px; - --arrowpanel-background: linear-gradient(hsla(0,0%,99%,1), hsla(0,0%,99%,.975) 10%, hsla(0,0%,98%,.975)); - --arrowpanel-color: hsl(0,0%,10%); - --arrowpanel-border-color: hsla(210,4%,10%,.05); - --arrowpanel-border-radius: 3.5px; -} - -/* ::::: root elements ::::: */ - -window, -page, -dialog, -wizard, -prefwindow { - -moz-appearance: dialog; - background-color: #FFFFFF; - color: -moz-DialogText; - font: message-box; -} - -prefwindow[type="child"] { - padding-top: 18px; - padding-bottom: 15px; - padding-inline-start: 18px; - padding-inline-end: 20px; -} - -/* deprecated */ -window.dialog { - padding-top: 8px; - padding-bottom: 10px; - padding-inline-start: 8px; - padding-inline-end: 10px; -} - -/* ::::: alert icons :::::*/ - -.message-icon, -.alert-icon, -.error-icon, -.question-icon { - width: 64px; - height: 64px; - margin: 6px; - margin-inline-end: 20px; -} - -.message-icon { - list-style-image: url("chrome://global/skin/icons/information-64.png"); -} - -.alert-dialog #info\.icon, -.alert-icon { - list-style-image: url("chrome://global/skin/icons/warning-64.png"); -} - -.error-icon { - list-style-image: url("chrome://global/skin/icons/error-64.png"); -} - -.question-icon { - list-style-image: url("chrome://global/skin/icons/question-64.png"); -} - -/* ::::: iframe ::::: */ - -iframe { - border: none; - width: 100px; - height: 100px; - min-width: 10px; - min-height: 10px; -} - -/* ::::: statusbar ::::: */ - -statusbar { - min-width: 1px; /* DON'T DELETE! - Prevents hiding of scrollbars in browser when window is made smaller.*/ - min-height: 15px !important; - margin: 0px !important; - /* need to use padding-inline-end when/if bug 631729 gets fixed: */ - padding: 0px 16px 1px 1px; - -moz-appearance: statusbar; - text-shadow: rgba(255, 255, 255, 0.4) 0 1px; -} - -statusbarpanel { - -moz-box-align: center; - -moz-box-pack: center; - padding: 0 4px; -} - -.statusbarpanel-iconic { - padding: 0px; -} - -/* ::::: miscellaneous formatting ::::: */ - -:root:-moz-lwtheme, -[lwthemefooter="true"] { - -moz-appearance: none; -} - -:root:-moz-lwtheme-darktext { - text-shadow: 0 -0.5px 1.5px white; -} - -:root:-moz-lwtheme-brighttext { - text-shadow: 1px 1px 1.5px black; -} - -statusbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-style: none; - text-shadow: inherit; -} - -.inset { - border: 1px solid ThreeDShadow; - border-right-color: ThreeDHighlight; - border-bottom-color: ThreeDHighlight; - margin: 0 5px 5px; -} - -.outset { - border: 1px solid ThreeDShadow; - border-left-color: ThreeDHighlight; - border-top-color: ThreeDHighlight; -} - -separator:not([orient="vertical"]) { - height: 1.5em; -} -separator[orient="vertical"] { - width: 1.5em; -} - -separator.thin:not([orient="vertical"]) { - height: 0.5em; -} -separator.thin[orient="vertical"] { - width: 0.5em; -} - -separator.groove:not([orient="vertical"]) { - border-top: 1px solid #A3A3A3; - height: 0; - margin-top: 0.4em; - margin-bottom: 0.4em; -} -separator.groove[orient="vertical"] { - border-left: 1px solid #A3A3A3; - width: 0; - margin-left: 0.4em; - margin-right: 0.4em; -} - -.plain { - -moz-appearance: none; - margin: 0 !important; - border: none; - padding: 0; -} - -description, -label { - cursor: default; - margin-top: 1px; - margin-bottom: 2px; - margin-inline-start: 6px; - margin-inline-end: 5px; -} - -description { - margin-bottom: 4px; -} - -label[disabled="true"] { - color: GrayText; -} - -.tooltip-label { - margin: 0; -} - -.header { - font-weight: bold; -} - -.monospace { - font-family: monospace; -} - -.indent { - margin-inline-start: 23px; -} - -.box-padded { - padding: 5px; -} - -.spaced { - margin: 3px 5px 4px; -} - -.wizard-box { - padding: 20px 44px 10px; -} - -.text-link { - color: -moz-nativehyperlinktext; - cursor: pointer; -} - -.text-link:hover { - text-decoration: underline; -} - -.text-link:-moz-focusring { - box-shadow: @focusRingShadow@; -} - -.toolbar-focustarget { - -moz-user-focus: ignore !important; -} - -notification > button { - margin: 0 3px; - padding: 1px 10px; - min-width: 60px; - min-height: 16px; - -moz-appearance: none; - border-radius: 10000px; - border: @roundButtonBorder@; - text-shadow: @loweredShadow@; - background: @roundButtonBackground@; - box-shadow: @roundButtonShadow@; -} - -notification > button:active:hover { - background: @roundButtonPressedBackground@; - box-shadow: @roundButtonPressedShadow@; -} - -notification > button:-moz-focusring { - box-shadow: @focusRingShadow@, @roundButtonShadow@; -} - -notification > button:active:hover:-moz-focusring { - box-shadow: @focusRingShadow@, @roundButtonPressedShadow@; -} - -notification > button > .button-box > .button-text { - margin: 0 !important; -} - -popupnotificationcontent { - margin-top: .5em; -} - -/* :::::: autoscroll popup ::::: */ - -.autoscroller { - height: 28px; - width: 28px; - border: none; - margin: -14px; - padding: 0; - background-image: url("chrome://global/skin/icons/autoscroll.png"); - background-color: transparent; - background-position: right top; - -moz-appearance: none; - -moz-window-shadow: none; -} - -.autoscroller[scrolldir="NS"] { - background-position: right center; -} - -.autoscroller[scrolldir="EW"] { - background-position: right bottom; -} - -/* autorepeatbuttons in menus */ - -.popup-internal-box > autorepeatbutton { - height: 15px; - position: relative; - list-style-image: none; - /* Here we're using a little magic. - * The arrow button is supposed to overlay the scrollbox, blocking - * everything under it from reaching the screen. However, the menu background - * is slightly transparent, so how can we block something completely without - * messing up the transparency? It's easy: The native theming of the - * "menuitem" appearance uses CGContextClearRect before drawing, which - * clears everything under it. - * Without help from native theming this effect wouldn't be achievable. - */ - -moz-appearance: menuitem; -} - -.popup-internal-box > .autorepeatbutton-up { - padding-top: 1px; /* 4px padding-top from the .popup-internal-box. */ - margin-bottom: -15px; -} - -.popup-internal-box > .autorepeatbutton-up > .autorepeatbutton-icon { - -moz-appearance: button-arrow-up; -} - -.popup-internal-box > .autorepeatbutton-down { - padding-top: 5px; - margin-top: -15px; -} - -.popup-internal-box > .autorepeatbutton-down > .autorepeatbutton-icon { - -moz-appearance: button-arrow-down; -} - -.popup-internal-box > autorepeatbutton[disabled="true"] { - visibility: collapse; -} - -/* :::::: Close button icons ::::: */ - -.close-icon { - list-style-image: url("chrome://global/skin/icons/close.png"); - -moz-image-region: rect(0, 16px, 16px, 0); -} - -.close-icon:hover { - -moz-image-region: rect(0, 32px, 16px, 16px); -} - -.close-icon:hover:active { - -moz-image-region: rect(0, 48px, 16px, 32px); -} - -@media (min-resolution: 2dppx) { - .close-icon > .button-icon, - .close-icon > .button-box > .button-icon, - .close-icon > .toolbarbutton-icon { - width: 16px; - } - - .close-icon { - list-style-image: url("chrome://global/skin/icons/close@2x.png"); - -moz-image-region: rect(0, 32px, 32px, 0); - } - - .close-icon:hover { - -moz-image-region: rect(0, 64px, 32px, 32px); - } - - .close-icon:hover:active { - -moz-image-region: rect(0, 96px, 32px, 64px); - } -} diff --git a/toolkit/themes/osx/global/groupbox.css b/toolkit/themes/osx/global/groupbox.css deleted file mode 100644 index 840645827..000000000 --- a/toolkit/themes/osx/global/groupbox.css +++ /dev/null @@ -1,30 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -groupbox { - padding: 5px 1px 1px; - padding-inline-start: 0; - margin: 6px; -} - -.groupbox-body { - -moz-appearance: groupbox; - padding: 8px 8px 3px; - margin: 0; -} - -caption { - padding-inline-start: 4px; - padding-bottom: 1px; - font: caption; -} - -/* !important is needed to override label in global.css */ -.caption-text { - margin-top: 0 !important; - margin-bottom: 0 !important; - margin-inline-start: 1px !important; -} diff --git a/toolkit/themes/osx/global/icons/Error.png b/toolkit/themes/osx/global/icons/Error.png deleted file mode 100644 index 424ebfd4adf6c2a1825bb1fa078968cea96f7a09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1439 zcmV;Q1z`G#P)W069O*g#6rh)|$5=5Yif`BSQKoKZSl*UQg zw5cM3os!0G(%OzQwukSG@3ki5J9c`d6Ho5kIlu3obDx@Nnxrb4rty#WeWJb>h%R}F zo}h;)b)vcNiJt#}=nntu%2B-#aNiq5gRqOKW5?1x$6_%h+;o9k^^FE?Pft@M8l_|^m1bY;lYMKBD7GRX;cubgEBN5(&`>6R z@F114S6L%NLT_S{7nHL>g&ryyk4s2a&6AL2{0A! z0{#6|#&0g4w?uqu6XB8Yvw*(@crua5gix^qxaA}srz4Y-mhrP`3%|-Vv>8C#q-f8v ztK{=^0I=R@G{cOuj&yiW6QwQ^&0p*7HE$;p=5_dDyAh9@m6;h+7Jj~tx+T10TeR5% z*E!mk@O%w*b9l$L*wbVF9SWJuVkWa$K=?aU%*JBovaYw_>~w2#(sY(GoG!wtgtiQI zWgA?U0(@M>`&nUg!JzpU+A@>b9`Pp~tW>DByK9B4(OgI@bC%%o3yX{wmgmc(E3UIwW0#NbiFkL{=hoEX>)oP&p!gB3HYA5jk?PY5#0Va_%KB~ zPar^>I2SC{YAeiSHc!_uY;b^R>~*5^kB34dk3eCyRBFx)7{x4?Qmcz6|&mMCWkUx`FC7O&kiatx=+%=&{!zVmurkIfTYlY@6(KM;@)@38Krf zyeh=V_IfaA&9H?^W#vo2^Ud)8$I0`GZ#Ydm53mHR68(ADFiwR1{zEWp>+}joT9@OP zG_PD@Ipu(F;&;AMx%Cy%yMW^`WnEStaDew5N_m5W^>8F!B>He%*GH3)2$c#2*Mq5B zVUGcPyI!r*qG83L)TRrPG2B4Hy@7<$$z;Qo32WnOY?|3y6 zA_fj463;>ecEXW|NdY#om7f6LZ1y~-f_J@~@?r+-6&A6LEv?I4r6va1hOq5@UrwFZ tbJzi~Rs?L5p<5R08|zM|>-qlz3;+|7NL>lT@LK=?002ovPDHLkV1lGpsvH0S diff --git a/toolkit/themes/osx/global/icons/autocomplete-dropmarker.png b/toolkit/themes/osx/global/icons/autocomplete-dropmarker.png deleted file mode 100644 index e48d044526420594096425ba1ed777bba2022cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRZ!3HF6%}!4MQY`6?zK#qG*KS<#k1zuAB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%)p)u%hE&{2N=Zo2U`X<1yYs-n zfx(cmQ`O;*aC;NK!yY+>h8h3<|NqZ+;zo<}MXv>a!W$Tpnu@+Lesnfrecs4*u2F)4 zktK}f$sgvR?#3VdAqUG9;uwQ@1sn_}J8;P}ue1$#7p3r@*@sV|!C_JX4~ve2Our7> dAqGY^2H7W;7sSsxe*(IL!PC{xWt~$(697L9OQ`?= diff --git a/toolkit/themes/osx/global/icons/autocomplete-search.svg b/toolkit/themes/osx/global/icons/autocomplete-search.svg deleted file mode 100644 index 3d1795d29..000000000 --- a/toolkit/themes/osx/global/icons/autocomplete-search.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - diff --git a/toolkit/themes/osx/global/icons/autoscroll.png b/toolkit/themes/osx/global/icons/autoscroll.png deleted file mode 100644 index c21e067d9aa17bd49498d7297d37183e0f96fa72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2983 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 diff --git a/toolkit/themes/osx/global/icons/blacklist_favicon.png b/toolkit/themes/osx/global/icons/blacklist_favicon.png deleted file mode 100644 index e67d3d34f02e8e6a34166bcdd950fc8022938129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3LP)ON^f}Um)&^c&#H}7#S`KfqQjmBaPH0VYl0jvh2e zhi@JD?!Z@qM`hjL#}M0_75P4Tx0C)kdlFLfNKoo}mrbt1m8?OjLK&c87rGM{UQj_qbR#bN0Nn|KAcFV;g5X9+|b?^{W}SC*PJyu=7$S}6F|$e=eW01P+tMKg8Tf0@Yva**4~SVW{C@mqUcYZI0Y`H{rWHu-0sAk&&=t^e3#8kC z%BO0lK7+D95HQCB3k8nM~dK6aa?Hr*t<+1>ka=G=SkE4wvrqaYsk?3|f7 z-_ui%i8XiYU?8o zjGLL7oPhT~c$78|f*`z{PN#=xO!l)mucT@su@zgPkcWYRLk>LmSPBFd0A{x$m@8UZ zme5e*yg{W%Qn_+W^pAR^?fIM}NV024wf@}l)tYB&? z3zOLkKx0Lb9dzFppTN=KAqa-*ptG}+kQ6Pe;a*FH0u(XJEPg5qD4!Zq>?23Nhcl;A z;KxMU@w@_{R4Q4ERWYK?Q=^#cO&fZ}Sr7=q)r+qM8523Ue;1<~R)Hdy;LyHZEHF!3Z-Ce}tsKIr>CJovK)?V{ z=K(249Ud5rEEnP4jgLdLc?qP?9EVRodGgqpetQ727tcdoeIvAWtYtDg-uwhAW!66VQe%&3#!{bVeG58I zXVWDb*~gO|9(wFK=zYB#H}DnE!F+gN4~U`{Ha+|_c#u*?%QX!@c=BP@ntLFzryo+s zj^OR!hu=ni#AJv-)gyZ8mT(^Qrq^@^%(a(ufQ;BXzAMmiTSq;864c8z$~Kj6eZxYy z|A8mjl);0$8NH)x6G+j;Ec=ztD#|wXV6YB4;&(FKufP1j=!zTT5DrI}Ucou`_Rm#- z-O3!sw0Yyagk{&YL;Ef3;P~jz&=9@?Ze6_|&jTa#?#eROW>=_DWzkp*v@Bf#=f+O4 zTcdUPN>DZ9(s1GDEdZ2lYP{0v_F>HsaJeC!MP#L9VoAAv!y}BJ$xnkq?*r_#24B{_ zfJPepaXW1tYuJ=xslX_{8q4BY0Pp}gJ(kWiFS@eQW5zN!es+u=Os6dg`i4ASU(J5M z-xTZSh}B)@junf=vUs_eZ}x~5o-gF{;{y%f1-z+BdAy)$%_?4bR)BPiKCcfn#VVcfZiMT|3Pnv&AkTe)y;1%fe^R9l0$0qOjn?Yc3Z#D`YSL fZvVOR|407>)q{XBbB(Zu00000NkvXXu0mjf$!s(7 diff --git a/toolkit/themes/osx/global/icons/checkbox@2x.png b/toolkit/themes/osx/global/icons/checkbox@2x.png deleted file mode 100644 index 61bcc59c7d79a4054dd2c0d4bc9722ec8b660f59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1824 zcmV+*2jBRKP)@JF65fnvKc0q|KDEH;E zE_W^7s0^~+cZHcHHJ_%#u$weqI^AP!cN(pncc522OGPSJRzAm=X)pTeLZvL z>^Nb9{jeYQgZ<&;a1_^0| ziFQ}U&-?(w&~N}uoF%+HPUZ&?hK2)R;w-^jKPxM13c*O|CxA@!57(Sx>qg&1eT_!* zK%r0!SeQ?FNm$BSU#(U@aCCGWurQzUlCacLyjRA7x1`sa32&l)W@aWRl}ZpXpR!{- z^xfUvLBxE@4$A?c$pgJ!4^N&vfuW%xS)jFO&EcCeS}}mr&&kOF?IA7b@^!L6Ytfom z{emN<(0=h(ID7SvF|#>-o0Rzm%Qb*WKYeF5B&zqq7S-7C_WeZ4e1l*OV48O1G=F3W zOw+Ly12}zcJ~3ZgAS<*cR=@4yE$H~BXUybkE2Yf8L6|J1FPHhNf}^F(zd@KRHUQip zy?XTu1_uXah1N9Hw_*Tyz36Zel$|Jpin0n>ptWdCtp4fC-OzmDcW634dP-_8ft#DV zz?l0jqE9xHTr$hsTLd{b6BYD1G{`e=K;<_ZOY|LqbBV>hm}7 z{P}YxpaW1@%>=Bz;ma;F4i*`p;Y_FCyclV_3PsHijf_X@Ytpr5L~c?G&PlO4MEtq$ zLl%R!^!Xcj_UsuGumezCRl@|Ve#7Y-JgFJ^;Oy)Sp%I^RQ~StkmK2t>f~)I$0`nL9 zuYlUt>u7y-dOpvpHIbZw-oE~z+HuJ2nk6xDY2e`Sj=+33_m3fkJQmOac>44y6R-nN zQ>|wLR==+8XO84;`@o5qZ!&V-hB&Bgxz1l7NrmAWD7}0I=Fgd{gwmSJTpM%%sL_Og zz%Vl->C~=DJIG%jNs?wS393S1{>+(95TBgQwLu4fzOu0ZI{^BcS|*_NiOIRTTG6RI zBy=;>H2ui6;c5N}0)rz2ZD%W7;lPmwz8zMdnj9XTEIO5Y`7DN%?FYCvBbldMAYAl0 zIB<^-QyX*u9zTA}1ndCR>g$+*o`HzLl&H_tq9ItbE*h$hKk)66G&!Q}Qg>?kHWaKr zovtZ<{wqa8p!D{G{r!d$vMwJv=JOtPTYo0BY_q3l}XH4}sT0@`&0G5iu#`_0BM;u3(kM=;XK%yx?fNS9f14y?=u1Y8rE=%30VCyVxAdwSGfhC z#I~*(b3MGE=wyem1_7&2&9lTudQabsSxznxm$XZ?208%!{ryb94!|jckqKD+6SY@F z_!@%O$5=I=z5?dz^b-BA-~&Lmg2nLiSz^_E`U<#llSZ;XIskoreM~^_#GPtn0#={C zwuwPx}uCu#PHLVqOk^j;(xfS|Q8l6@)Y0NlHGj|tcTXf!r4 z0jqz!>MKc(RbC*QGvR^&M8+gr?MK1tQ=_FwQ00J!r|^}}Z^=rl{V3=F+`W633FseV z8k?Db)i18NV3nig=OBQ*dYQ~$x-5u0XR9AN0K{Z#B&6)&7Jw%6Kl<2{J7=pOIsm=B zy-dIkKyy_XuPakD;*SH0&>^L$^l^+`fHVR%p%P8~DqXzL6~0T3g#?#rV%6 z(58MtaT6RaX_u9PV|e{URW>n9UT95Q`usho)VCk@!+!kVj=uq0UB0W4r#u({ O0000K diff --git a/toolkit/themes/osx/global/icons/chevron-inverted.png b/toolkit/themes/osx/global/icons/chevron-inverted.png deleted file mode 100644 index 8ad164baaf7d205f16d7d7742d2fdd09caf71efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmV`q2*z3^2a)7uFo>%F3Vi(k&DK4(62e+2 z4U%MH;A1e%to#4||GWQRjNLNoA*|WrAbm^>0_`dP-~NB||GlGmTPlPVsR5QcVe|jP z|JVQDm?lmLhO!bEWPlRK%z#F`{QufEr#uS6vdd=BVc=pos0+0A)&Eysh3O#>mUjVz xE(15n8Db2!43P{$35OBIAEnFF&nX$tVSE;Hp7%VWBOoCR1#t%jAv$|G;T4=~Y`JFe3P&J$IU&NS zuXP$14omYLT?u(OiI1|ox7!^yV^dBJeq-Nr@t>&dBOR)bAwGKtZ99d~gpdSRpq z?lP41W0%6oag*6J8-)2mM;U4$Z?yzhaQ`VOk}zxT-1tayF_1Uvg1dtFI+6Ds9lWO5 zWJALE)CDDb@;}~ij!S^xeDzzbf1g-w@1hy$sU|os0rulGwot}HJVFJxaFymmqT`dl Xk4DNQT~lE;00000NkvXXu0mjfX1>!~ diff --git a/toolkit/themes/osx/global/icons/chevron.png b/toolkit/themes/osx/global/icons/chevron.png deleted file mode 100644 index b2d31e38f56dda9807001c84e1d2bc31ced0eb0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(0wkS_^Bw{z$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gb3I)gLpY+769m#DP8#$lDmE(!aWnnnj?GQcNI#J_!_JZK zSki-L&#st^6pbX0)ERpM_)ciCY+7dU;eg6f|7*r7MlMD^_q6zv4GWx9jn7Cdl4z1B z(qa+R>FCjM)@_z|{`0y@Hq}7;Vd>v`z6mWV&Z^DU&PP65rK`4aalE!S_i$=i*sM53 v@t0$66I0LE`TVbb{O3*3Xi0F)VPtr}*M4EaiEoTRhcbA&`njxgN@xNAvglRU diff --git a/toolkit/themes/osx/global/icons/chevron@2x.png b/toolkit/themes/osx/global/icons/chevron@2x.png deleted file mode 100644 index dd91178030e5f6b315f642909617cce898cdfb7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 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�L5&RZW_>|xBGa*N|I$`y% zjdN6k==)hG6}a#i=%*L|X(rH$@1OymJ<-w8i3sQoYjmuIb+T349E|an+`}E8AAXcS z`migoS!)glV=Ux$-T2G4;w?=T(nTakn&gz+&;Or7v1)B_*jz zllSs&&%C_%NF^5zckawRGjnI|7+Pz1%PT8sQ<{p9PpwSxZ9201QsWO z2fS-~P7Gf#4D}9JNQT4HBje*x@%TBiS*>CxpGT!$e|ZzQFRIQ=f-Cg?F%r?mbXxxm zh4cYa-6!^lUD?B7eVEPad|#h_1H2+9EW{pp1{L!$rKX4b`_YOk1SFU)L5Lo?$^9#BpLypKvD|hrAWuMpu+Y|++uJBiOu#%oMu1Nei2RMZ z25nZm8xF^BW5a8(3!_U5r52|hXU~C?L7k`&e~2mzHoCEaAR{*!Ss-$jx?b8$$%aKe3LcGf57n6|)klBP`}+p(DMK)!4+16*T^(y2rO#m!B`#>VhrY6>;JxmhaV z7uy=A?#s*!qt)@FR>N=GUdaPXhFgc>hrrw=rEZNTllaGoJ*}2M5KeuRLX=q)Xgjp5 z_jAA_s`tEl1&J&7fM=JLx^X>~g5qp=Morn`x7|8ALXqSJ;4#&^Qdegd+(DABdG$8% zlv6O-ZJ4S+ZV7lIk)?DFw_}*ROfJd?aSQAx;db&bQR*C|GXVww?Y1JAfk`>;00000 LNkvXXu0mjfLZ>h~ diff --git a/toolkit/themes/osx/global/icons/error-64.png b/toolkit/themes/osx/global/icons/error-64.png deleted file mode 100644 index 972abaff3bf38afb7291a87b1ef178588082cb31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2533 zcmVJL`w&$oB8qZRluOlCNIdh9Cse5q$pcSFsA`)gy(NT36h%>5 zwFsByQcxah3>Gm3JE?836&o8HgLijk`v1mf@MJufb9QENC3>XM?5=muoZtWZ&i^}e zv1Z#g-OWv>yS!!7>PXWx-erWSylE+ql~dIco0(STW>bP^*z5;HFRv#0c{w9COZ1Z` zh<=Sj7Sa$wOWKKm&%HZ+!VB4WB$oDlPv4hP1e#(!HDd)D#-zqn3pv?O9G<4zwO%{uLdx+jh zDniKu2zUeVKWftTL!G;JQ4#QkD_6<_?>3{knT#!4XsEZ>5n*>i5lRxkh5r-LEA_g5 zxZ|Z{81MkW<#T+WC7k52eds0=dGfXTfeOY!vhN zd(dYK`sQPV{ocgbiU?3kXD8KS%ts}vLtqBD@b9wQGdxmDo0uSLem*b)E_@pnCz*Ti zbv_$?=_Q(b>n*7zaa449zxu@&srAh_7a^yoY3T9CX`!z#JQFG^D6?)Ijbf@!+4kP2 zBdWtP0bIlTJq)iAbG{9W4t;WxtU@7l@CM-9J@9TDg9z7sBB-W)4dB-ac(<_#mt#c8 zR8^6VRpaRJFiqI@zUM=#!`B3G;eY3rI=HL;)mIcYg@PjQZzBPjAPet}yuTF#MDS-0 zX99~bhIPsm)(Ou9c*1P~#56H}OY~zW@(m3RJVn5VMLtM`SqTwrU*yB!y&_x+$%G|B zjkMZY8pn58glCCw4F?Xy!gJ#k=4i?oqa_LNT+G0+ z8!-kmsy{IBV(l9>HMEB4Ff$6)WdiW)Y94?LJnttY2B{)~3jA%K!FT=RTDF13LIzli zKdJU|`vs^_S*y<-KTa2s-m;Cs7|;$#e;2+@0scIWJ%cf50i~2e$}2O53BdhiteBeY z{WAA-19N*Yfe3Eo*5I>t1^9Cek7MUT#%l%at);21g)W5bn0oCO!{AIvAVMjTXZUFx zv(mHjR9SFEUKF(y7c6d0vCDsseU~H%0}qSWDv|FO@Kph2(+;U9-b>1{0@w;`b-xI6 ziXwCC`^Y^;blvz|Gks|adSWHM8-QE(iGt= z`nu*bJd&LAmZ|`D!p+SD7GWR-5zcxdPcbeZw2#Z=*eOs-s(GhF5)l}FDx%ayrMm1C zP^to|S9W+haIGG|ev_i%^?B0X3NbWW(Ws>bP`T6^V8TK zk^HTDjIk0#Fq51NMQ!&f!ha&*E5$m2Bl=H;6(b+(KHo)^Qp=zoRt01?9>{|V@E;5K z3eUi@LWEBhM0ik$pgP_-0c=x2(X}POj|q7H+MY$YQi2E#Jw4Lnjhg~amN<)Y%~PkD*_AjiGm30@ZGqek*+&TR)81kzUTO&AZj~z-~i>P zr(*~C4-9g|10U9(Ev{IyP#;T(uz+Kq#Te|UJ^^2-tR!X{B>JhS>{gfn^KTFx=_h)9 z@YXG|*Q_BelL20zw^)SPS+Yzsw6^BDyXkwqy_ECaCHlKa`y8o1 zH*1SfwZLb#`+SDsKLmUp@L^|~8sN<(_=E2d{f50(EOYYi{XzfDQTH_d9&C*e;e`h@ z?bS^&BJlFK+9yJ90(k!toXz&TLIj5YGvIFm-iWIC)zuFC0J8aQqCeoH|L}EN3cES# z5kV7~;E3=nMCc-Vb#qM(>FCfb7DF?EMc9ftIf%iIA3uKkGFH;Y*92Pm-T_Rv5B<+a zL|*4PpUcq&%z60P>qi#hIr7&i?)G??2+u%-jjjlDb7Wgqs0amNELlqLadF$TLd}xr z&Ze(rvRTLQ1~5j3Ke_}z!^so$s7&ZHLVgkU5WV~W(f%zEL5mQ$+CWOKu+vFC{=wb$|#jY(RB*sIG2N zgcZsJHav6HD(b@+E+X>pN4R|=0fIc?2N0nX#`sWeEg5j!JQhxOI_>jt`#$*5zXAV2 zjN2y`AV`EKToF+Fvv<%FvH;IRfPV@24e6Ld>_>TBJ6({nUKMNiXo5FrPXpU zy9GG@XEQT&8SsBe0AG>-LDgXwjB!1T@nKX415=?~(;aYVMbV7tjkO`}C0!3QNs{xF222 vDCfV6QZQr)dwY&=6 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 diff --git a/toolkit/themes/osx/global/icons/information-32.png b/toolkit/themes/osx/global/icons/information-32.png deleted file mode 100644 index 4501bc813a0ee502fdea711dfb2f4a37cac8abfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1773 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 FV1m-E`I7(u diff --git a/toolkit/themes/osx/global/icons/information-large.png b/toolkit/themes/osx/global/icons/information-large.png deleted file mode 100644 index 3912f1c79aba05b623e2efa110bc33af2241e36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2592 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 diff --git a/toolkit/themes/osx/global/icons/notloading_16.png b/toolkit/themes/osx/global/icons/notloading_16.png deleted file mode 100644 index ece0ee18a1cffa9bccdd9eae5146b48df48819c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP)bW!lA9!2mbp6&O@ z-xyoQUik4m@AE$2&+~FPSI>*JLt%4+evuYPH&VKA-=POeV9jSnRCd?>}UN`FK1Y1=`@i zBez^GABn}{w-8hf2E*skXyoekdIr1+3FGlt59~!E5g(PIR4Sj>>vcETF7pSY0-V`w z_9Pq*rw4<<*5w-UzF8;~0>xs{N4jLQdh<|yKuE1tM{>EGWnGh-&E_4Hw-43@5Vdm5 zW^)|OYv5d`)4jpnu+Bjuk&xMJHa}PfcxJcT8A{Cp90Bf9sbo{BRJ*J0UOsvp(ji^e z=5MwefP;d_<#OsS|6dNYTCJCw2jmD_NS`_%0=7t(Y_8Op$z5dJ& zg~g)3;Kznq*M6qiY^In@CJc2fA|O UbWt)`L;wH)07*qoM6N<$f?sGkasU7T diff --git a/toolkit/themes/osx/global/icons/panebutton-active.png b/toolkit/themes/osx/global/icons/panebutton-active.png deleted file mode 100644 index ca241c7b8a1026051003876e4a75ff0c8113392a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmV;B0dM|^P)1RCwBalcF5 zHQr{V!Wx-*5K#U%QWwgHs}BG@%7OFfoQaiQ)S%9pf&k7LgWM(+gG5n50nO0wqZ+(; z4&f%Ysr4Y1q1HpVNQalpVI+ODp)7gn279P8n&On uAcs<2!r#Rr*WA-_JoQ?SY68}O1sDLI3vuP}p_g$000008U}fi7AzZCsS>JiWYmiIEGZ*S~IDW@2~=obMc4&^*%o z{xz8&R8K96>+&jlTGjN(#qT4#;lkXwof8#Q*>qWM3BUC=>bTQw_-3Q3wT{j6f3i0_ z-$Z|M|Lvl;zS2uBFJx^m|KFG2kLa(f^H-aCvYmmMVe^Ts{;AdrK+a|GboFyt=akR{ E07*V%+5i9m diff --git a/toolkit/themes/osx/global/icons/panel-dropmarker.png b/toolkit/themes/osx/global/icons/panel-dropmarker.png deleted file mode 100644 index e605e835c75a704ec7943f8563a1c9ee465bd5e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)Q!3HEdXMMW?q%u5R978x{lP_Gllx1jQvL`t+ zv-0k#Q?H~t*giTw;(336|8*WNt|&1fp&|`4vod{%@c;k+(`)|x*q9g*aiiiw6Hmf+!c=_by76f*492$;?#IE@)-CxfS}pUXO@ GgeCxA8az<| diff --git a/toolkit/themes/osx/global/icons/question-16.png b/toolkit/themes/osx/global/icons/question-16.png deleted file mode 100644 index 8d8311fced6539c644d4195d98e427bb4dae4ea0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcmV-o1D*VdP)PZkmFXBxE#ghm^1T_c>9yAb)CZggiY9K~ICGoK_ z(PXo`vper@tH&fbQ1oo z{p#$C2VKACnTS&xf?4OGulr+W?n>)=BfGjahGlsUMh-zJ@pD4p(`bOtpS+Uq7LWGd zTya~@sVE=Tv48krU9S1Y?tMv^Nrs4aV^8*3 z`74eDJk6<$S!P{}<#ByyHd7DNFeswL^EXvo?w-WZNQhWWM>?hccon~<-=RG5{M6LP z>wS@cYWH&C$+#BJm1_vM2mvFVOd^v?Af1jQm5LGQV%8eN)XY$|^yBfl!qA0o;)>B6 z%?}eDWD^Z*+Ui>mAJ^l#4yGAPA=PiQDRpl$aEgO7qc<+v(;r62x3n-!|BtikEV2w) sJz08g*p!26#~Ia6D((Nr`L6&20GE!IZI*{D$N&HU07*qoM6N<$f=W-4O8@`> diff --git a/toolkit/themes/osx/global/icons/question-32.png b/toolkit/themes/osx/global/icons/question-32.png deleted file mode 100644 index 7c80831b04c1c9632f8d1c48edb5b3bc4fee1487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1962 zcmV;b2UYlqP)W5{N)jeGwqrY9GPY-b+wD1T-gp*|mn$8Q-@Es|?>pyy=iGZGAp{m{k|cRQ zWXc1N_jd&&>kcW3@falK9_m|FJ(j*R1L1t`IEBCGGealN{&mj{dhL|DmcVG#Sp}@^ zJ9KVmxcTmv1G@3ubzKTJtXFW?S_REbQW=>30I6Alu~8Qz!wv>-IIzsZ$?WX)Bj--+ z`;>-RixF8szz0{z0uMbk^2=Z-`fT5WI(oLKNTmg)W&|=hfqaqNa|FuM4GjqC5?Y8@ zY?Xw80UHvd8>?3Dl*Ic~bl>A^D`F8baJ3YaxwH*tj;3 zyZp~L+xODje3?X<05dSY^@HT=Yd5q$v-Q3p(z!-nx!BPyGUD-iQ9YuYLXg5AHt@LC%yGf|KB$ z=u@$4vx=qK`7bOSf8X+w$cu(s5o&V;xN<3j$>9(8UpoE7IeKNve!2ylR_{36wJm_G zNwJ|xWpmja7d;7gS#WN9w`q7}mqZ!jdh@*bqGYoffp}*CjK!FYEqlV-eRNa62p?!_ z575Mt*VSgzhYs%0Yk)rfZyL}4YLsjYACp(r?cw`$ssr}?eBm2^TMcQ@^zZ@3WNap& zw#4^67VFSZES3g2cJ(i%pXs1;b!E*bQ#Ovhmq*r)B4b7IyLYq5=AHTea8QPATHf4x zXDo_vWR(iWWNao7P>t3D!6vl?T4Ta9+j46>ym++;RSS~X6mOknMaSTnRWru6odw`* z4yUKCf-zAl8PH@|+Y*dwaBWe^@v40041Ma=F*sJqO9s~hh9^w!Z=>qBwacg>;8GUw z`b!OT!UPzT|78L?Inl&gB+@0ox*`LiKsTZgdR=M~K<8=+KmA^$2HI@E6%MVp@WO*S?<-YLs(mK#L`>kNABMa&FSq1y5y$?PrI-av1W;A` zOZygsm*h{uRE4l*K?H0YUdU=e%Ow0p?cng*( z+P3KhL!P{OGVKbxr1(Y5%+r2AIh;$o$jrJ(-?6cKvs?rIkF#mK^2Qtr7J2TzU)*^{7hyVjLFzcz?@9JlU%du`)3M~_CBBmLM#^n2M_NJ zqjzhi_#AsD=c#+C#@&Tt3WeP08OCI6PXlD>>A{n~)r{7@SW6S~1$h|)0`+G*t|OAX zG;_^xkxJbJV=*RU%l^?hJO01p7wHuHm)Xo$(Dlkbu$a|DEjQkv1M5usE93}+u^5x5 z%^yg}+Q>RLKl1k5vDR(f0c9;R*~W!LkP5A0n!GN0f>3BP(u^jOLgUDVLNY986w|3M zl2=bX`6Rs>CY$ySBz`DadNX8WL;bHjJ2CxPGH;F0*{f2}>xLBbdDNS#s##uRcQw66UygX^ z1HU+|N4p+xjrO29obb*F`Me9$3*Pwt3^h-llc?f2;-LdkigsupWa!VOM0WR)nrap`J$GoIp!pj wa=O^{+y@N!r1V7y6n!w$e_r-_{(k`m0Ge64aS#o0tpET307*qoM6N<$f*)+iA^-pY diff --git a/toolkit/themes/osx/global/icons/question-64.png b/toolkit/themes/osx/global/icons/question-64.png deleted file mode 100644 index 96fd7464091af2de527a48bedbb068613a8bd824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3970 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 c__`FF7&;S4c07*qoM6N<$f(NaVO8@`> diff --git a/toolkit/themes/osx/global/icons/question-large.png b/toolkit/themes/osx/global/icons/question-large.png deleted file mode 100644 index dd2b21874b0aa4d63179c16774a3dff2d8913ceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 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 BV4VN} diff --git a/toolkit/themes/osx/global/icons/resizer-rtl.png b/toolkit/themes/osx/global/icons/resizer-rtl.png deleted file mode 100644 index 6ab7d33457318b3fb83e923b7e75539f6c09dcca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^{2}1{rUgjo_S|OXCsqA!>p@Uul8zgyg5CFdB(T* z_s=_QW6a9R;_;tvm&Io2RENjamj0>1{w&B1aD5EP#n$_lJ5rYDXg_W z$p&xm2LAzEmgR0v@x`o$F8~g~H;)@*3Ls=yWZ*c=7<*>mI6O_0eB+#e!?3$>pK(FN zaabvJ0B~rzt|4C6^&=Cf*9pKOm;*Rmr-qK>brKmk4u=2*hvBwuBOt=#!Ojkc>*Voq z9AyIMOE>~E2XtL`B;w5Dxp3q0zVA;Tc(a68RTbf6*gvv>i|}`Aa1!i*1RkAft@kOM iRHqa^41=WNYv32N$tj}{hfnVS0000}1{rUgjo_S|OXCspVi|OjstEG)6t`_w8X*6+l z;s1Ysd3YAAP!e0ca-}45;o-~6{iPdBKGwNyyLj>9M#d9r=g!|S5qg>)Bjs45R%F`r r!{G$e@_t#OS``XXd{ECtDnm{r-UW|oLNaL diff --git a/toolkit/themes/osx/global/icons/resizer@2x.png b/toolkit/themes/osx/global/icons/resizer@2x.png deleted file mode 100644 index 2304cc65fef9260618b1af67e65fc1eddb6de67f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI?KP)fo(ZNS(Q(p-R8;KLqfsN;bu=F*sO{!_Qse12?vM`*bC+*keY^G^i zBrCkaEBrrL2=R+724_panac?UTWdLap)MB!%tu`e0p_Dx>pKqSqlHJuaV+sLA2qJK z5@0@BRn-mylToGAEk@nhnE>-q%AELU=!w`iZYMO>P zr!-om&|w(LfD+~eQH?>{w%vzLBVmY2DN|@3qg~e>o~Z9I@VBUrPy^6#4*{pqx~{jg mhi544KEWik@B8u{>bnQ&6}&qPKAI%}0000 - - - - - diff --git a/toolkit/themes/osx/global/icons/searchfield-cancel.svg b/toolkit/themes/osx/global/icons/searchfield-cancel.svg deleted file mode 100644 index 9899144e9..000000000 --- a/toolkit/themes/osx/global/icons/searchfield-cancel.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/toolkit/themes/osx/global/icons/sslWarning.png b/toolkit/themes/osx/global/icons/sslWarning.png deleted file mode 100644 index e8ad586b6e9a9e2ff278ca9694d4cf2e513e7bbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4120 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 WM@NbylrtP)3D%d> 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 PIkt|bfkyeQdtv_r3A;*c diff --git a/toolkit/themes/osx/global/icons/warning-16.png b/toolkit/themes/osx/global/icons/warning-16.png deleted file mode 100644 index 2ab4b3915ea83f6da4a0c9fc87a40d25f569e307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 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 DN=tK< diff --git a/toolkit/themes/osx/global/in-content/common.css b/toolkit/themes/osx/global/in-content/common.css deleted file mode 100644 index a987cbfe1..000000000 --- a/toolkit/themes/osx/global/in-content/common.css +++ /dev/null @@ -1,121 +0,0 @@ -/* - This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this file, - - You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../shared.inc -%include ../../../shared/in-content/common.inc.css - -xul|tabs { - padding-right: 0; - padding-left: 0; -} - -xul|tab[visuallyselected] { - text-shadow: none; -} - -xul|button, -html|button, -xul|colorpicker[type="button"], -xul|menulist { - margin-top: 3px; -} - -xul|button, -html|button { - /* use the same margin of other elements for the alignment */ - margin-left: 4px; - margin-right: 4px; -} - -xul|caption { - padding-inline-start: 0; -} - -xul|groupbox > xul|*.groupbox-body { - padding: 0; -} - -xul|menulist:not([editable="true"]) > xul|menupopup > xul|menuitem[checked="true"]::before, -xul|menulist:not([editable="true"]) > xul|menupopup > xul|menuitem[selected="true"]::before { - display: none; -} - -xul|menulist:not([editable="true"]) > xul|*.menulist-dropmarker { - display: -moz-box; - margin-top: 1px; - margin-bottom: 1px; -} - -xul|menulist > xul|menupopup xul|menu, -xul|menulist > xul|menupopup xul|menuitem, -xul|button[type="menu"] > xul|menupopup xul|menu, -xul|button[type="menu"] > xul|menupopup xul|menuitem { - padding-inline-end: 34px; -} - -xul|*.help-button > xul|*.button-box > xul|*.button-icon { - margin-inline-start: 0; -} - -xul|*.checkbox-icon { - margin-right: 0; -} - -xul|*.radio-icon { - margin-inline-end: 0; -} - -xul|*.numberbox-input-box { - -moz-appearance: none; - border-width: 0; -} - -xul|description { - font-size: 1.25rem; - line-height: 22px; -} - -xul|*.text-link:-moz-focusring { - color: var(--in-content-link-highlight); - text-decoration: underline; - box-shadow: none; -} - -xul|button:-moz-focusring, -xul|menulist:-moz-focusring, -xul|checkbox:-moz-focusring > .checkbox-check, -html|input[type="checkbox"]:-moz-focusring + html|label:before, -xul|radio[focused="true"] > .radio-check, -xul|tab:-moz-focusring > .tab-middle > .tab-text { - outline: 2px solid rgba(0,149,221,0.5); - outline-offset: 1px; - -moz-outline-radius: 2px; -} - -xul|radio[focused="true"] > .radio-check { - -moz-outline-radius: 100%; -} - -xul|spinbuttons { - -moz-appearance: none; -} - -xul|*.spinbuttons-up { - margin-top: 0 !important; - border-radius: 4px 4px 0 0; -} - -xul|*.spinbuttons-down { - margin-bottom: 0 !important; - border-radius: 0 0 4px 4px; -} - -xul|*.spinbuttons-button > xul|*.button-box { - padding-inline-start: 2px !important; - padding-inline-end: 3px !important; -} - -xul|*.spinbuttons-button > xul|*.button-box > xul|*.button-text { - display: none; -} diff --git a/toolkit/themes/osx/global/in-content/info-pages.css b/toolkit/themes/osx/global/in-content/info-pages.css deleted file mode 100644 index a25b9f6a3..000000000 --- a/toolkit/themes/osx/global/in-content/info-pages.css +++ /dev/null @@ -1 +0,0 @@ -%include ../../../shared/in-content/info-pages.inc.css \ No newline at end of file diff --git a/toolkit/themes/osx/global/inContentUI.css b/toolkit/themes/osx/global/inContentUI.css deleted file mode 100644 index 17e2e6ae3..000000000 --- a/toolkit/themes/osx/global/inContentUI.css +++ /dev/null @@ -1,144 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc - -/* - * The default namespace for this file is XUL. Be sure to prefix rules that - * are applicable to both XUL and HTML with '*|'. - */ -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -/* Page background */ -*|*:root { - -moz-appearance: none; - padding: 18px; - background-image: /* Texture */ - url("chrome://global/skin/inContentUI/background-texture.png"), - /* Gradient */ - linear-gradient(#ADB5C2, #BFC6D1); -} - -/* Use the new in-content colors for #contentAreaDownloadsView. After landing - of bug 989469 the colors can be moved to *|*:root */ -*|*#contentAreaDownloadsView { - background: #f1f1f1; - color: #424e5a; -} - -html|html { - font: message-box; -} - -/* Content */ -*|*.main-content { - /* Needed to allow the radius to clip the inner content, see bug 595656 */ - overflow: hidden; - background-image: linear-gradient(rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.25) 50%, rgba(255, 255, 255, 0.05)); - border: 1px solid rgba(50, 65, 92, 0.4); - border-radius: 5px; -} - -/* Buttons */ -*|button, -menulist, -colorpicker[type="button"] { - -moz-appearance: none; - padding: 1px 4px; - min-width: 60px; - border-radius: 3px; - border: 1px solid rgba(60,73,97,0.5); - box-shadow: inset 0 1px rgba(255,255,255,0.25), 0 1px rgba(255,255,255,0.25); - background-color: transparent; - background-image: linear-gradient(rgba(255,255,255,0.45), rgba(255,255,255,0.2)); - background-clip: padding-box; - color: #252F3B; - text-shadow: @loweredShadow@; -} - -button:-moz-focusring > .button-box, -menulist:-moz-focusring:not([open="true"]) > .menulist-label-box, -colorpicker[type="button"]:-moz-focusring:not([open="true"]) > .colorpicker-button-colorbox { - outline: 1px dotted #252F3B; -} - -html|button[disabled], -button[disabled="true"], -menulist[disabled="true"], -colorpicker[type="button"][disabled="true"] { - opacity: 0.8; - color: #505050; -} - -html|button:not([disabled]):active:hover, -button:not([disabled="true"]):active:hover, -menulist[open="true"]:not([disabled="true"]), -colorpicker[type="button"][open="true"]:not([disabled="true"]) { - box-shadow: inset 0 1px 3px rgba(0,0,0,.2), 0 1px rgba(255,255,255,0.25); - background-image: linear-gradient(rgba(45,54,71,0.3), rgba(45,54,71,0.1)); - border-color: rgba(60,73,97,0.7); -} - -menulist { - -moz-padding-end: 0; - margin-left: 5px; - margin-right: 5px; -} - -/* Tweak margins so the focus ring is in the right place. */ -menulist > .menulist-label-box { - -moz-margin-end: 3px; - margin-top: 1px; -} - -menulist > .menulist-label-box > .menulist-label { - margin-top: 0px !important; - margin-bottom: 0px !important; -} - -menulist > .menulist-dropmarker { - -moz-appearance: none; - display: -moz-box; - background: transparent; - border: none; - -moz-border-start: 1px solid rgba(60,73,97,0.5); - margin-top: -1px; - margin-bottom: -1px; -} - -colorpicker[type="button"] { - margin: 1px 5px 2px 5px; - padding: 3px; - height: 25px; -} - -spinbuttons { - -moz-appearance: none; -} - -spinbuttons > .spinbuttons-box > .spinbuttons-button { - min-width: 12px; -} - -.spinbuttons-button > .button-box > .button-text { - display: none; -} - -.spinbuttons-button[disabled="true"] > .button-box > .button-icon { - opacity: 0.5; -} - -spinbuttons > .spinbuttons-box > .spinbuttons-up { - list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); - border-bottom-width: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -spinbuttons > .spinbuttons-box > .spinbuttons-down { - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); - border-top-left-radius: 0; - border-top-right-radius: 0; -} diff --git a/toolkit/themes/osx/global/jar.mn b/toolkit/themes/osx/global/jar.mn deleted file mode 100644 index 9ca73cc6b..000000000 --- a/toolkit/themes/osx/global/jar.mn +++ /dev/null @@ -1,156 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -#include ../../shared/jar.inc.mn - -toolkit.jar: - skin/classic/global/10pct_transparent_grey.png - skin/classic/global/50pct_transparent_grey.png - skin/classic/global/arrow.css - skin/classic/global/autocomplete.css - skin/classic/global/button.css - skin/classic/global/checkbox.css - skin/classic/global/colorpicker.css - skin/classic/global/commonDialog.css - skin/classic/global/customizeToolbar.css - skin/classic/global/dialog.css - skin/classic/global/dropmarker.css - skin/classic/global/filefield.css - skin/classic/global/filters.svg -* skin/classic/global/findBar.css -* skin/classic/global/global.css - skin/classic/global/groupbox.css -* skin/classic/global/inContentUI.css - skin/classic/global/linkTree.css - skin/classic/global/listbox.css - skin/classic/global/menu.css - skin/classic/global/menulist.css -* skin/classic/global/notification.css - skin/classic/global/netError.css - skin/classic/global/numberbox.css - skin/classic/global/popup.css - skin/classic/global/preferences.css - skin/classic/global/progressmeter.css - skin/classic/global/radio.css - skin/classic/global/resizer.css - skin/classic/global/richlistbox.css - skin/classic/global/scrollbars.css (nativescrollbars.css) - skin/classic/global/scale.css - skin/classic/global/scrollbox.css - skin/classic/global/spinbuttons.css - skin/classic/global/splitter.css - skin/classic/global/tabprompts.css - skin/classic/global/tabbox.css - skin/classic/global/textbox.css - skin/classic/global/datetimepicker.css -* skin/classic/global/toolbar.css - skin/classic/global/toolbarbutton.css -* skin/classic/global/tree.css -* skin/classic/global/viewbuttons.css - skin/classic/global/wizard.css - skin/classic/global/alerts/alert.css (alerts/alert.css) - skin/classic/global/arrow/arrow-dn-dis.gif (arrow/arrow-dn-dis.gif) - skin/classic/global/arrow/arrow-dn-dis.png (arrow/arrow-dn-dis.png) - skin/classic/global/arrow/arrow-dn-sharp.gif (arrow/arrow-dn-sharp.gif) - skin/classic/global/arrow/arrow-dn.gif (arrow/arrow-dn.gif) - skin/classic/global/arrow/arrow-dn.png (arrow/arrow-dn.png) - skin/classic/global/arrow/arrow-lft-dis.gif (arrow/arrow-lft-dis.gif) - skin/classic/global/arrow/arrow-lft-hov.gif (arrow/arrow-lft-hov.gif) - skin/classic/global/arrow/arrow-lft-sharp-end.gif (arrow/arrow-lft-sharp-end.gif) - skin/classic/global/arrow/arrow-lft-sharp.gif (arrow/arrow-lft-sharp.gif) - skin/classic/global/arrow/arrow-lft.gif (arrow/arrow-lft.gif) - skin/classic/global/arrow/arrow-rit-dis.gif (arrow/arrow-rit-dis.gif) - skin/classic/global/arrow/arrow-rit-hov.gif (arrow/arrow-rit-hov.gif) - skin/classic/global/arrow/arrow-rit-sharp-end.gif (arrow/arrow-rit-sharp-end.gif) - skin/classic/global/arrow/arrow-rit-sharp.gif (arrow/arrow-rit-sharp.gif) - skin/classic/global/arrow/arrow-rit.gif (arrow/arrow-rit.gif) - skin/classic/global/arrow/arrow-up-dis.gif (arrow/arrow-up-dis.gif) - skin/classic/global/arrow/arrow-up-sharp.gif (arrow/arrow-up-sharp.gif) - skin/classic/global/arrow/arrow-up.gif (arrow/arrow-up.gif) - skin/classic/global/arrow/panelarrow-horizontal.png (arrow/panelarrow-horizontal.png) - skin/classic/global/arrow/panelarrow-horizontal@2x.png (arrow/panelarrow-horizontal@2x.png) - skin/classic/global/arrow/panelarrow-vertical.png (arrow/panelarrow-vertical.png) - skin/classic/global/arrow/panelarrow-vertical@2x.png (arrow/panelarrow-vertical@2x.png) - skin/classic/global/checkbox/cbox-check.gif (checkbox/cbox-check.gif) - skin/classic/global/checkbox/cbox-check-dis.gif (checkbox/cbox-check-dis.gif) - skin/classic/global/console/console-error-caret.gif (console/console-error-caret.gif) - skin/classic/global/console/console-error-dash.gif (console/console-error-dash.gif) -* skin/classic/global/console/console.css (console/console.css) - skin/classic/global/dirListing/dirListing.css (dirListing/dirListing.css) - skin/classic/global/dirListing/folder.png (dirListing/folder.png) - skin/classic/global/dirListing/remote.png (dirListing/remote.png) - skin/classic/global/dirListing/up.png (dirListing/up.png) - skin/classic/global/icons/autocomplete-dropmarker.png (icons/autocomplete-dropmarker.png) - skin/classic/global/icons/autocomplete-search.svg (icons/autocomplete-search.svg) - skin/classic/global/icons/autoscroll.png (icons/autoscroll.png) - skin/classic/global/icons/blacklist_favicon.png (icons/blacklist_favicon.png) - skin/classic/global/icons/blacklist_64.png (icons/blacklist_64.png) - skin/classic/global/icons/chevron.png (icons/chevron.png) - skin/classic/global/icons/chevron-inverted.png (icons/chevron-inverted.png) - skin/classic/global/icons/chevron@2x.png (icons/chevron@2x.png) - skin/classic/global/icons/chevron-inverted@2x.png (icons/chevron-inverted@2x.png) - skin/classic/global/icons/checkbox.png (icons/checkbox.png) - skin/classic/global/icons/checkbox@2x.png (icons/checkbox@2x.png) - skin/classic/global/icons/close.png (icons/close.png) - skin/classic/global/icons/close@2x.png (icons/close@2x.png) - skin/classic/global/icons/glyph-dropdown.png (icons/glyph-dropdown.png) - skin/classic/global/icons/glyph-dropdown@2x.png (icons/glyph-dropdown@2x.png) - skin/classic/global/icons/information-16.png (icons/information-16.png) - skin/classic/global/icons/information-24.png (icons/information-24.png) - skin/classic/global/icons/information-32.png (icons/information-32.png) - skin/classic/global/icons/information-64.png (icons/information-64.png) - skin/classic/global/icons/information-large.png (icons/information-large.png) - skin/classic/global/icons/loading_16.png (icons/loading_16.png) - skin/classic/global/icons/menulist-dropmarker.png (icons/menulist-dropmarker.png) - skin/classic/global/icons/notfound.png (icons/notfound.png) - skin/classic/global/icons/notloading_16.png (icons/notloading_16.png) - skin/classic/global/icons/panebutton-active.png (icons/panebutton-active.png) - skin/classic/global/icons/panebutton-inactive.png (icons/panebutton-inactive.png) - skin/classic/global/icons/panel-dropmarker.png (icons/panel-dropmarker.png) - skin/classic/global/icons/resizer.png (icons/resizer.png) - skin/classic/global/icons/resizer@2x.png (icons/resizer@2x.png) - skin/classic/global/icons/resizer-rtl.png (icons/resizer-rtl.png) - skin/classic/global/icons/resizer-rtl@2x.png (icons/resizer-rtl@2x.png) - skin/classic/global/icons/search-textbox.svg (icons/search-textbox.svg) - skin/classic/global/icons/searchfield-cancel.svg (icons/searchfield-cancel.svg) - skin/classic/global/icons/tabprompts-bgtexture.png (icons/tabprompts-bgtexture.png) - skin/classic/global/icons/warning-16.png (icons/warning-16.png) - skin/classic/global/icons/warning-32.png (icons/warning-32.png) - skin/classic/global/icons/warning-64.png (icons/warning-64.png) - skin/classic/global/icons/warning-large.png (icons/warning-large.png) - skin/classic/global/icons/error-16.png (icons/error-16.png) - skin/classic/global/icons/error-64.png (icons/error-64.png) - skin/classic/global/icons/error-large.png (icons/error-large.png) - skin/classic/global/icons/Error.png (icons/Error.png) - skin/classic/global/icons/question-16.png (icons/question-16.png) - skin/classic/global/icons/question-32.png (icons/question-32.png) - skin/classic/global/icons/question-64.png (icons/question-64.png) - skin/classic/global/icons/question-large.png (icons/question-large.png) - skin/classic/global/icons/sslWarning.png (icons/sslWarning.png) - skin/classic/global/notification/close.png (notification/close.png) - skin/classic/global/notification/error-icon.png (notification/error-icon.png) - skin/classic/global/notification/info-icon.png (notification/info-icon.png) - skin/classic/global/notification/warning-icon.png (notification/warning-icon.png) -* skin/classic/global/in-content/common.css (in-content/common.css) -* skin/classic/global/in-content/info-pages.css (in-content/info-pages.css) - skin/classic/global/scale/scale-tray-horiz.gif (scale/scale-tray-horiz.gif) - skin/classic/global/scale/scale-tray-vert.gif (scale/scale-tray-vert.gif) - skin/classic/global/splitter/dimple.png (splitter/dimple.png) - skin/classic/global/splitter/grip-bottom.gif (splitter/grip-bottom.gif) - skin/classic/global/splitter/grip-top.gif (splitter/grip-top.gif) - skin/classic/global/splitter/grip-left.gif (splitter/grip-left.gif) - skin/classic/global/splitter/grip-right.gif (splitter/grip-right.gif) - skin/classic/global/toolbar/spring.png (toolbar/spring.png) - skin/classic/global/toolbar/toolbar-separator.png (toolbar/toolbar-separator.png) - skin/classic/global/tree/arrow-disclosure.svg (tree/arrow-disclosure.svg) - skin/classic/global/tree/columnpicker.gif (tree/columnpicker.gif) - skin/classic/global/tree/folder.png (tree/folder.png) - skin/classic/global/tree/folder@2x.png (tree/folder@2x.png) - -#ifdef MOZ_PHOENIX -[browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar: -#elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES -[extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar: -#endif -% override chrome://global/skin/dirListing/local.png chrome://global/skin/dirListing/folder.png diff --git a/toolkit/themes/osx/global/linkTree.css b/toolkit/themes/osx/global/linkTree.css deleted file mode 100644 index d83c5bfd9..000000000 --- a/toolkit/themes/osx/global/linkTree.css +++ /dev/null @@ -1,32 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/** - * All the properties in this rule are important to avoid having to create - * a special type of tree. This stylesheet can be loaded into a document with - * a single tree that is a link tree. Hardly elegant but it's efficient. - */ -treeitem[selected="true"] > treerow - { - background : transparent !important; - border : none !important; - color : -moz-FieldText !important; - } - -treecell:hover - { - text-decoration : underline !important; - color : #000080 !important; - cursor : pointer; - } - -treecell:hover:active - { - text-decoration : underline !important; - color : red !important; - } - - diff --git a/toolkit/themes/osx/global/listbox.css b/toolkit/themes/osx/global/listbox.css deleted file mode 100644 index 90928c769..000000000 --- a/toolkit/themes/osx/global/listbox.css +++ /dev/null @@ -1,113 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -listbox { - -moz-appearance: listbox; - margin: 2px 4px; - background-color: #FFFFFF; - color: -moz-FieldText; -} - -.listcell-label { - margin: 0px !important; - padding-bottom: 1px; - padding-inline-start: 4px; - white-space: nowrap; -} - -/* ::::: listitem ::::: */ - -listitem { - border: 1px solid transparent; -} - -listitem[selected="true"] { - background-color: -moz-mac-secondaryhighlight; - color: -moz-DialogText; -} - -listbox:focus > listitem[selected="true"] { - background-color: Highlight; - color: HighlightText; -} - -/* ::::: listheader ::::: */ - -listheader { - -moz-appearance: treeheadercell; - -moz-box-align: center; - border: 2px solid; - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow; - background-color: -moz-Dialog; - color: -moz-DialogText; - padding: 0 4px; -} - -listheader[sortable="true"]:hover:active { - border-top: 2px solid; - border-right: 1px solid; - border-bottom: 1px solid; - border-left: 2px solid; - -moz-border-top-colors: ThreeDShadow -moz-Dialog; - -moz-border-right-colors: ThreeDShadow; - -moz-border-bottom-colors: ThreeDShadow; - -moz-border-left-colors: ThreeDShadow -moz-Dialog; - padding-top: 1px; - padding-inline-start: 5px; - padding-inline-end: 4px; -} - -.listheader-icon { - margin-inline-end: 2px; -} - -.listheader-label { - margin: 0px !important; -} - -/* ::::: listcell ::::: */ - -.listcell-label { - margin: 0px !important; - padding-bottom: 1px; - padding-inline-start: 4px; - white-space: nowrap; -} - -.listcell-icon { - margin-inline-end: 2px; -} - -.listcell-label[disabled="true"] { - color: GrayText; -} - -/* ::::: listcell checkbox ::::: */ - -.listcell-check { - -moz-appearance: checkbox; - -moz-box-align: center; - margin: 0px 2px; - border: 1px solid -moz-DialogText; - min-width: 13px; - min-height: 13px; - background: -moz-Field no-repeat 50% 50%; -} - -.listcell-check[checked="true"] { - background-image: url("chrome://global/skin/checkbox/cbox-check.gif"); -} - -.listcell-check[disabled="true"] { - border-color: GrayText; -} - -.listcell-check[disabled="true"][checked="true"] { - background-image: url("chrome://global/skin/checkbox/cbox-check-dis.gif"); -} diff --git a/toolkit/themes/osx/global/menu.css b/toolkit/themes/osx/global/menu.css deleted file mode 100644 index 49ca168a6..000000000 --- a/toolkit/themes/osx/global/menu.css +++ /dev/null @@ -1,187 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -menu, -menuitem, -menucaption { - -moz-appearance: menuitem; - -moz-box-align: center; - color: MenuText; - font: -moz-pull-down-menu; - list-style-image: none; - -moz-image-region: auto; - padding: 0 21px 2px; -} - -menu[disabled="true"], menuitem[disabled="true"], -menu[_moz-menuactive="true"][disabled="true"], -menuitem[_moz-menuactive="true"][disabled="true"] { - color: -moz-mac-menutextdisable; -} - -/* ..... internal content .... */ - -.menu-text, -.menu-iconic-text, -.menu-accel, -.menu-iconic-accel { - margin: 0 !important; -} - -.menu-text, -.menu-iconic-text { - font-weight: inherit; - color: inherit; -} - -menucaption > .menu-text, -menucaption > .menu-iconic-text { - font-weight: bold; -} - -.menu-description { - font-style: italic; - color: -moz-mac-menutextdisable; - margin-inline-start: 1ex !important; -} - -.menu-iconic-icon { - height: 16px; - margin-top: -2px; - margin-bottom: -2px; - margin-inline-end: 5px; - /* Empty icons shouldn't take up room, so we need to compensate - * the 5px margin-end with a negative margin-start. - */ - margin-inline-start: -5px; -} - -/* menuitems with icons */ -.menuitem-iconic, -.menu-iconic, -menuitem[image], -menuitem[src] { - /* 2px higher than those without icons */ - padding-top: 1px; - padding-bottom: 3px; -} - -.menuitem-iconic > .menu-iconic-left > .menu-iconic-icon, -.menu-iconic > .menu-iconic-left > .menu-iconic-icon, -menuitem[image] > .menu-iconic-left > .menu-iconic-icon, -menuitem[src] > .menu-iconic-left > .menu-iconic-icon { - margin-inline-start: 0; - width: 16px; -} - -/* ..... menu arrow box ..... */ - -.menu-right, -.menu-accel-container { - margin-inline-start: 21px; - margin-inline-end: -9px; - -moz-box-pack: end; -} - -.menu-right { - list-style-image: none; - -moz-appearance: menuarrow; -} - -/* ::::: menu/menuitems in menubar ::::: */ - -menubar > menu { - -moz-appearance: none; - padding: 2px 5px 2px 7px; - margin: 1px 0; -} - -menubar > menu[_moz-menuactive="true"] { - color: inherit; - background-color: transparent; -} - -menubar > menu[_moz-menuactive="true"][open="true"] { - -moz-appearance: menuitem; - color: -moz-mac-menutextselect; -} - -/* ..... internal content .... */ - -.menubar-left { - margin: 0 2px; - color: inherit; -} - -.menubar-text { - margin: 0 1px !important; - color: inherit; -} - -/* ::::: menu/menuitems in popups ::::: */ - -menupopup > menu, -menupopup > menuitem, -menupopup > menucaption { - max-width: 42em; -} - -menu[_moz-menuactive="true"], -menuitem[_moz-menuactive="true"] { - color: -moz-mac-menutextselect; - background-color: Highlight; -} - -/* ::::: menu/menuitems in menulist popups ::::: */ - -menulist > menupopup > menuitem, -menulist > menupopup > menucaption, -menulist > menupopup > menu { - max-width: none; - font: inherit; - color: -moz-FieldText; -} - -/* ::::: menuitems in editable menulist popups ::::: */ - -menulist[editable="true"] > menupopup > menuitem, -menulist[editable="true"] > menupopup > menucaption { - -moz-appearance: none; -} - -menulist[editable="true"] > menupopup > :-moz-any(menuitem, menucaption) > .menu-iconic-left { - display: none; -} - -/* ::::: checked menuitems ::::: */ - -:not(menulist) > menupopup > menuitem[checked="true"], -:not(menulist) > menupopup > menuitem[selected="true"] { - -moz-appearance: checkmenuitem; -} - -menulist:not([editable="true"]) > menupopup > menuitem[checked="true"]::before, -menulist:not([editable="true"]) > menupopup > menuitem[selected="true"]::before { - content: '\2713'; /* a checkmark */ - display: block; - width: 15px; - margin-inline-start: -15px; -} - -/* ::::: menuseparator ::::: */ - -menuseparator { - -moz-appearance: menuseparator; - margin: 5px 0; - padding: 1px 0; -} - -/* ::::: autocomplete ::::: */ - -.autocomplete-history-popup > menuitem { - max-width: none !important; - font: message-box; -} diff --git a/toolkit/themes/osx/global/menulist.css b/toolkit/themes/osx/global/menulist.css deleted file mode 100644 index a4feca947..000000000 --- a/toolkit/themes/osx/global/menulist.css +++ /dev/null @@ -1,65 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -menulist { - -moz-appearance: menulist; - margin: 5px 2px 3px; - color: -moz-DialogText; - text-shadow: none; -} - -menulist:not([popuponly="true"]) { - min-height: 20px; -} - -.menulist-label-box { - -moz-appearance: menulist-text; - -moz-box-align: center; - -moz-box-pack: center; - margin-bottom: 1px; -} - -.menulist-label { - margin: 1px 3px !important; -} - -.menulist-description { - font-style: italic; - color: GrayText; - margin-inline-start: 1ex !important; -} - -/* ..... dropmarker ..... */ - -.menulist-dropmarker { - display: none; -} - -/* ..... disabled state ..... */ - -menulist[disabled="true"] { - color: GrayText; -} - -menulist[disabled="true"] > .menulist-dropmarker { - padding-inline-start: 7px !important; -} - -/* ::::: editable menulists ::::: */ - -menulist[editable="true"] { - -moz-appearance: menulist-textfield; - margin: 4px 2px; -} - -html|*.menulist-editable-input { - margin: 0px !important; - border: none !important; - padding: 0px !important; - background: inherit; - font: inherit; -} diff --git a/toolkit/themes/osx/global/moz.build b/toolkit/themes/osx/global/moz.build deleted file mode 100644 index 635fa39c9..000000000 --- a/toolkit/themes/osx/global/moz.build +++ /dev/null @@ -1,6 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -JAR_MANIFESTS += ['jar.mn'] \ No newline at end of file diff --git a/toolkit/themes/osx/global/nativescrollbars.css b/toolkit/themes/osx/global/nativescrollbars.css deleted file mode 100644 index 82ef4d2ac..000000000 --- a/toolkit/themes/osx/global/nativescrollbars.css +++ /dev/null @@ -1,89 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -scrollbar { - -moz-appearance: scrollbar; - -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar); - cursor: default; - background-color: white; -} - -scrollbar[root="true"] { - position: relative; - z-index: 2147483647; /* largest positive value of a signed 32-bit integer */ -} - -html|select[size]:not([size="0"]):not([size="1"]) > scrollbar, -html|select[multiple] > scrollbar { - -moz-appearance: scrollbar-small; -} - -@media all and (-moz-overlay-scrollbars) { - scrollbar:not([active="true"]), - scrollbar[disabled="true"] { - visibility: hidden; - } -} - -/* ..... track ..... */ - -slider { - -moz-appearance: scrollbartrack-horizontal; -} - -slider[orient="vertical"] { - -moz-appearance: scrollbartrack-vertical; -} - -/* ..... thumb ..... */ - -thumb { - -moz-appearance: scrollbarthumb-horizontal; -} - -thumb[orient="vertical"] { - -moz-appearance: scrollbarthumb-vertical; -} - -/* ..... increment ..... */ - -scrollbarbutton[type="increment"] { - -moz-appearance: scrollbarbutton-right; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="increment"] { - -moz-appearance: scrollbarbutton-down; -} - -/* ..... decrement ..... */ - -scrollbarbutton[type="decrement"] { - -moz-appearance: scrollbarbutton-left; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"] { - -moz-appearance: scrollbarbutton-up; -} - -/* ::::: square at the corner of two scrollbars ::::: */ - -scrollcorner { - /* XXX -moz-appearance: scrollcorner; */ - -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar-base); - width: 16px; - cursor: default; - background-color: white; -} - -/* ::::::::::::::::::::: MEDIA PRINT :::::::::::::::::::::: */ -@media print { - html|div scrollbar { - -moz-appearance: scrollbar; - -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar); - cursor: default; - } -} diff --git a/toolkit/themes/osx/global/netError.css b/toolkit/themes/osx/global/netError.css deleted file mode 100644 index 9255f958e..000000000 --- a/toolkit/themes/osx/global/netError.css +++ /dev/null @@ -1,145 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - * This defines the look-and-feel styling of the error pages. - * (see: netError.xhtml) - * - * Original styling by William Price - * Updated by: Steven Garrity - * Henrik Skupin - */ - -html { - background: -moz-Dialog; -} - -body { - margin: 0; - padding: 0 1em; - color: -moz-FieldText; - font: message-box; -} - -h1 { - margin: 0 0 .6em 0; - border-bottom: 1px solid ThreeDLightShadow; - font-size: 160%; -} - -ul, ol { - margin: 0; - margin-inline-start: 1.5em; - padding: 0; -} - -ul > li, ol > li { - margin-bottom: .5em; -} - -ul { - list-style: square; -} - -#errorPageContainer { - position: relative; - min-width: 13em; - max-width: 52em; - margin: 4em auto; - border: 1px solid ThreeDShadow; - border-radius: 10px; - padding: 3em; - padding-inline-start: 30px; - background: url("chrome://global/skin/icons/warning-large.png") left 0 no-repeat -moz-Field; - background-origin: content-box; -} - -#errorPageContainer.certerror { - background-image: url("chrome://global/skin/icons/sslWarning.png"); -} - -#errorPageContainer:dir(rtl) { - background-position: right 0; -} - -#errorTitle { - margin-inline-start: 80px; -} - -#errorLongContent { - margin-inline-start: 80px; -} - -#errorShortDesc > p { - overflow: auto; - border-bottom: 1px solid ThreeDLightShadow; - padding-bottom: 1em; - font-size: 130%; - white-space: pre-wrap; -} - -#errorLongDesc { - padding-inline-end: 3em; - font-size: 110%; -} - -#errorLongDesc > p { -} - -#errorTryAgain { - margin-top: 2em; - margin-inline-start: 80px; -} - -#brand { - position: absolute; - right: 0; - bottom: -1.5em; - margin-inline-end: 10px; - opacity: .4; -} - -#brand:dir(rtl) { - right: auto; - left: 0; -} - -#brand > p { - margin: 0; -} - -#errorContainer { - display: none; -} - -#securityOverrideDiv { - padding-top: 10px; -} - -#securityOverrideContent { - background-color: #FFF090; /* Pale yellow */ - padding: 10px; - border-radius: 10px; -} - -/* Custom styling for 'blacklist' error class */ -:root.blacklist #errorTitle, :root.blacklist #errorLongContent, -:root.blacklist #errorShortDesc, :root.blacklist #errorLongDesc, -:root.blacklist a { - background-color: #722; /* Dark red */ - color: white; -} - -:root.blacklist #errorPageContainer { - background-image: url("chrome://global/skin/icons/blacklist_64.png"); - background-color: #722; -} - -:root.blacklist { - background: #333; -} - -:root.blacklist #errorTryAgain { - display: none; -} diff --git a/toolkit/themes/osx/global/notification.css b/toolkit/themes/osx/global/notification.css deleted file mode 100644 index 6d22cf9c8..000000000 --- a/toolkit/themes/osx/global/notification.css +++ /dev/null @@ -1,206 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -notification { - padding: 3px 3px 4px; - text-shadow: none; -} - -notification[type="info"] { - color: rgba(255,255,255,0.95); - background: linear-gradient(#606060, #404040); - border-top: 1px solid #2a2a2a; - border-bottom: 1px solid #2a2a2a; -} - -notification[type="warning"] { - color: rgba(0,0,0,0.95); - background: linear-gradient(#ffe13e, #ffc703); - border-top: 1px solid #bf8a01; - border-bottom: 1px solid #bf8a01; -} - -notification[type="critical"] { - color: rgba(255,255,255,0.95); - background: linear-gradient(#d40000, #980000); - border-top: 1px solid #5d0000; - border-bottom: 1px solid #5d0000; -} - -notificationbox[notificationside="top"] > notification { - border-top-style: none; -} - -notificationbox[notificationside="bottom"] > notification { - border-bottom-style: none; -} - -.messageText > .text-link { - color: inherit !important; - text-decoration: underline; -} - -.messageImage { - width: 16px; - height: 16px; - margin: 0 4px; -} - -/* Default icons for notifications */ - -.messageImage[type="info"] { - list-style-image: url("chrome://global/skin/notification/info-icon.png"); -} - -.messageImage[type="warning"] { - list-style-image: url("chrome://global/skin/notification/warning-icon.png"); -} - -.messageImage[type="critical"] { - list-style-image: url("chrome://global/skin/notification/error-icon.png"); -} - -.messageText { - margin: 0 3px !important; - padding: 0; - font-weight: bold; -} - -.messageCloseButton { - -moz-appearance: none; - padding: 0; - margin: 0 2px; - border: none; -} - -/* - Invert the close icon for @type=info since both are normally dark. It's unclear - why !important is necessary here so remove it if it's no longer needed. -*/ -notification[type="info"] .close-icon:not(:hover) { - -moz-image-region: rect(0, 64px, 16px, 48px) !important; -} - -@media (min-resolution: 2dppx) { - notification[type="info"] .close-icon:not(:hover) { - -moz-image-region: rect(0, 128px, 32px, 96px) !important; - } -} - -.messageCloseButton:-moz-focusring > .toolbarbutton-icon { - border-radius: 10000px; - box-shadow: 0 0 2px 1px -moz-mac-focusring, - 0 0 0 2px -moz-mac-focusring inset; -} - -@media (min-resolution: 2dppx) { - .messageCloseButton > .toolbarbutton-icon { - width: 16px; - } -} - -/* Popup notification */ - -.popup-notification-body { - max-width: 25em; -} - -.popup-notification-origin:not([value]), -.popup-notification-learnmore-link:not([href]) { - display: none; -} - -.popup-notification-origin { - margin-bottom: .3em !important; -} - -.popup-notification-learnmore-link { - margin-top: .5em !important; -} - -.popup-notification-button-container { - margin-top: 17px; -} - -.popup-notification-menubutton { - -moz-appearance: none; -} - -.popup-notification-menubutton:not([type="menu-button"]):-moz-focusring, -.popup-notification-menubutton:-moz-focusring > .button-menubutton-dropmarker, -.popup-notification-menubutton > .button-menubutton-button:-moz-focusring { - box-shadow: @focusRingShadow@; - position: relative; -} - -.popup-notification-menubutton:not([type="menu-button"]), -.popup-notification-menubutton > .button-menubutton-button, -.popup-notification-menubutton > .button-menubutton-dropmarker { - -moz-appearance: none; - color: #434343; - border-radius: 4px; - border: 1px solid #b5b5b5; - background: linear-gradient(#fff, #f2f2f2); - box-shadow: inset 0 1px rgba(255,255,255,.8), - inset 0 0 1px rgba(255,255,255,.25), - 0 1px rgba(255,255,255,.3); - background-clip: padding-box; - background-origin: padding-box; - padding: 2px 6px; -} - -.popup-notification-menubutton > .button-menubutton-button { - -moz-appearance: none; - margin: 0; - padding-top: 2px; - padding-bottom: 2px; - padding-inline-start: 8px; - padding-inline-end: 5px; -} - -.popup-notification-menubutton > .button-menubutton-dropmarker { - padding: 7px 8px; - margin-top: 0; - margin-bottom: 0; - margin-inline-start: -1px; - list-style-image: url("chrome://global/skin/icons/panel-dropmarker.png"); -} - -.popup-notification-menubutton > .button-menubutton-button:-moz-locale-dir(ltr), -.popup-notification-menubutton > .button-menubutton-dropmarker:-moz-locale-dir(rtl) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.popup-notification-menubutton > .button-menubutton-button:-moz-locale-dir(rtl), -.popup-notification-menubutton > .button-menubutton-dropmarker:-moz-locale-dir(ltr) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.popup-notification-menubutton:not([type="menu-button"]):hover:active, -.popup-notification-menubutton > .button-menubutton-button:hover:active, -.popup-notification-menubutton[open="true"] > .button-menubutton-dropmarker { - box-shadow: inset 0 1px 4px -3px #000, 0 1px rgba(255, 255, 255, 0.3); -} - -.popup-notification-closebutton { - margin-inline-end: -12px; - margin-top: -13px; -} - -.popup-notification-closeitem > .menu-iconic-left { - display: none; -} - -.popup-notification-menubutton > .button-menubutton-button[disabled] { - opacity: 0.5; -} - -.popup-notification-warning { - color: #aa1b08; -} diff --git a/toolkit/themes/osx/global/notification/close.png b/toolkit/themes/osx/global/notification/close.png deleted file mode 100644 index 3300a4d61ec92c7afb2dce9ce6e58898b46f8bfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 795 zcmV+$1LXXPP)S81-$bfbby@ZK~&Id^=2uM# zhR`91BEhrpblA0Kc1eVY-(`4tXMViTf8Gbg|K%u~(kReGGc6j-G*Mt$Vn;d+6p}D7 z{ip)5QOfmT7(*I{b3Kg`#rWroCBq~XENf5YXuEk;RI!jEsH~2M6A$WQO>#tq6Y2)n_kus)aD8jz z=Nfgm|)Ux|0 ZegU22(-a8^IJp1-002ovPDHLkV1m8JWbFU| diff --git a/toolkit/themes/osx/global/notification/error-icon.png b/toolkit/themes/osx/global/notification/error-icon.png deleted file mode 100644 index 54cc7e663b95362b82555f65ae3ebb609e45e928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmV+h0{Q)kP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP! z4JQB&vHMy800D+cL_t(I%Z-vTO9EjS$A5-OOHmCDEv+trWkeq#p=(eSTmzxWr74 zPRGvodcDJbzkdQ8lu9LaG#YvF3FZLZZubpPgb=5`?|)4uli_roGfmT87Xh-Wsy;;< zx~^-{ou!nvuIpMAB(>%sbXb>cmMzZ07*qo IM6N<$f(shd&;S4c diff --git a/toolkit/themes/osx/global/notification/info-icon.png b/toolkit/themes/osx/global/notification/info-icon.png deleted file mode 100644 index 55d45f165cd8473bd7cde5b2ce0d871b4f154f07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP! z4JS2N0zY{G00EUrL_t(I%bkP>9YVLvddaiuo`bAw#m6xlj~Bm?U%DB;`6z7W#w3g?s+z^Kumxh{#*u z2zUv+0KNftK&+JN*;-W!dc5oPmnNsR|7>1dZ;G`&u z8xc9MEAK59i&#WvwrQ=;0kqcVW#4>0|M1Ykdc8iY)oRbny^cns$M$Jcuh)-6Q$23hRwkXf@3xGV&FYNm?O((wZzb|*>d7gJ2MbUWIt86QK zo_7tjtHyc)Tm?aJ8^`h37?X&|%ovlzaXb!!;1;;r=>GnV7O#P0z~6}Pfe{b^Uu@xT Xj$uN%1ffLB00000NkvXXu0mjf2=?V1 diff --git a/toolkit/themes/osx/global/notification/warning-icon.png b/toolkit/themes/osx/global/notification/warning-icon.png deleted file mode 100644 index 13cf79d6df563d7d69bf05bd9c6f2b22e9e57bc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP! z4Jb9=nj^LV00HtzL_t(I%axPAYZOrs$3OG-M|QJCB!*N8r=Ye8h=ST&6~mH7YyyE` z;aXTk5Ig^oU}>Y(VrA+ST6igp;5Bk^VjEH%x$JG;yB(X2TsD`&fq`N8zWIK?Z{9;y znU+8c_*`e}DxB2dOA!RYC+FNUfbaW#Ywgo%I5Vv&A{)-RCEye|b_OGg{WPgAEwyN5)EK^mr7Y;N%8Dm}moit5%RrR5&K1$Pc7wCAN_xuvR z!9Hh<*#=y<+g0Ez@TIPuh&&UKxhwA=48vE>IUjJx$HzC$`$tDdHv#9I^TRNFIdy=D zw5+uofCZ|-U~pYT=0s%v`&p&2a)|s%YfE$fQcSNLZqA1z{ z&L-Ibb8v9b2M&S5x;9M}aUAc6hvrTU#r= zUhkT<)|=dKRaG;<1K@sDRnoA??Ck8>=H})PQPovo1(@Ogq6EJG1x7s%xLPWtp8x;= M07*qoM6N<$g4lHw82|tP diff --git a/toolkit/themes/osx/global/numberbox.css b/toolkit/themes/osx/global/numberbox.css deleted file mode 100644 index e5de22d21..000000000 --- a/toolkit/themes/osx/global/numberbox.css +++ /dev/null @@ -1,33 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -textbox[type="number"] { - -moz-appearance: none; - -moz-box-align: center; - padding: 0 !important; - border: none; - background-color: transparent; - cursor: default; -} - -html|*.numberbox-input { - text-align: right; - padding: 0 1px !important; -} - -.numberbox-input-box { - -moz-appearance: textfield; - margin-right: 4px; - border: 3px solid; - -moz-border-top-colors: transparent #888888 #000000; - -moz-border-right-colors: transparent #FFFFFF #000000; - -moz-border-bottom-colors: transparent #FFFFFF #000000; - -moz-border-left-colors: transparent #888888 #000000; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - background-color: -moz-Field; -} diff --git a/toolkit/themes/osx/global/popup.css b/toolkit/themes/osx/global/popup.css deleted file mode 100644 index cf0266a3a..000000000 --- a/toolkit/themes/osx/global/popup.css +++ /dev/null @@ -1,141 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -menupopup, -panel { - -moz-appearance: menupopup; - background-color: Menu; -} - -menupopup > menu > menupopup { - margin-top: -4px; -} - -.popup-internal-box { - padding: 4px 0; -} - -panel[titlebar] { - -moz-appearance: none; /* to disable rounded corners */ -} - -panel[type="arrow"] { - -moz-appearance: none; - background: transparent; -} - -panel[type="arrow"][side="top"], -panel[type="arrow"][side="bottom"] { - margin-left: -25px; - margin-right: -25px; -} - -panel[type="arrow"][side="left"], -panel[type="arrow"][side="right"] { - margin-top: -25px; - margin-bottom: -25px; -} - -.panel-arrowcontent { - -moz-appearance: none; - background: var(--arrowpanel-background); - border-radius: var(--arrowpanel-border-radius); - box-shadow: 0 0 0 1px var(--arrowpanel-border-color); - color: var(--arrowpanel-color); - border: none; - padding: var(--arrowpanel-padding); - margin: 1px; -} - -.panel-arrow[side="top"] { - list-style-image: var(--panel-arrow-image-vertical, - url("chrome://global/skin/arrow/panelarrow-vertical.png")); - margin-left: 16px; - margin-right: 16px; - margin-bottom: -1px; -} - -.panel-arrow[side="bottom"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-vertical.png"); - -moz-transform: scaleY(-1); - margin-left: 16px; - margin-right: 16px; - margin-top: -1px; -} - -.panel-arrow[side="left"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal.png"); - margin-top: 16px; - margin-bottom: 16px; - margin-right: -1px; -} - -.panel-arrow[side="right"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal.png"); - transform: scaleX(-1); - margin-top: 16px; - margin-bottom: 16px; - margin-left: -1px; -} - -@media (min-resolution: 2dppx) { - .panel-arrow[side="top"], - .panel-arrow[side="bottom"] { - list-style-image: var(--panel-arrow-image-vertical, - url("chrome://global/skin/arrow/panelarrow-vertical@2x.png")); - width: 18px; - height: 10px; - } - - .panel-arrow[side="left"], - .panel-arrow[side="right"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal@2x.png"); - width: 10px; - height: 18px; - } -} - -/* ::::: tooltip ::::: */ - -tooltip { - -moz-appearance: tooltip; - margin-top: 18px; - padding: 2px 3px; - max-width: 40em; - color: InfoText; - font: message-box; - cursor: default; -} - -tooltip[titletip="true"] { - /* See bug 32157 comment 128 - * margin: -2px 0px 0px -3px; - */ - max-width: none; -} - -/* rules for popups associated with menulists */ - -menulist > menupopup { - min-width: 0px; -} - -menulist > menupopup:not([position]) { - margin-inline-start: -13px; - margin-top: -2px; -} - -menulist[editable="true"] > menupopup { - -moz-appearance: none; -} - -menulist > menupopup > .popup-internal-box { - padding: 0; -} - -menulist:not([editable="true"]) > menupopup { - padding: 4px 0; -} diff --git a/toolkit/themes/osx/global/preferences.css b/toolkit/themes/osx/global/preferences.css deleted file mode 100644 index d0b82a819..000000000 --- a/toolkit/themes/osx/global/preferences.css +++ /dev/null @@ -1,64 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -prefwindow { - padding: 0; - font: -moz-dialog !important; -} - -prefpane { - padding: 12px 12px 0 12px; -} - -prefwindow[type="child"] > prefpane { - padding: 0; -} - -.prefWindow-dlgbuttons { - margin: 0 12px 12px; - padding-top: 0 !important; -} - -.paneSelector { - font: message-box; - padding: 1px 4px; - -moz-appearance: toolbar; - margin: 0; -} - -radio[pane] { - border: solid transparent; - border-width: 0 2px; - padding: 5px 4px 3px; - margin: 0; - -moz-appearance: none; - text-shadow: rgba(255, 255, 255, 0.4) 0 1px; -} - -radio[pane]:active:hover { - text-shadow: none; -} - -radio[pane] > .paneButtonIcon { - /* preload external filter file */ - background-image: url("chrome://global/skin/filters.svg"); -} - -radio[pane]:active:hover > .paneButtonIcon { - filter: url("chrome://global/skin/filters.svg#iconPressed"); -} - -radio[pane][selected="true"] { - -moz-border-image: url("chrome://global/skin/icons/panebutton-active.png") 0 2 fill repeat stretch; -} - -radio[pane][selected="true"]:-moz-window-inactive { - -moz-border-image: url("chrome://global/skin/icons/panebutton-inactive.png") 0 2 fill repeat stretch; -} - -.paneButtonLabel { - margin: 0 !important; -} diff --git a/toolkit/themes/osx/global/progressmeter.css b/toolkit/themes/osx/global/progressmeter.css deleted file mode 100644 index 13fce252a..000000000 --- a/toolkit/themes/osx/global/progressmeter.css +++ /dev/null @@ -1,22 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -progressmeter { - -moz-appearance: progressbar; - margin: 2px 4px; - min-width: 128px; - height: 12px; -} - -.progress-remainder[flex="100"], .progress-remainder[flex="0"] { - background-image: none !important; - -moz-appearance: none; -} - -.progressmeter-statusbar { - margin: 0; - border-width: 1px; -} diff --git a/toolkit/themes/osx/global/radio.css b/toolkit/themes/osx/global/radio.css deleted file mode 100644 index e21d93011..000000000 --- a/toolkit/themes/osx/global/radio.css +++ /dev/null @@ -1,43 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -radiogroup { - margin: 1px 0px 1px 0px; -} - -radio { - -moz-appearance: radio-container; - -moz-box-align: center; - margin: 4px 2px; - -moz-user-focus: ignore; -} - -.radio-label-box { - margin-inline-start: 0px; - padding: 0px; -} - -.radio-icon { - margin-inline-end: 2px; -} - -.radio-label { - margin: 1px 0 !important; -} - -radio[disabled="true"] { - color: GrayText !important; -} - -.radio-check, .radio-check-box1 { - -moz-appearance: radio; - margin: 0 1px 1px; - /* vertical-align tells native theming where to snap to. However, this doesn't - * always work reliably because of bug 503833. */ - vertical-align: bottom; - width: 1.3em; - height: 1.3em; -} diff --git a/toolkit/themes/osx/global/resizer.css b/toolkit/themes/osx/global/resizer.css deleted file mode 100644 index 18cdd2bc9..000000000 --- a/toolkit/themes/osx/global/resizer.css +++ /dev/null @@ -1,69 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -resizer { - -moz-appearance: resizer; - background: url("chrome://global/skin/icons/resizer.png") no-repeat; - background-size: 100% 100%; - cursor: se-resize; - min-width: 15px; - width: 15px; - min-height: 15px; - height: 15px; -} -@media (min-resolution: 2dppx) { - resizer { - background-image: url("chrome://global/skin/icons/resizer@2x.png"); - background-size: 100% 100%; - } -} - -resizer[type="window"] { - display: none; -} - -resizer[rtl="true"], -resizer[dir="bottomend"]:-moz-locale-dir(rtl) { - background: url("chrome://global/skin/icons/resizer-rtl.png") no-repeat; -} -@media (min-resolution: 2dppx) { - resizer[rtl="true"], - resizer[dir="bottomend"]:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/icons/resizer-rtl@2x.png"); - background-size: 100% 100%; - } -} - - -resizer[dir="left"], -resizer[dir="bottomleft"], -resizer[dir="bottomstart"] { - transform: scaleX(-1); -} - -resizer[dir="bottomleft"], -resizer[dir="bottomstart"]:not([rtl="true"]):not(:-moz-locale-dir(rtl)), -resizer[dir="bottomend"][rtl="true"] { - cursor: sw-resize; -} - -resizer[dir="top"], -resizer[dir="bottom"] { - cursor: ns-resize; -} - -resizer[dir="left"], -resizer[dir="right"] { - cursor: ew-resize; -} - -resizer[dir="topleft"] { - cursor: nw-resize; -} - -resizer[dir="topright"] { - cursor: ne-resize; -} diff --git a/toolkit/themes/osx/global/richlistbox.css b/toolkit/themes/osx/global/richlistbox.css deleted file mode 100644 index 605c89abb..000000000 --- a/toolkit/themes/osx/global/richlistbox.css +++ /dev/null @@ -1,27 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -richlistbox { - -moz-appearance: listbox; - margin: 2px 4px; - background-color: -moz-Field; - color: -moz-FieldText; -} - -richlistbox[disabled="true"] { - color: GrayText; -} - -richlistitem[selected="true"] { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -richlistbox:focus > richlistitem[selected="true"] { - background-color: Highlight; - color: HighlightText; -} - diff --git a/toolkit/themes/osx/global/scale.css b/toolkit/themes/osx/global/scale.css deleted file mode 100644 index 2e090bf28..000000000 --- a/toolkit/themes/osx/global/scale.css +++ /dev/null @@ -1,46 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -.scale-slider { - -moz-appearance: scale-horizontal; - background: url("chrome://global/skin/scale/scale-tray-horiz.gif") 0% 50% repeat-x; - margin: 2px 4px; - width: 100px; -} - -.scale-slider[orient="vertical"] -{ - -moz-appearance: scale-vertical; - background: url("chrome://global/skin/scale/scale-tray-vert.gif") 50% 0% repeat-y; - margin: 4px 2px; - width: auto; - height: 100px; -} - -.scale-thumb { - -moz-appearance: scalethumb-horizontal; - border: 2px solid; - -moz-border-top-colors: ThreeDLightShadow ThreeDHighlight; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDLightShadow ThreeDHighlight; - background-color: -moz-Dialog; - min-width: 30px; - min-height: 15px; -} - -.scale-thumb[orient="vertical"] { - -moz-appearance: scalethumb-vertical; - min-width: 15px; - min-height: 30px; -} - -.scale-thumb[disabled="true"] { - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow !important; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow !important; -} diff --git a/toolkit/themes/osx/global/scale/scale-tray-horiz.gif b/toolkit/themes/osx/global/scale/scale-tray-horiz.gif deleted file mode 100644 index b87fe68c15a880deadf73304263a50657d7e6c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 ycmZ?wbhEHbWMp7tSjfQ8(9m$;z=8i@p!k!8k&A(eL5BedK=KSs%py$z4Aua)mJW{q diff --git a/toolkit/themes/osx/global/scale/scale-tray-vert.gif b/toolkit/themes/osx/global/scale/scale-tray-vert.gif deleted file mode 100644 index 97687b2e229de10d081cb99cadc6fb92fd7af5ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 ycmZ?wbhEHbWMg1tSjfQ8(9m$;z=8i@p!k!8k&A(eL5BedK=KSs%py$z4Aua)st%6; diff --git a/toolkit/themes/osx/global/scrollbox.css b/toolkit/themes/osx/global/scrollbox.css deleted file mode 100644 index c9b727669..000000000 --- a/toolkit/themes/osx/global/scrollbox.css +++ /dev/null @@ -1,62 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* Horizontal enabled */ -.autorepeatbutton-up[orient="horizontal"], -.scrollbutton-up[orient="horizontal"] { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down[orient="horizontal"], -.scrollbutton-down[orient="horizontal"] { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -/* Horizontal disabled */ -.autorepeatbutton-up[orient="horizontal"][disabled="true"], -.scrollbutton-up[orient="horizontal"][disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down[orient="horizontal"][disabled="true"], -.scrollbutton-down[orient="horizontal"][disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -/* Vertical enabled */ -.autorepeatbutton-up:not([orient="horizontal"]), -.scrollbutton-up { - list-style-image: url("chrome://global/skin/arrow/arrow-up-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down:not([orient="horizontal"]), -.scrollbutton-down { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -/* Vertical disabled */ -.autorepeatbutton-up[disabled="true"]:not([orient="horizontal"]), -.scrollbutton-up[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-up-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down[disabled="true"]:not([orient="horizontal"]), -.scrollbutton-down[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.scrollbutton-up > .toolbarbutton-text, -.scrollbutton-down > .toolbarbutton-text { - display: none; -} diff --git a/toolkit/themes/osx/global/shared.inc b/toolkit/themes/osx/global/shared.inc deleted file mode 100644 index 350fed172..000000000 --- a/toolkit/themes/osx/global/shared.inc +++ /dev/null @@ -1,20 +0,0 @@ -%filter substitution - -%define loweredShadow 0 1px rgba(255, 255, 255, .4) -%define focusRingShadow 0 0 1px -moz-mac-focusring inset, 0 0 4px 1px -moz-mac-focusring, 0 0 1.5px 1px -moz-mac-focusring -%define yosemiteFocusRingShadow 0 0 0 0.5px -moz-mac-focusring inset, 0 0 0 2px -moz-mac-focusring - -%define roundButtonBorder 1px solid rgba(0,0,0,.35) -%define roundButtonBackground linear-gradient(#f6f6f6, #e9e9e9) -%define roundButtonShadow 0 1px rgba(255,255,255,.5), inset 0 1px 1px rgba(255,255,255,.5) -%define roundButtonPressedBackground #dadada -%define roundButtonPressedShadow 0 1px rgba(255,255,255,.4), inset 0 1px 3px rgba(0,0,0,.2) - -%define scopeBarBackground linear-gradient(#E8E8E8, #D0D0D0) repeat-x -%define scopeBarSeparatorBorder 1px solid #888 -%define scopeBarTitleColor #6D6D6D - -%define toolbarbuttonCornerRadius 3px -%define toolbarbuttonBackground linear-gradient(#FFF, #ADADAD) repeat-x -%define toolbarbuttonPressedInnerShadow inset rgba(0, 0, 0, 0.3) 0 -6px 10px, inset #000 0 1px 3px, inset rgba(0, 0, 0, 0.2) 0 1px 3px -%define toolbarbuttonInactiveBorderColor rgba(146, 146, 146, 0.84) diff --git a/toolkit/themes/osx/global/spinbuttons.css b/toolkit/themes/osx/global/spinbuttons.css deleted file mode 100644 index bf89520f6..000000000 --- a/toolkit/themes/osx/global/spinbuttons.css +++ /dev/null @@ -1,31 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -spinbuttons { - height: 24px; - min-height: 24px; - -moz-appearance: spinner; - cursor: default; -} - -.spinbuttons-up { - -moz-appearance: none; - -moz-box-flex: 1; - min-width: 1px; - min-height: 1px; - margin: 0; - padding: 0; -} - -.spinbuttons-down { - -moz-appearance: none; - -moz-box-flex: 1; - min-width: 1px; - min-height: 1px; - margin: 0; - padding: 0; -} - diff --git a/toolkit/themes/osx/global/splitter.css b/toolkit/themes/osx/global/splitter.css deleted file mode 100644 index caaa83ad0..000000000 --- a/toolkit/themes/osx/global/splitter.css +++ /dev/null @@ -1,124 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* ::::: splitter (vertical) ::::: */ - -splitter { - -moz-box-align: center; - -moz-box-pack: center; - cursor: ew-resize; - min-width: 9px; - min-height: 9px; - background: url("chrome://global/skin/splitter/dimple.png") transparent no-repeat center; -} - -splitter[state="collapsed"][collapse="before"], -splitter[state="collapsed"][substate="before"], -splitter[state="collapsed"][collapse="after"]:-moz-locale-dir(rtl), -splitter[state="collapsed"][substate="after"]:-moz-locale-dir(rtl) { - cursor: e-resize; -} - -splitter[state="collapsed"][collapse="after"], -splitter[state="collapsed"][substate="after"], -splitter[state="collapsed"][collapse="before"]:-moz-locale-dir(rtl), -splitter[state="collapsed"][substate="before"]:-moz-locale-dir(rtl) { - cursor: w-resize; -} - -splitter:-moz-lwtheme { - background: none; -} - -/* ::::: splitter (horizontal) ::::: */ - -splitter[orient="vertical"] { - cursor: ns-resize; - min-width: 0px; - min-height: 9px; - min-width: 9px; - background: url("chrome://global/skin/splitter/dimple.png") transparent no-repeat center; -} - -splitter[orient="vertical"][state="collapsed"][collapse="before"], -splitter[orient="vertical"][state="collapsed"][substate="before"] { - cursor: s-resize; -} - -splitter[orient="vertical"][state="collapsed"][collapse="after"], -splitter[orient="vertical"][state="collapsed"][substate="after"] { - cursor: n-resize; -} - -splitter[disabled="true"] { - cursor: default !important; -} - -/* ::::: splitter grippy ::::: */ - -grippy { - cursor: pointer; - margin: 0px 1px; - min-width: 4px; - min-height: 115px; - background-color: transparent; - background-repeat: no-repeat; -} - -grippy:hover { - background-color: ThreeDHighlight; -} - -splitter[orient="vertical"] > grippy { - margin: 1px 0px; - min-width: 115px; - min-height: 4px; -} - -/* ..... normal state ..... */ - -/* vertical grippies */ -splitter[collapse="before"] > grippy, -splitter[collapse="after"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-left.gif"); -} - -splitter[collapse="after"] > grippy, -splitter[collapse="before"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-right.gif"); -} - -/* horizontal grippies */ -splitter[collapse="before"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-top.gif"); -} - -splitter[collapse="after"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-bottom.gif"); -} - -/* ..... collapsed state ..... */ - -/* vertical grippies */ -splitter[collapse="before"][state="collapsed"] > grippy, -splitter[collapse="after"][state="collapsed"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-right.gif"); -} - -splitter[collapse="after"][state="collapsed"] > grippy, -splitter[collapse="before"][state="collapsed"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-left.gif"); -} - -/* horizontal grippies */ -splitter[collapse="before"][state="collapsed"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-bottom.gif"); -} - -splitter[collapse="after"][state="collapsed"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-top.gif"); -} - diff --git a/toolkit/themes/osx/global/splitter/dimple.png b/toolkit/themes/osx/global/splitter/dimple.png deleted file mode 100644 index 4d0b91bfea743f38796fabf7e599ce6f23b6e246..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c4!3HFg*81KCQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jiflby978y+CnqE%Y+!g~rLiqRKupY!)##3c#F?_f!jB9^ zSAeX0+j64=oSmChIht?q{Qv*|I@==_jcaTSt)|kvPPx6SfCe#my85}Sb4q9e0Ol?* A$p8QV diff --git a/toolkit/themes/osx/global/splitter/grip-bottom.gif b/toolkit/themes/osx/global/splitter/grip-bottom.gif deleted file mode 100644 index af6290fe9deacdcdab045c2d7c81df5c22d6bc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmZ?wbhEHbEM{O~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#m?XaL)Ki2*JpSC zPq-0zeFdYC*U~qyRuxF^FY>)#oR|J8B8kb~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#mnFX=aLx~R|+=Y znaf_K;@Y=7bkU+!jMA*jBUe~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#mnFXLz=*~YqOsp zlT~d@+}0XDbJ5~kK?gLCZn{1(sqOllwb|wm&Zpm;*`az?ZCXufnE&&Q;!FJso!0nU WPfm-yrmww+wYYeN>UkkX25SIG3s$25 diff --git a/toolkit/themes/osx/global/splitter/grip-top.gif b/toolkit/themes/osx/global/splitter/grip-top.gif deleted file mode 100644 index 3cba0059461c6d52d41fda25610aecba188fa35b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmZ?wbhEHbEM{O~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#n#{i=d!&Pug~uO zAHS7RC9`wI6t?Wu`*hwM`;v3|M`TxIC#O(?g9ndP`*EeBl{sqjeO45E8aA%Gv8L>F IF9U-$0KE=Rn*aa+ diff --git a/toolkit/themes/osx/global/tabbox.css b/toolkit/themes/osx/global/tabbox.css deleted file mode 100644 index 4fcbac486..000000000 --- a/toolkit/themes/osx/global/tabbox.css +++ /dev/null @@ -1,148 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - The default style of these tabs is that of an NSTabView with tabs at - the top in the "regular" size. These tabs can be used with or without - a tabbox element. - For bottom tabs you should use the "tabs-bottom" class on the tabbox - or the tabs element. Bottom tabs use a style that's similar to the - one used in Adium. -*/ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -tabbox { - margin: 0 5px; -} - -tabpanels { - -moz-appearance: tabpanels; - padding: 33px 15px 15px; -} - -tabs { - -moz-box-align: center; - font: menu; -} - -tabbox > tabs { - padding: 0 10px; - margin-bottom: -12px; - position: relative; -} - -tab { - -moz-appearance: tab; -} - -tab:-moz-focusring { - /* Tab focus rings need to overlay adjacent tabs. */ - position: relative; -} - -tab:first-of-type { - padding-inline-start: 2px; -} - -tab:last-of-type { - padding-inline-end: 2px; -} - -tab[visuallyselected="true"] { - color: #FFF; - text-shadow: rgba(0, 0, 0, 0.4) 0 1px; -} - -.tab-middle { - padding: 1px 6px 2px; -} - -.tabs-left, -.tabs-right { - -moz-box-flex: 1; -} - -/* Tabs at the bottom - * These tabs are smaller, left aligned and don't extend into the tabpanel. - */ - -tabbox.tabs-bottom > tabpanels { - padding: 10px; -} - -tabbox.tabs-bottom > tabs, -tabs.tabs-bottom { - background-color: rgba(0, 0, 0, 0.1); - padding: 0; - margin: 0; - border-top: 2px solid; - -moz-border-top-colors: #888 rgba(0, 0, 0, 0.08); - -moz-box-align: start; - font: message-box; -} - -tabbox.tabs-bottom > tabs > .tabs-left, -tabs.tabs-bottom > .tabs-left { - -moz-box-flex: 0; -} - -tabbox.tabs-bottom > tabs > tab, -tabs.tabs-bottom > tab { - -moz-appearance: none; - margin: -1px 0 0; - padding: 0 0 2px 0; - position: relative; - border-inline-end: 1px solid rgba(0, 0, 0, 0.19); -} - -tabbox.tabs-bottom > tabs > tab > .tab-middle, -tabs.tabs-bottom > tab > .tab-middle { - padding: 1px 2px 0 2px; -} - -tabbox.tabs-bottom > tabs > tab:not([visuallyselected=true]):hover, -tabs.tabs-bottom > tab:not([visuallyselected=true]):hover { - background-color: rgba(0, 0, 0, 0.1); - border-inline-end-color: rgba(0, 0, 0, 0.1); -} - -tabbox.tabs-bottom > tabs > tab[visuallyselected=true], -tabs.tabs-bottom > tab[visuallyselected=true] { - color: #000; - text-shadow: none; - border: solid #888; - border-width: 0 2px 2px; - border-radius: 2px; - -moz-border-left-colors: rgba(0, 0, 0, 0.08) #888; - -moz-border-right-colors: rgba(0, 0, 0, 0.08) #888; - -moz-border-bottom-colors: rgba(0, 0, 0, 0.08) #888; - margin-inline-end: -1px; - margin-top: -2px; - margin-bottom: 1px; - padding: 0; -} - -tabbox.tabs-bottom > tabs > tab[beforeselected=true], -tabs.tabs-bottom > tab[beforeselected=true] { - border-inline-end-color: transparent; - margin-inline-end: -2px; -} - -tabbox.tabs-bottom > tabs > tab:first-of-type:not([visuallyselected=true]), -tabs.tabs-bottom > tab:first-of-type:not([visuallyselected=true]) { - border-inline-start: 4px solid transparent; -} - -tabbox.tabs-bottom > tabs > tab:first-of-type[visuallyselected=true], -tabs.tabs-bottom > tab:first-of-type[visuallyselected=true] { - margin-inline-start: 2px; -} - -tabbox.tabs-bottom, -tabbox.tabs-bottom > tabpanels, -tabbox.tabs-bottom > tabs > tab[visuallyselected=true] > .tab-middle, -tabs.tabs-bottom > tab[visuallyselected=true] > .tab-middle { - -moz-appearance: dialog; -} diff --git a/toolkit/themes/osx/global/tabprompts.css b/toolkit/themes/osx/global/tabprompts.css deleted file mode 100644 index 14a23f269..000000000 --- a/toolkit/themes/osx/global/tabprompts.css +++ /dev/null @@ -1,67 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Tab Modal Prompt boxes */ -tabmodalprompt { - background-image: url(chrome://global/skin/icons/tabprompts-bgtexture.png); - background-color: hsla(0,0%,10%,.5); - font-family: sans-serif; /* use content font not system UI font */ - font-size: 110%; -} - -.mainContainer { - color: black; - background-color: hsla(0,0%,100%,.95); - background-clip: padding-box; - border-radius: 2px; - border: 1px solid hsla(0,0%,0%,.5); -} - -.topContainer { - padding: 20px; -} - -.buttonContainer { - padding: 12px 20px 15px; - background-color: hsla(0,0%,0%,.05); - border-top: 1px solid hsla(0,0%,0%,.05); -} - -button { - -moz-appearance: none; - padding: 2px 0; - margin: 0; - margin-inline-start: 8px; - border-radius: 2px; - color: black !important; - background-color: hsl(0,0%,90%); - background-image: linear-gradient(hsla(0,0%,100%,.7), transparent); - background-clip: padding-box; - border: 1px solid; - border-color: hsl(0,0%,65%) hsl(0,0%,60%) hsl(0,0%,50%); - box-shadow: 0 1px 0 hsla(0,0%,100%,.9) inset, - 0 1px 2px hsla(0,0%,0%,.1); -} - - -button[default=true] { - background-color: hsl(0,0%,79%); -} - -button:hover { - background-color: hsl(0,0%,96%); -} - -button:hover:active { - background-image: linear-gradient(hsla(0,0%,100%,.2), transparent); - background-color: hsl(0,0%,70%); - box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset, - 0 1px 3px hsla(0,0%,0%,.2); -} - -button:focus { - box-shadow: 0 0 1px -moz-mac-focusring inset, - 0 0 4px 1px -moz-mac-focusring, - 0 0 1.5px 1px -moz-mac-focusring; -} diff --git a/toolkit/themes/osx/global/textbox.css b/toolkit/themes/osx/global/textbox.css deleted file mode 100644 index d7a31c7ac..000000000 --- a/toolkit/themes/osx/global/textbox.css +++ /dev/null @@ -1,102 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -textbox { - -moz-appearance: textfield; - cursor: text; - margin: 4px; - border: 3px solid; - -moz-border-top-colors: transparent #888888 #000000; - -moz-border-right-colors: transparent #FFFFFF #000000; - -moz-border-bottom-colors: transparent #FFFFFF #000000; - -moz-border-left-colors: transparent #888888 #000000; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - padding: 0px; - background-color: -moz-Field; - color: -moz-FieldText; -} - -html|*.textbox-input, -html|*.textbox-textarea { - margin: 0px !important; - border: none !important; - padding: 0px 1px !important; - background-color: inherit; - color: inherit; - font: inherit; -} - -.textbox-contextmenu { - cursor: default; -} - -textbox[focused="true"] { - -moz-border-top-colors: -moz-mac-focusring -moz-mac-focusring #000000; - -moz-border-right-colors: -moz-mac-focusring -moz-mac-focusring #000000; - -moz-border-bottom-colors: -moz-mac-focusring -moz-mac-focusring #000000; - -moz-border-left-colors: -moz-mac-focusring -moz-mac-focusring #000000; -} - -textbox[readonly="true"] { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -textbox[disabled="true"] { - cursor: default; - -moz-border-top-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-right-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-bottom-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-left-colors: transparent ThreeDShadow -moz-Dialog; - background-color: -moz-Dialog; - color: GrayText; -} - -textbox.plain { - -moz-appearance: none !important; - background-color: transparent; - padding: 0px !important; - margin: 0px !important; - border: none !important; -} - -textbox.plain html|*.textbox-input, -textbox.plain html|*.textbox-textarea { - padding: 0px !important; -} - -/* ::::: search box ::::: */ - -textbox[type="search"] { - -moz-appearance: searchfield; - padding: 1px; - font-size: 12px; -} - -.textbox-search-clear { - list-style-image: url(chrome://global/skin/icons/searchfield-cancel.svg); - -moz-image-region: rect(0, 14px, 14px, 0); - margin-bottom: 1px; -} - -textbox[type="search"].compact { - padding: 0; - font-size: 11px; -} - -textbox[type="search"].compact > .textbox-input-box > .textbox-search-icons > .textbox-search-clear { - width: 11px; -} - -.textbox-search-clear:not([disabled]) { - cursor: default; -} - -.textbox-search-icons:not([selectedIndex="1"]) { - visibility: hidden; -} diff --git a/toolkit/themes/osx/global/toolbar.css b/toolkit/themes/osx/global/toolbar.css deleted file mode 100644 index f07332d2f..000000000 --- a/toolkit/themes/osx/global/toolbar.css +++ /dev/null @@ -1,127 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -toolbox { - /* Setting -moz-appearance:toolbox causes sheets to attach under the - * toolbox and has no other effects. It doesn't render anything. */ - -moz-appearance: toolbox; -} - -toolbar { - min-width: 1px; - min-height: 20px; - -moz-appearance: toolbar; -} - -%ifdef MOZ_AUSTRALIS -menubar:-moz-lwtheme, -toolbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-color: transparent; -} -%else -menubar:-moz-lwtheme, -toolbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-style: none; -} -%endif - -menubar { - -moz-appearance: dialog; /* For content menubars, "toolbar" is too dark, so we use "dialog". */ - min-width: 1px; -} - -toolbarseparator { - -moz-appearance: none; - margin: 3px 4px; - background: url("chrome://global/skin/toolbar/toolbar-separator.png") transparent repeat-y; - padding: 0; - width: 1px !important; -} - -/* ::::: toolbarpaletteitem ::::: */ - -toolbarpaletteitem { - cursor: grab; -} - -toolbar[iconsize="small"] toolbarpaletteitem[type="spacer"] { - min-width: 24px !important; -} - -toolbarpaletteitem[type="spacer"] { - min-width: 32px !important; -} - -.toolbarpaletteitem-box[type="spacer"] { - border: 1px solid #A3A3A3; - background: url("chrome://global/skin/10pct_transparent_grey.png") repeat; - width: 32px; - margin-top: 18px; -} - -.toolbarpaletteitem-box[type="spring"] { - border: 1px solid #A3A3A3; - background: url("chrome://global/skin/toolbar/spring.png") #FFFFFF no-repeat; - width: 32px; - margin-top: 18px; -} - -.toolbarpaletteitem-box[type="spring"][place="toolbar"] { - background: url("chrome://global/skin/10pct_transparent_grey.png") repeat; -} - -.toolbarpaletteitem-box[type="spacer"][place="toolbar"], -.toolbarpaletteitem-box[type="spring"][place="toolbar"] { - margin: 2px; -} - -.toolbarpaletteitem-box[type="separator"][place="palette"] { - width: 2px; - height: 50px; -} - -.toolbarpaletteitem-box[type="spacer"][place="palette"], -.toolbarpaletteitem-box[type="spring"][place="palette"] { - margin-top: 0; - margin-bottom: 2px; - height: 32px; -} - -.toolbarpaletteitem-box[type="spring"][place="palette"] { - background-position: center; - margin-left: 8px; - margin-right: 8px; -} - -/* ..... drag and drop feedback ..... */ - -toolbarpaletteitem[place="toolbar"] { - margin-left: -2px; - margin-right: -2px; - border-left: 2px solid transparent; - border-right: 2px solid transparent; -} - -toolbarpaletteitem[dragover="left"] { - border-left-color: #000000; -} - -toolbarpaletteitem[dragover="right"] { - border-right-color: #000000; -} - -toolbar[iconsize="small"] toolbarspacer { - min-width: 24px !important; -} - -toolbarspacer { - min-width: 32px !important; -} - diff --git a/toolkit/themes/osx/global/toolbar/spring.png b/toolkit/themes/osx/global/toolbar/spring.png deleted file mode 100644 index 807e1f5e54d7e290fac91334d273168000b1ec4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G6FprVLn>}1r6eRwNRn_kaKzw1!WG8Fd=jMxRxrEC8feHa z;5x!;vSBqtmKj%q6M&9m@O1TaS?83{1OTV4Ow<4X diff --git a/toolkit/themes/osx/global/toolbar/toolbar-separator.png b/toolkit/themes/osx/global/toolbar/toolbar-separator.png deleted file mode 100644 index 21e17543a0d793a91b3ac27dc53233306328b4bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrH!3HFQ?xr>YDVB6cUq=RpjeRx011AIdoCO|{ z#S9GG!XV7ZFl&wkP*Bv<#W95Adh(C||LvKbot+QYvk7oBINs!_T9DA+2~@z~>FVdQ I&MBb@05;7VbpQYW diff --git a/toolkit/themes/osx/global/toolbarbutton.css b/toolkit/themes/osx/global/toolbarbutton.css deleted file mode 100644 index ab24387e3..000000000 --- a/toolkit/themes/osx/global/toolbarbutton.css +++ /dev/null @@ -1,124 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -toolbarbutton { - -moz-box-align: center; - -moz-box-pack: center; - margin: 0 2px; - padding: 3px 2px; - background-color: transparent; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4); -} - -toolbarbutton[open="true"], -toolbarbutton:not([disabled="true"]):active:hover { - text-shadow: none; -} - -.toolbarbutton-text { - margin: 0 !important; /* !important for overriding global.css */ - padding: 0px; - text-align: center; - vertical-align: middle; -} - -toolbarbutton[disabled="true"], -toolbarbutton[disabled="true"]:hover, -toolbarbutton[disabled="true"]:hover:active, -toolbarbutton[disabled="true"][open="true"] { - color: -moz-mac-disabledtoolbartext !important; -} - -/* ::::: toolbarbutton menu ::::: */ - -.toolbarbutton-menu-dropmarker { - -moz-appearance: none !important; - border: none !important; - background-color: transparent !important; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.png"); - padding: 0; - padding-inline-start: 2px; - width: auto; -} - -.toolbarbutton-menu-dropmarker[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.png"); - padding: 0; - padding-inline-start: 2px; -} - -/* ::::: toolbarbutton menu-button ::::: */ - -toolbarbutton[type="menu-button"] { - -moz-box-align: stretch; - -moz-box-orient: horizontal !important; -} - -toolbarbutton[type="menu-button"], -toolbarbutton[type="menu-button"]:hover, -toolbarbutton[type="menu-button"]:hover:active, -toolbarbutton[type="menu-button"][open="true"], -toolbarbutton[type="menu-button"][disabled="true"], -toolbarbutton[type="menu-button"][disabled="true"]:hover, -toolbarbutton[type="menu-button"][disabled="true"]:hover:active { - background-color: transparent; -} - -.toolbarbutton-menubutton-button { - -moz-box-align: center; - -moz-box-pack: center; - -moz-box-orient: vertical; - text-shadow: inherit; -} - -/* ::::: toolbarbutton badged ::::: */ - -.toolbarbutton-badge { - background-color: #d90000; - font-size: 9px; - padding: 1px 2px; - color: #fff; - border-radius: 2px; - box-shadow: 0 1px 0 hsla(0, 100%, 100%, .2) inset, - 0 -1px 0 hsla(0, 0%, 0%, .1) inset, - 0 1px 0 hsla(206, 50%, 10%, .2); - margin: -6px 0 0 !important; - margin-inline-end: -6px !important; - min-width: 14px; - max-width: 28px; - line-height: 10px; - text-align: center; - -moz-stack-sizing: ignore; -} - -.toolbarbutton-badge:-moz-window-inactive { - background-color: rgb(230,230,230); - box-shadow: none; - color: rgb(192,192,192); -} - -toolbar[mode="icons"] > *|* > .toolbarbutton-badge { - margin-inline-end: -10px !important; -} - -/* .......... dropmarker .......... */ - -.toolbarbutton-menubutton-dropmarker { - -moz-appearance: none; - border: none; - background-color: transparent !important; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.png"); - width: auto; - padding: 0 5px; -} - -.toolbarbutton-menubutton-dropmarker[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.png"); -} - -toolbarbutton.tabbable { - -moz-user-focus: normal !important; -} diff --git a/toolkit/themes/osx/global/tree.css b/toolkit/themes/osx/global/tree.css deleted file mode 100644 index 472a51fc9..000000000 --- a/toolkit/themes/osx/global/tree.css +++ /dev/null @@ -1,296 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -tree { - margin: 0px 4px; - color: -moz-DialogText; - background-color: #FFFFFF; - -moz-appearance: listbox; -} - -/* ::::: tree focusring ::::: */ - -.focusring > .tree-stack > .tree-rows > .tree-bodybox { - border: 1px solid transparent; -} - -.focusring:focus > .tree-stack > .tree-rows > .tree-bodybox { - border: 1px solid -moz-mac-focusring; -} - - -/* ::::: tree rows ::::: */ - -treechildren::-moz-tree-row { - border-top: 1px solid transparent; - height: 18px; - background-color: -moz-field; -} - -treechildren:not(.autocomplete-treebody)::-moz-tree-row(multicol, odd) { - background-color: -moz-oddtreerow; -} - -treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected) { - background-color: -moz-mac-secondaryhighlight; -} - -treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected, focus) { - background-color: Highlight; - color: HighlightText; -} - -tree[seltype="cell"] > treechildren::-moz-tree-row, -tree[seltype="text"] > treechildren::-moz-tree-row { - border-top: none; - background-color: transparent; -} - -/* ::::: tree cells ::::: */ - -treechildren::-moz-tree-cell { - padding: 0px 2px 0px 2px; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell-text, -tree[seltype="text"] > treechildren::-moz-tree-cell-text, -treechildren::-moz-tree-cell-text { - color: inherit; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell { - padding: 0px 1px 0px 1px; -} - -tree[seltype="text"] > treechildren::-moz-tree-cell-text { - padding: 0px 1px 1px 1px; -} - -treechildren::-moz-tree-cell-text(selected) { - color: -moz-DialogText; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell(active, selected) { - background-color: -moz-mac-secondaryhighlight; - -} -tree[seltype="cell"] > treechildren::-moz-tree-cell-text(active, selected) { - color: -moz-DialogText; -} - -tree[seltype="text"] > treechildren::-moz-tree-cell-text(active, selected) { - background-color: -moz-mac-secondaryhighlight; - color: -moz-DialogText; -} - -treechildren::-moz-tree-cell-text(selected, focus) { - color: HighlightText; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell(active, selected, focus) { - background-color: Highlight; -} -tree[seltype="cell"] > treechildren::-moz-tree-cell-text(active, selected, focus) { - color: HighlightText; -} - -tree[seltype="text"] > treechildren::-moz-tree-cell-text(active, selected, focus) { - background-color: Highlight; - color: HighlightText; -} - -/* ::::: lines connecting cells ::::: */ - -treechildren::-moz-tree-line { - /* XXX there should be no border on Mac, but trees currently - paint the line black by default, so I'll just leave this - for now. */ - visibility: hidden; - border: 1px dotted grey; -} - - -/* ::::: tree separator ::::: */ - -treechildren::-moz-tree-separator { - border-top: 1px dashed #C7C7C7; - margin: 0 2px; -} - - -/* ::::: drop feedback ::::: */ - -tree[seltype="cell"] > treechildren::-moz-tree-cell(primary, dropOn), -tree[seltype="text"] > treechildren::-moz-tree-cell(primary, dropOn), -treechildren::-moz-tree-cell(primary, dropOn) { - background-color: #A1A1A1 !important; - color: #FFF !important; - background-image: none; -} -tree[seltype="cell"] > treechildren::-moz-tree-cell-text(primary, dropOn), -tree[seltype="text"] > treechildren::-moz-tree-cell-text(primary, dropOn), -treechildren::-moz-tree-cell-text(primary, dropOn) { - color: #FFF !important; -} - -treechildren::-moz-tree-drop-feedback { - background-color: #A1A1A1; - width: 50px; - height: 2px; - margin-inline-start: 5px; -} - -/* ::::: tree progress meter ::::: */ - -treechildren::-moz-tree-progressmeter { - margin: 2px 4px; - border: 2px solid; - -moz-border-top-colors: #AAAAAA #000000; - -moz-border-right-colors: #FFFFFF #000000; - -moz-border-bottom-colors: #FFFFFF #000000; - -moz-border-left-colors: #AAAAAA #000000; -} - -treechildren::-moz-tree-cell-text(progressmeter) { - margin: 2px 4px; - -moz-appearance: progressbar; -} - -/* ::::: tree columns ::::: */ - -treecol, -treecolpicker { - -moz-appearance: treeheadercell; - -moz-box-align: center; - -moz-box-pack: center; - border: 2px solid; - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow; - background-color: -moz-Dialog; - color: -moz-DialogText; - padding: 0px 4px; -} - -.treecol-image { - padding: 0px 1px; -} - -.treecol-text { - margin: 0px !important; -} - -treecol[hideheader="true"] { - -moz-appearance: none; - border: none; - padding: 0; - max-height: 0px; -} - -/* ..... internal box ..... */ - -treecol:hover:active, -treecolpicker:hover:active { - border-top: 2px solid; - border-bottom: 1px solid; - border-inline-start: 2px solid; - border-inline-end: 1px solid; - -moz-border-top-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-right-colors: ThreeDDarkShadow; - -moz-border-bottom-colors: ThreeDDarkShadow; - -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow; - background-color: #666666; -} - -/* ::::: column drag and drop styles ::::: */ - -treecol[dragging="true"] { - -moz-border-top-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow!important; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow !important; - padding: 0px 4px !important; - background-color: ThreeDShadow !important; - color: ThreeDHighlight !important; -} - -treecol[insertafter="true"]:-moz-locale-dir(ltr), -treecol[insertbefore="true"]:-moz-locale-dir(rtl) { - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; -} - -treecol[insertafter="true"]:-moz-locale-dir(rtl), -treecol[insertbefore="true"]:-moz-locale-dir(ltr) { - -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow; -} - -treechildren::-moz-tree-column(insertbefore) { - border-inline-start: 1px solid ThreeDShadow; -} - -treechildren::-moz-tree-column(insertafter) { - border-inline-end: 1px solid ThreeDShadow; -} - -/* ::::: column picker ::::: */ - -.tree-columnpicker-icon { - list-style-image: url("chrome://global/skin/tree/columnpicker.gif"); -} - -/* ::::: twisty ::::: */ - -treechildren::-moz-tree-twisty { - -moz-appearance: treetwisty; - padding-inline-end: 2px; -} - -treechildren::-moz-tree-twisty(open) { - -moz-appearance: treetwistyopen; -} - -treechildren::-moz-tree-twisty(Name, separator) { - -moz-appearance: none; -} - -treechildren::-moz-tree-indentation { - width: 16px; -} - -/* ::::: gridline style ::::: */ - -treechildren.gridlines::-moz-tree-cell { - border-inline-end: 1px solid GrayText; - border-bottom: 1px solid GrayText; -} - -treechildren.gridlines::-moz-tree-row { - border: none; -} - -/* ::::: editable tree ::::: */ - -.tree-input { - -moz-appearance: none; - border-width: 0; - box-shadow: @focusRingShadow@; - margin: 0; - margin-inline-start: -2px; - padding: 2px 1px 1px; -} - -treechildren::-moz-tree-cell(active, selected, focus, editing), -tree[seltype="cell"] > treechildren::-moz-tree-cell(active, selected, focus, editing), -tree[seltype="text"] > treechildren::-moz-tree-cell(active, selected, focus, editing) { - background-color: transparent; - border: none; -} - -treechildren::-moz-tree-cell-text(active, selected, editing) { - opacity: 0; -} diff --git a/toolkit/themes/osx/global/tree/arrow-disclosure.svg b/toolkit/themes/osx/global/tree/arrow-disclosure.svg deleted file mode 100644 index 0fee85807..000000000 --- a/toolkit/themes/osx/global/tree/arrow-disclosure.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - diff --git a/toolkit/themes/osx/global/tree/columnpicker.gif b/toolkit/themes/osx/global/tree/columnpicker.gif deleted file mode 100644 index 167f3789af3f67f7992ddfd9e1d858cf86b95e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZ?wbhEHbRS#eXgg5e6dvCuEok=4FG>%6o>!- diff --git a/toolkit/themes/osx/global/tree/folder.png b/toolkit/themes/osx/global/tree/folder.png deleted file mode 100644 index 8f21ff790a3fec82a2db69d749ebd234fcaa75a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`)Ym%P6qNh3p^r= z85p>QL70(Y)*K0-;3H2L#}JFt$v^)8w`W$B@M)Ry{XDnUyMO&Xj!7=k43{o!`6R)` z)+w0kkWqQx^Zl7$|4+uA4%kp0_P2ihm#94wOT=@2FJ;&7JS6V;!;Y!>OB3&n(tr2< z`!3I$*s^{8?q-98(=TuT50~HTCv>mik=mh#t;g5>k1u*)|LgwFZxWt6s_z!IFv@24{mqZ5>rlC~<&nUl zhF_`d|HJiexeKjhO4`9F%KiPX{=D6@Q+Ui90wx`8J;=t;$Rn_NVrMGDg(+Jv-Lr9V Q2l|%5)78&qol`;+0RB6MX#fBK diff --git a/toolkit/themes/osx/global/tree/folder@2x.png b/toolkit/themes/osx/global/tree/folder@2x.png deleted file mode 100644 index c07acf5ffbb3a4a30fe550fe5d9d3db1770bcfdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0E3x4VELmAt+DX_*BrK5;GE6Yj z-Bs7Eer385laZ>a=k(cSeGJm(+U=<-OK5I+7P0O8{71g7Vgf}ikDqruTh zu61%Du z`bSJ;K#2IROhDux<2`^V0);}U08IF&64WOHA#aoc9z5WR1tk4jVK;EpBmm=GXeCpl zatwbev4wzjDFH@PfDnsZbp|5;znueI_c;*u1V>F72zb7ogpT7supO>cK-x6p83=3f z>A3!GyGjL^;hPW>Q&0|wONs@g0s-Hqz;^u-logjCllo-}Y}W radio, -#viewGroup > toolbarbutton { - -moz-box-orient: vertical; - -moz-box-align: center; - -moz-appearance: toolbarbutton; - font: menu; - text-shadow: @loweredShadow@; - margin: 0; - padding: 0 1px; - height: 22px; -} - -#viewGroup > radio[selected=true], -#viewGroup > toolbarbutton[checked=true] { - color: #FFF !important; - text-shadow: rgba(0, 0, 0, 0.4) 0 1px; -} diff --git a/toolkit/themes/osx/global/wizard.css b/toolkit/themes/osx/global/wizard.css deleted file mode 100644 index 9c5e6200c..000000000 --- a/toolkit/themes/osx/global/wizard.css +++ /dev/null @@ -1,62 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -wizard { - padding: 14px; -} - -#header { - display: inline !important; -} - -.wizard-header { - -moz-appearance: dialog; -} - -.wizard-header-box-1 { - color: #000; -} - -.wizard-header-box-text { - padding: 6px 10px; - font: menu; - font-weight: bold; -} - -.wizard-header-label { - margin-left: 23px; - font-weight: bold; -} - -.wizard-header-box-icon { - margin-top: 3px; - margin-inline-end: 20px; - margin-bottom: 0; - margin-inline-start: 3px; -} - -wizard[branded="true"] .wizard-header-icon { - list-style-image: url("chrome://branding/content/icon48.png"); -} - -.wizard-page-box { - padding: 15px 23px; - -moz-appearance: dialog; -} - -.wizard-buttons-separator { - margin: 0 !important; - border-bottom: 1px solid #fff !important; -} - -.wizard-buttons-btm { - padding: 3px 6px 6px; -} - -.wizard-button { - font: menu !important; -} - diff --git a/toolkit/themes/osx/mochitests/.eslintrc.js b/toolkit/themes/osx/mochitests/.eslintrc.js deleted file mode 100644 index 2c669d844..000000000 --- a/toolkit/themes/osx/mochitests/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { - "extends": [ - "../../../../testing/mochitest/chrome.eslintrc.js" - ] -}; diff --git a/toolkit/themes/osx/mochitests/chrome.ini b/toolkit/themes/osx/mochitests/chrome.ini deleted file mode 100644 index b7c425bc7..000000000 --- a/toolkit/themes/osx/mochitests/chrome.ini +++ /dev/null @@ -1,3 +0,0 @@ -[DEFAULT] - -[test_bug510426.xul] diff --git a/toolkit/themes/osx/mochitests/test_bug510426.xul b/toolkit/themes/osx/mochitests/test_bug510426.xul deleted file mode 100644 index 4294ce42d..000000000 --- a/toolkit/themes/osx/mochitests/test_bug510426.xul +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - diff --git a/toolkit/themes/osx/moz.build b/toolkit/themes/osx/moz.build deleted file mode 100644 index fab1daff2..000000000 --- a/toolkit/themes/osx/moz.build +++ /dev/null @@ -1,8 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -DIRS += ['global', 'mozapps'] - -MOCHITEST_CHROME_MANIFESTS += ['mochitests/chrome.ini'] diff --git a/toolkit/themes/osx/mozapps/downloads/buttons.png b/toolkit/themes/osx/mozapps/downloads/buttons.png deleted file mode 100644 index 04da26a25248313c15a6088cdb192bf8fab01301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2288 zcmV!$0vZ&VzsXzMWrN-MhjA$s2LqUX{1GE8k5?X zR{YV18rzg2ZT*xKtql^ZI5WzFf-TB`d`4S3F{$#G=`d@*oI}nW&bjwu(I%5(4U}9aQHt)F9hC>;z{UZ>>W0S zZG+YV-*18+i6R;r1bu{=e}pzdzX87Q|DG2|0APOvK1g<%ilcXM-dLu7`jx1N-*vJI`&qcI_%B+sc(IKjt>V5Y|0~;7u$H zW4U`(RaF^bVPQ^`N4p`>(b4Hwu3Y&#JUskeT>h6mb{p6V)`Ksi@aK3qyabqe6%`ey zySlo17A#ocbh%vT9S+CgzP>(=zX|-O48I!1!yJF$z=6c5sHh0MrxM@mOH53R1HO92 ziWSHE`}_H#{WtLW+<}FBI>}B@UD0@weqhU3174Bw+zF~H8c%Wu_zxI9N5*p}7+!8X zNgwcUa?mgGoI}rbh;^y)?(YiqAzSP1+qb*Ly3}|XKV)m|?Ck6n>OE592l3p29;x@z z__V31sVPP8Cu2>lP;9B<_Bbe*^Uw2X11XP_4TLy{QQ#0hUw&9ga;2E{Hxg_-n41c+w?3j=SGeknMF2q z$Z4|S-TTZI@zSMB57B}>eE6`-Znx)>4b!QTY?+yvpXe5`4-E78$&7|N)~#FjH*wmK z4KJt^rp(vC-eGfi6pELi?yVIK4a>>NsS&3Q+2EW@m@*#&-^=j#qgVr_cG&Qp>4k-b z_2RT48`|(aUq8@yfbSF!GCD<{ws??SluuLODf~#Vh^G;0lJGN8q*%m%2K=|GP=dCy znI@qG#WO!?LV-XOF(#n|#WQUh{NpGVn1m8v(hOI|LP9VXqzUF4Ee3O;&_F4e`xmsv zVlYSN(q!nP%uJ(w4O(Fs%-xIPZM(+Wi$k@`<)U-)48X{(b z3O{Pps4*KiZp^xT`SL2oXo#3#72em^cl4SyYnBuj7cW+fMzH9>{YDdR^5n@;iqY^D z>JJ&=LqbBr6{8_Kd_XfJyk-0dfe+Yqz?PPl z%JlT~y@>5^8SnvZFCsK|rKP2P1a8q`zy}^Sz<TG}|oQPlLhIAv;u>+>v>_c7^po4^Oo%Lkc<4|w>1hYxu8!0*oo zyd|(dn}3h9@W89Ox;o3x&(ELPV%ak`13r+-b~B2Vyw06F_YzKEzQd)mXKV(1Ae(Ij z7iqq`U(m2wQmd>eZZCvu2H9_afP|HU%GW$~zE(z<306 zf0{mh`e=5~$)2?-_`u8Z4&-n+=9H9_qz48D`m%d3vuABuJ}`g&e1GBt-QC@VbR7^7 z5Ps~~vGrE@02=)u@qvzxj-BpUJt*jj6DLlrw8{sjO`A4`_y7XHKQsK){QUeBOMGDY z^5p?Xj~;!yt*xykB_(BpJ7#EauS-fw+GT|gBqt}2J9X;RYuBz_yPlYs_$Jx#uB%R` z^L;CPAR;2dAK^o0Yinye+ET#q&8t_h{!GOOhU5n*_Q&zvICt*c61v73ScM)fQ2aWr z%nwlP-_X#|0!Q3Gy<-ie;a$awU#FG%0gC<6h95R>-uw++V+}l)ot<5#_;p&HA3y+C z6c-n_N)rRw%<=NBTw6@@12=BmsM)b&$20N^wr$%s@A~!YF0=dqhQB^HH#bVg=j7x#urYjR zmLCAVDJv^$2#*G}4F$eY<^$exY@e5x_aS=QdGh4RruhLAG0qRbI~u0rx@)ui z0G>TSs=GGJ57gDwy-upTwwxa@5!3vDiJ0aGOvHMAKqHp(0~)cMAJE9~^8@mxG2Hxs z0lxok@yh=TSrqO6g)EBp|3Vf;%?E}d?V8x$swnxuFhtJ>EQlc=upowfz=90&0dKa= zk)e7R-dFR+GdwkDhYxu8z^|462`~VMhV18mi%}8)0000< KMNUMnLSTZewr+U< diff --git a/toolkit/themes/osx/mozapps/downloads/downloadIcon.png b/toolkit/themes/osx/mozapps/downloads/downloadIcon.png deleted file mode 100644 index 42dc4943d7a5375bd4452c435a28993745a2d5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1301 zcmV+w1?u{VP)%;?B~W(ZKc+w%ujH$6)dvbv)73BR0S%xp~~Pg znKMuA835bP>X`DxMMG5*D!!{guk$K;7rsH4vjZK@HeR%*J(`h+yt*^`MU%zE?g}8O zm90~is+P<9PUFVnbu`Y_BX2ARM@CGWie}^?FJ;uFnq^Z*X7i2!^iBF6eU1L9WyTD% zs}sjYk05<870ClE*gpNHq8WL}OBu>iM@mb| zXh+UeHj=E`HB$A8`o}AP zxFF8mXm5aaj6wW82_yqz#QhxmTrr5a`i@Tkzpvjyz>j_&1>W+5;I==)hlHrGmE%C} z0k>CxnA})gSU3;)umo2em$6qLi`|Ui!2s0ES0mzs2zUjEEfg=;+H0U1S0Lth5xy9| zwClsoW1R^6^=*U?3sGi2g~+@}@4o@bN$KN{hd%=IP=$A`p$PiTALjASogdC+sUu`0 z5aP)w z3ZQOQ_sCkL$Z=&uI2FVzWSoQegM*lOaR~BKhO#R?$6d!j-HHaqC9eQXN8h$9r0i2h9YAFu}BN2)aki8f7e`@iX#}mok*yv-bi`tL9`}RovXc;)Bc4pGHG= zQ3{zw_DtNG_Gm^P^1jqJBTbvSK-r}1RWvHElW0wQG<)@Ox?TMTSkOdN=g#IH00000 LNkvXXu0mjfJyK@= diff --git a/toolkit/themes/osx/mozapps/downloads/downloads.css b/toolkit/themes/osx/mozapps/downloads/downloads.css deleted file mode 100644 index 3ba246c1f..000000000 --- a/toolkit/themes/osx/mozapps/downloads/downloads.css +++ /dev/null @@ -1,123 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../../global/shared.inc - -#downloadView { - -moz-appearance: none; - margin: 0; - padding: 0; - border-width: 0; -} - -/* Download View Items */ -richlistitem[type="download"] { - padding: 5px; - min-height: 44px !important; - border: 1px solid transparent; -} - -richlistitem[type="download"]:not([selected="true"]):nth-child(odd) { - background-color: -moz-oddtreerow; -} - -richlistitem[type="download"] .dateTime, -richlistitem[type="download"] .status { - font-size: smaller; - color: #555; -} - -richlistitem[selected="true"][type="download"] { - outline: none; -} - -richlistbox:focus > richlistitem[selected="true"][type="download"] .dateTime, -richlistbox:focus > richlistitem[selected="true"][type="download"] .status { - color: highlighttext; -} - - -richlistitem[type="download"] button { - -moz-appearance: none; - min-height: 16px; - min-width: 16px; - max-height: 16px; - max-width: 16px; - padding: 0; - margin: 0 1px 0 1px; -} - -/** - * Images for buttons in the interface - */ -richlistitem[type="download"] button { - list-style-image: url(chrome://mozapps/skin/downloads/buttons.png); -} -.cancel { - -moz-image-region: rect(0px, 16px, 16px, 0px); -} -.cancel:hover { - -moz-image-region: rect(0px, 32px, 16px, 16px); -} -.cancel:hover:active { - -moz-image-region: rect(0px, 48px, 16px, 32px); -} - -.pause { - -moz-image-region: rect(48px, 16px, 64px, 0px); -} -.pause:hover { - -moz-image-region: rect(48px, 32px, 64px, 16px); -} -.pause:not([disabled="true"]):hover:active { - -moz-image-region: rect(48px, 48px, 64px, 32px); -} -.pause[disabled="true"] { - -moz-image-region: rect(48px, 16px, 64px, 0px); -} - -.resume { - -moz-image-region: rect(16px, 16px, 32px, 0px); -} -.resume:hover { - -moz-image-region: rect(16px, 32px, 32px, 16px); -} -.resume:hover:active { - -moz-image-region: rect(16px, 48px, 32px, 32px); -} - -.retry { - -moz-image-region: rect(32px, 16px, 48px, 0px); -} -.retry:hover { - -moz-image-region: rect(32px, 32px, 48px, 16px); -} -.retry:hover:active { - -moz-image-region: rect(32px, 48px, 48px, 32px); -} - -.blockedIcon { - list-style-image: url(chrome://global/skin/icons/Error.png); -} - -/* prevent flickering when changing states */ -.downloadTypeIcon { - height: 32px; - width: 32px; - padding-inline-end: 2px; -} - -#search { - -moz-box-pack: end; - padding-inline-end: 4px; - -moz-appearance: statusbar; -} - -#clearListButton { - -moz-appearance: toolbarbutton; - min-height: 18px; - min-width: 0; - margin: 0 6px; - text-shadow: @loweredShadow@; -} diff --git a/toolkit/themes/osx/mozapps/downloads/unknownContentType.css b/toolkit/themes/osx/mozapps/downloads/unknownContentType.css deleted file mode 100644 index 28d01b57a..000000000 --- a/toolkit/themes/osx/mozapps/downloads/unknownContentType.css +++ /dev/null @@ -1,30 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#unknownContentType { - font: menu; -} - -description { - font-weight: bold; -} - -.plain { - background-color: transparent; - background-image: none; - border: none; -} - -#contentTypeImage { - margin-right: 3px; - width: 16px; -} - -#container > .small-indent { - margin-left: 0px; -} - -.small-indent label { - margin-left: 0px; -} diff --git a/toolkit/themes/osx/mozapps/extensions/about.css b/toolkit/themes/osx/mozapps/extensions/about.css deleted file mode 100644 index cfabd47db..000000000 --- a/toolkit/themes/osx/mozapps/extensions/about.css +++ /dev/null @@ -1,78 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#genericAbout { - padding: 0px; - min-height: 200px; - max-height: 400px; - width: 30em; -} - -#clientBox { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -.basic-info { - padding: 10px; -} - -#extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png"); - max-width: 64px; - max-height: 64px; - -moz-margin-end: 6px; -} - -#genericAbout[addontype="theme"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric.png"); -} - -#genericAbout[addontype="locale"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/localeGeneric.png"); -} - -#genericAbout[addontype="plugin"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric.png"); -} - -#genericAbout[addontype="dictionary"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png"); -} - -#extensionName { - font-size: 200%; - font-weight: bolder; -} - -#extensionVersion { - font-weight: bold; -} - -#extensionDescription { - margin-top: 4px; -} - -#groove { - margin-top: 8px; -} - -#extensionDetailsBox { - overflow: auto; - min-height: 100px; -} - -.boxIndent { - -moz-margin-start: 18px; -} - -#extensionCreator, .contributor { - margin: 0px; -} - -.sectionTitle { - padding: 2px 0px 3px 0px; - margin-top: 3px; - font-weight: bold; -} diff --git a/toolkit/themes/osx/mozapps/extensions/alerticon-error.png b/toolkit/themes/osx/mozapps/extensions/alerticon-error.png deleted file mode 100644 index 8740e4911a857dd0d2e479529594fa4bb17adf11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3402 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 diff --git a/toolkit/themes/osx/mozapps/extensions/alerticon-info-negative.png b/toolkit/themes/osx/mozapps/extensions/alerticon-info-negative.png deleted file mode 100644 index 2c5f628ab6001ba2f20a19e20f5d6c556b8f0169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1564 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!3HGX7W?Z1DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y`Fl?$S+WE4mMTrO-#(89#j!qr6ysy79TzX|Hq2RcR{6tPGV4HE*U9uO0r zY=Inj!cWZuruHIWvR;}z)qsJ4X@aMVV@SoVmLPABkVFx?|G(|rWo184Tx6!T^MsjX zhobmK~WgTW#%}>vOB~ z|I5Bn)Qa0NyLjLK-}{Qsxu2hB$!A@!;i0*=-+=jc>FwCtT|4`9U%wL*x%br6z|Ebz zyK8pW=~c6sL`xq#CkF~AZsOf;%;*$5D^2EEm0-bL{u!?iT5r$)maMhs-aM9=0z;3M zooZ9nySlv91rMH#$XWUOR&TUp%S$;Hj`o&S;o;Y=*z{U?6wF z~^62-<^o#217ngPKXZiH3c~xT3vL6SsjgBS!JNrj5)V$wN?USjG z28ZiX{W!nauAUxgk6lV<*|TkynH@G*|C&|RAv9j@g%!i<_{XU`bAEM%ta~tv^WK|# z8qz0Iz8?D(l~efeZOlE!^qc@K#?T&{6NNDo-q*j;USG3y|F(ao2Dx`jFQ&N&tZ-_b zd2?s?#D~Z0F5L;aoj7Y>+*$>O%HKx0JLmB7^7c-g_pZ1iR^$?CUwu#DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y`Flt zp`oFRo28MfqqCE?$S+WE4mMTrO-#(89#j!qr6ysy79TzX|Hq2RcR{6tPGV4HE*U9uO0r zY=Inj!cWZuruHIWvi@zbYcT@@<2p|l$B>F!OD660W_A=fnx6Ju&&~gclEM<<5T34S zWnp1mnYmMzbl!;M`p3SlsWnt#YVU%jp;6q@+^e@V32?BOsHNH0RM)XwRC;wtu6p<9 z+27O3Dy!1x{WDzlL|;VsY2*&QsB2I83mQe^SNFtSUHmKVztBA9nCU&|UK;wIx$~>H zS%-7}{)2)m1yus(@XTe%Qr8M&y}`DI!s*#bcZ)r)7iRe>U3z?x@mi#Y{^n_30n;KB4lO^oV^gh}NW$%{EV5N?Ma;Zei*{F9 zaFl)e@uu>1c;PaZ(#LFijPL6X6gb|i4w~$3dEUvKWA(y7){8c$nUbBf8^jahLv+fY zWE?K@Jzv6BAdwk(PjI24@8^uJ6>FcZ;hsCMp|rJbi(t?e+uPe@n|CnExcw43+-5$5 zZ`oXJ;d6zlw<}&p{HncP%B!OGJ8A!c`J8raLM*J=E8>sk`$XC@F5-H9P%-CMe*Tlt a21bU@ajS~uCcW$cm1drDSr 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 RA!q;q002ovPDHLkV1jy~C2s%# diff --git a/toolkit/themes/osx/mozapps/extensions/category-dictionaries.png b/toolkit/themes/osx/mozapps/extensions/category-dictionaries.png deleted file mode 100644 index 54ae4f93fc5c8179b44d062f61cae2bee4a652dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1769 zcmV!Ck9eR~5(M-xzbQz4u9S z^3ulEXb`I)L?QUr3sHok)`F--Y<D!Z zFf$~Y8SR}^IQQA%MmPE0Af4L|wj_aFH*5X@BGfWhL}%D?mc@pqg)bJzP>tyaA3Y5sFh zKKUd^u08&7GX`M8j4^X+d%K>y=R;qvM~;2>^qqHc=FA!X8{;_g$iwH^y7BGX{&*!oG2$thsdl2kiZRo0GSm;OtvYuv~4iS{+8EA~UQM5|E&`PV|X3 zZs@%ez0t-sx!G{GPqaJU{w?Fe&w`;40K{S_j4g;1p+GV=t%KXUfx=AXAYZTB>g3kI;Z(&819#XOmh?zcVpTfk&U({0v{<7DFK=#@4BB42z0@olWDh zXRjfNS}ICo>K!l)G3U%kvMEH5K){qDNxT}EQ{CuOqa~O-r4~YvDfTvv_4X;w-hD3@ zFYho;6R!|hF))mo%8VJf!x$nXDF&M<*|f&8tmq2<{M;^YI=14(p(VxP#=5h!9(kc0 z<8xp68f6&JwBe--4>Pq+9SS}<5(hX3S%xr)o?_~WnIMfG$;B%>yz|4KU}trbtJl}8 zH=P?(=SnR3%(<_FiD-@ORi#S|L*XBri77e;#*8x~pk>lSq#!eyB1w{UYus_?M>+Gp z5Ad;j@8{Wmm@B(Cczidw=ZohkZuDv7=|4Tn6Tdl+AyQ&d3n|`^Gh<*faEFvg2^R<> zGC8^$h(6)KC-3_LSM3OQ-}fa}%PrbC^1>63@z;lbL@m%$^bk`|q9-YgnaYd=t&1rI z5#K!Oaz%$Rd# zBv}L$1CxV^X$o$P6I1K76gSolGI-**=ec_MDK7l%$5Ukb{{qSDA4$3ljy= zLWH12kV<+tcG^TOMsa8X%0v-_8yN}i^d4ja7EB>hf#IZN%v5GlLMb8=l%$dfCj@fQ zn=msnp+#UA6h{(c?+mpvMNo^=yWu7>o!%$hIKX*5OQ{-0OQCdnPs|+&#wqBT^n?&B zmW5$qNU&*1NVMoIYDE~Sqo4%WXjH9j+a72;BIUt zAwfjq4hkbfNJ0`R=zYR4qKTfd0tyg-*yr42z^Y|#H$+CzGjU6LBoTpt);jB+Opzdn zOd_H8q)FgTD3B$!7={r_y2KQ@4Xgm;Rh63xa40fvsb-{jg#dE{3gEcI(v4|qU{Fh? zWdp=e9LYe?y9g!AVSor~fylfCI0TG9vafPe0S-sXQ+8=gJKa09tn5w3m7O(<>P*p* zU^!G$Nik>Y!Qce}Jpv4BskCTBj;!i{yk3ix14n>eps~-mX$!c$y5CyekGR>us{|Ne zfB*^1c!l^EH>K2i=3dXd20RC>*=OA3zzV4RZ*^b;B>Vmel%Pwalwo+K00000 LNkvXXu0mjfD_$)g diff --git a/toolkit/themes/osx/mozapps/extensions/category-discover.png b/toolkit/themes/osx/mozapps/extensions/category-discover.png deleted file mode 100644 index a6f5b49b37f13cf890f82309ea9aff678916ec71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324 zcmV+{1=IS8P)!-zPFNiH}Zhs=KPY&iT$c-BmZZJDWN7oS*c=C-(4s-h~~xcn!JU$nz!=Bu;Gaw2{OE@#UU&j{A`ut>Hxs6gf)*o$0PbAe z$lT#!AEHk$Jildp$5_$YGmD!*2z+++3Rj=J&-B5qcwL6T%?&M_mFvoLHxBUb@#6^~ z)VOcJtySh)tGxf>UY@?*;P)R^Xx}gX7W~!4 zoqTX=A9MM+`S~_SPCiAb)n4DQ1=}Yk-kE4FaQD|M+wF*QH`%;)c&Zmh3>+tfs}Ifvfm#_wxP zPc-P11JnYXSy*80d*$0=34r6*XE?KefyL##76j5W4l54?X)m#DaysDb2Y!4cflzCl znw;Go%GGbUwYZiiO$2ILGs8JnpJwS&1mM{06xVLvPwcGH)xki`C{}MW(R`Uu8+m1r zz>ozKGtCQQ)6FzkO_Zd;aLm%gnDf$1i6+A+fW6xXj5M}0wqu5=x%u3POHk%%hm6Nq_#=k5dS6*B|ZwDHh1 zW~QKu=KCtbn!$rvXG}!bC!pepSjTH~!%PWon0EcuT%}tk)YmtV7f

*?ByP_X8H9~M72*D(-h7sq*dTTC&Wnw10-dj4wOR#LI?ra5@RHmG0Scp zuPaL|6R13v9x`HxjO@P{1jQ|VNjuni>8=qlqarm1)GHeXLuh~gu|(O9 zT_6=q4N*s{*H3c*%@8H616lImovlDxF+J}k0xT~+psKuYSKOn(4q!Jh2WvQ<-!Pr9f8D#4rHv<-W<89*UNukaxL zg$3WB0^trQFsA~Y_!1WU=QpLNPV@=Gu;6Dbf$%EEP=hkeDOiOa5Ef$+77Rmr;>1H$ z`~wTtL+Hdf3};b;oH@BgcppvN54rWR-)~mc|H;~|uwVqrsNpOO>VH~f8`CT}USr{g|L$DX+g%eV$5cp0sb9Vp3M3;S2K`sl_MEMo$47AWI#cpJlllH5d?xAee~%{O2f z=OJf-GA_g16#5c!=fnJlRvxKefn_wI1TT8_cWg?`Oody2=)S|RkHCUe&|LCP3%=8e zLvJ)-Ic{PMd(aIbnP>LmjCWa%hI&8RwgpzAi8_?1j;Vy+SJd<2n_XzaO3b1Tm8ko! zm1v?%-3NCHL$Cx*^gsn_zGDd*kd`*y5>}uEORyIzuqUyjb%7 diff --git a/toolkit/themes/osx/mozapps/extensions/category-plugins.png b/toolkit/themes/osx/mozapps/extensions/category-plugins.png deleted file mode 100644 index 5c4d8bf471825d8960b8d35f6060ba620b7b0adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmV-+1Bv{JP))k|ptNP7Apva?4~R5Xpk!f6~jG>VLjA-M7!GsYZiSj#!Cyin(} zfx5bP7X_R-%8)wabIeLAo<>Q@6EXBy%sj%eV^d;e0!NOF%WfZ)gXli8vWDeM7=+0* zAO`xeXU}cy-hIm{o{(@uy8%AA-r{j_UA`EY(p@|z=DKzR{Ll3kkBYjc-2gY7-r|vw z9q^$GCUh4!8n1dcAU}h!Uf9M~(_4Jku6BxSQ#A~p3~UgB+2?wTM?_qqNU*Bm(ZEI_ zgoljY;yZV?Q6xmw@Ms`F2;&K-w|IE?Wr~EU8g32v3!4Qak5|3L!@@36#Heccdor*^ zi00X@x43E`TGjCP_6DN(VbNP$H4x?P4R8-^5<*R;ey?A(-w{_0gsK`IH{m)VNZ297 z3W+)qtF9TOY8c#}glkODWuUNCCj!+qe-L+j6ssl->YmUO!_VU6JE<>}40#l&fdBvi M07*qoM6N<$g7*)s5C8xG diff --git a/toolkit/themes/osx/mozapps/extensions/category-recent.png b/toolkit/themes/osx/mozapps/extensions/category-recent.png deleted file mode 100644 index 7ecfc7d4c86e1b5569271ae2a90d4465e64bcfe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642 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 diff --git a/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric-16.png b/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric-16.png deleted file mode 100644 index 4ad1a1a8251b5b93eea10fa88e74d76916134b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmVWn+{w*_4=+B#Og*27J-)_fG)V#8|$wc%H+T4c*?`1n=<< z)C_ZuCJ8T_M4ckr&wrf)+}73>CqPuga8%V1L28QZC|jNw6>&x(N+H5jYns9r0IsU4 zQ$Q4A$`lStSJ0j+D1rx#)B>9?4p^9<<;;Bh)jC|K(|HYuDaSFdQ z7&{Nv>0Z0RxrH~_-+9X5yKl%@i8Q0kNsHN@cXxWOE> z3P;X{dBeLfnb(t5TZ6%13?z{m)$ylsKH$rePsQ>@~ diff --git a/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric.png b/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric.png deleted file mode 100644 index 54ae4f93fc5c8179b44d062f61cae2bee4a652dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1769 zcmV!Ck9eR~5(M-xzbQz4u9S z^3ulEXb`I)L?QUr3sHok)`F--Y<D!Z zFf$~Y8SR}^IQQA%MmPE0Af4L|wj_aFH*5X@BGfWhL}%D?mc@pqg)bJzP>tyaA3Y5sFh zKKUd^u08&7GX`M8j4^X+d%K>y=R;qvM~;2>^qqHc=FA!X8{;_g$iwH^y7BGX{&*!oG2$thsdl2kiZRo0GSm;OtvYuv~4iS{+8EA~UQM5|E&`PV|X3 zZs@%ez0t-sx!G{GPqaJU{w?Fe&w`;40K{S_j4g;1p+GV=t%KXUfx=AXAYZTB>g3kI;Z(&819#XOmh?zcVpTfk&U({0v{<7DFK=#@4BB42z0@olWDh zXRjfNS}ICo>K!l)G3U%kvMEH5K){qDNxT}EQ{CuOqa~O-r4~YvDfTvv_4X;w-hD3@ zFYho;6R!|hF))mo%8VJf!x$nXDF&M<*|f&8tmq2<{M;^YI=14(p(VxP#=5h!9(kc0 z<8xp68f6&JwBe--4>Pq+9SS}<5(hX3S%xr)o?_~WnIMfG$;B%>yz|4KU}trbtJl}8 zH=P?(=SnR3%(<_FiD-@ORi#S|L*XBri77e;#*8x~pk>lSq#!eyB1w{UYus_?M>+Gp z5Ad;j@8{Wmm@B(Cczidw=ZohkZuDv7=|4Tn6Tdl+AyQ&d3n|`^Gh<*faEFvg2^R<> zGC8^$h(6)KC-3_LSM3OQ-}fa}%PrbC^1>63@z;lbL@m%$^bk`|q9-YgnaYd=t&1rI z5#K!Oaz%$Rd# zBv}L$1CxV^X$o$P6I1K76gSolGI-**=ec_MDK7l%$5Ukb{{qSDA4$3ljy= zLWH12kV<+tcG^TOMsa8X%0v-_8yN}i^d4ja7EB>hf#IZN%v5GlLMb8=l%$dfCj@fQ zn=msnp+#UA6h{(c?+mpvMNo^=yWu7>o!%$hIKX*5OQ{-0OQCdnPs|+&#wqBT^n?&B zmW5$qNU&*1NVMoIYDE~Sqo4%WXjH9j+a72;BIUt zAwfjq4hkbfNJ0`R=zYR4qKTfd0tyg-*yr42z^Y|#H$+CzGjU6LBoTpt);jB+Opzdn zOd_H8q)FgTD3B$!7={r_y2KQ@4Xgm;Rh63xa40fvsb-{jg#dE{3gEcI(v4|qU{Fh? zWdp=e9LYe?y9g!AVSor~fylfCI0TG9vafPe0S-sXQ+8=gJKa09tn5w3m7O(<>P*p* zU^!G$Nik>Y!Qce}Jpv4BskCTBj;!i{yk3ix14n>eps~-mX$!c$y5CyekGR>us{|Ne zfB*^1c!l^EH>K2i=3dXd20RC>*=OA3zzV4RZ*^b;B>Vmel%Pwalwo+K00000 LNkvXXu0mjfD_$)g diff --git a/toolkit/themes/osx/mozapps/extensions/discover-logo.png b/toolkit/themes/osx/mozapps/extensions/discover-logo.png deleted file mode 100644 index cd50735a8943c0b63d42b33064c9411fe2900d5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12007 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 diff --git a/toolkit/themes/osx/mozapps/extensions/extensionGeneric-16.png b/toolkit/themes/osx/mozapps/extensions/extensionGeneric-16.png deleted file mode 100644 index fc6c8a258357de80221a574049b4d76d2567c74f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)J|P2`b9RP5OWN%HABOACC;y-Eyb??!i-XjG)T0}~m9;he|Jv8n zz-`6$7i0iS>^kpoAk7)P#A$WNCWrqi$9@0DANKqo zbI|>N*d8Z1_E=%|-*1xRNz2LF{{yBu9|6S>*aaSQEdPT9Lsq-|58h>u6Pry?|Ie+$ zZp$Ib>cJ()rU!EYpYt@c|Fx&`{%0Hv{~x%+_P^62!~Z7zYG4|~hhdNy$g3cmL7HJ< zAYk01^51`}H5fZA(Esl@!Rc_@gw|RR4dTP(KftQHUs#L+g0xxb}9ddVao|xi$H-2qLIZx>ae8)E>0O%b53biUm)!d s3Lqe@3i2a}hVuQP^5!7*AdN5#0G@%Nl7(9`A^-pY07*qoM6N<$f+8agumAu6 diff --git a/toolkit/themes/osx/mozapps/extensions/extensionGeneric.png b/toolkit/themes/osx/mozapps/extensions/extensionGeneric.png deleted file mode 100644 index 6a76774c7bf6059748b511207414b34515b7c6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1302 zcmV+x1?l>UP)atVpz%s>@>I`XezltQ?tu8l#9XUz=C)| z0p((t0g(*pFj*5T

%^HO}<8nXDLUCj0XAJZsBkT~=a`6EpuAhI0=8-}}7JjR64r zKeeEbmc7lqyz^Pvrs{y9_K6*|DS0dRq@oW0hbSDTJzP8qf`@VQ2Gmuq2C>3l4xMcTt^D{CeSs z6L9g)Dd_ys04?LyaB}Pr7;YAT{zg7jT;C75ms21}=W$JN0IyuOIPG-8pY7k(&1qgb zoCya8k|9tl8xb7fNez?u=JB6sdQ|YiuofC`mCiCR{3-+XUP=N*LkPI5S@k1HLU|5* z%<}+KrnMxDRvHh^I{BOZ+aRjauNTde+%g#dNC3=w(Xg(r=<4n%bM24{GP>g-KqpfQ zR)%=zju`f`R~k1!#<`b3)w&r{o8#d1wnWIilnSNBtSR&SFLyxJKq72AyB0Rq`a?vu zH-sIL!|Eyz2q}LY0uQ@^Ux717)4AhLN+zEd0Gb!P)2D{!vG?apIJ0@q)g;(6r~vhq z7*GvFfwF%MZ2vR}w)Q>+FLe7r{KrdS7zLzf#w zwoAe5T@lO+fWj`M`T7r~5Yf2^e2T3AV3TpBI>)e!%zvXh7ur0$lb;QM?bY*Xt#dCn zn7gS>aT7jyd>@q>J)?xP$2{hO3?f=wA-K*FR_P@Wa$EvoZ59ADSg5ymeSZSlu)}G( z(*f&z2R)-~x98-Mt*)@VMDmm4PWCD)+I=_IwY*FOvV9KI065i*&7=CM-hT9JEu^<9 zZf$9ZIGNX?thMgi1lFrvNb1$7!mWdposP>TtzhWWjsJ>;;=gotJ|D zVevgQ3$@vZXr9wZ6*}9)+fCU%i2yR&08O!zG|z?3_I2$%EGrcKjsQ}d0JO=}j}!@B zY6Re0BKiXXmf8e}(}&zXGMqa-Qin2NA5OJhJqeKgS>l4sO#mG{tf&zGjR0Xb0YZ!9 zgS1AOPfqiEeU)EdaN!e~$>+irWNucVK>{u+u3$zL$Wc|OhA9ACAaiJkqcv(jZZe8` z(=xG{p3ziWs5xnE3lIL~;@{lVT&Z&^+v}O@aAReS7(6vI`T%aP&bUBU25CKv0b1EN zw8`Ky;YiPDq&}?FDBJ12P3o|K=(rCNd`tpC^%7WpT4H+7>MXD(n&;NqD|I+(GFaz- zQK@0JPhi4L`d5hWQP|hC+&8xtl?P^lEzvSzd2;IQzQvL|c#m1AXHXuf#gy%+aJ+LJ zg8gEGuor+f8OyK-)tcICvaRpjc5x*XcDn&+jj~L*RW%X%imdCg%iMafYsTvE86 zP=gdAJElvG=D8n^R6dp+#CHNMwP*`#qEaIxYvyz{cz_X;*TVqtlnR&ExX)>aqp+Dp z^PEp$TB`tCSqIhm%=gXm){3ylaMuws{s91MS70r~cFO7B|4km;KZsJ~yoFSdT>t<8 M07*qoM6N<$f=p6r?EnA( diff --git a/toolkit/themes/osx/mozapps/extensions/extensions.css b/toolkit/themes/osx/mozapps/extensions/extensions.css deleted file mode 100644 index 474cb12d1..000000000 --- a/toolkit/themes/osx/mozapps/extensions/extensions.css +++ /dev/null @@ -1,1206 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@import url("chrome://global/skin/inContentUI.css"); - -%include ../../global/shared.inc - -@namespace html url("http://www.w3.org/1999/xhtml"); - - -/*** global warnings ***/ - -.global-warning-container { - overflow-x: hidden; -} - -.global-warning { - -moz-box-align: center; - padding: 0 8px; - color: #916D15; - font-weight: bold; -} - -.global-warning, -.global-warning .button-link { - text-shadow: @loweredShadow@; -} - -#addons-page[warning] .global-warning-container { - background-color: rgba(255, 255, 0, 0.1); - background-image: url("chrome://mozapps/skin/extensions/stripes-warning.png"); - background-repeat: repeat-x; -} - -#detail-view .global-warning { - padding: 4px 12px; - min-height: 31px; - border-bottom: 1px solid rgba(50, 65, 92, 0.4); -} - -@media (max-width: 600px) { - .global-warning-text { - display: none; - } - - .global-warning .warning-icon { - background-color: rgba(255, 255, 255, 0.7); - box-shadow: 0px 0px 2px 4px rgba(255, 255, 255, 0.7); - border-radius: 10px; - } -} - -/*** global informations ***/ -#addons-page .global-info-container { - background-color: #e3e6eb; - border-top-right-radius: 5px; - border-top-left-radius: 5px; -} - -/* Plugins aren't yet disabled by safemode (bug 342333), - so don't show that warning when viewing plugins. */ -#addons-page[warning="safemode"] .view-pane[type="plugin"] .global-warning-container, -#addons-page[warning="safemode"] #detail-view[loading="true"] .global-warning-container { - background-color: inherit; - background-image: none; -} - - -/*** notification icons ***/ - -.warning-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-warning.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - -.error-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-error.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - -.pending-icon, -.info-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-info-positive.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - -.addon-view[pending="disable"] .pending-icon, -.addon-view[pending="uninstall"] .pending-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-info-negative.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - - -/*** view alert boxes ***/ - -.alert-container { - -moz-box-align: center; -} - -.alert-spacer-before { - -moz-box-flex: 1; -} - -.alert-spacer-after { - -moz-box-flex: 3; -} - -.alert { - -moz-box-align: center; - padding: 10px; - color: #373D48; - font-size: 12px; - border: 1px solid #A8B8D1; - border-radius: 8px; - background-image: linear-gradient(rgba(255, 255, 255, 0.7), rgba(236, 241, 247, 0.7)); - background-clip: padding-box; - box-shadow: 0 -3px 0 rgba(58, 78, 103, 0.05) inset, - 0 3px 0 rgba(175, 195, 220, 0.3); -} - -.alert .alert-title { - font-weight: bold; - font-size: 200%; - margin-bottom: 15px; -} - -.alert button { - margin: 1em 2em; -} - -.loading { - list-style-image: url("chrome://global/skin/icons/loading_16.png"); - padding-left: 20px; - padding-right: 20px; -} - - - -/*** category selector ***/ - -#categories { - -moz-appearance: none; - border: none; - -moz-margin-end: -1px; - background-color: transparent; - position: relative; - margin-top: 31px; -} - -.category { - -moz-appearance: none; - color: #252F3B; - border-width: 1px; - border-style: solid; - border-color: transparent; - padding: 10px 4px; - -moz-box-align: center; - overflow: hidden; - min-height: 0; -} - -.category:-moz-locale-dir(ltr) { - border-top-left-radius: 5px; - border-bottom-left-radius: 5px; -} - -.category:-moz-locale-dir(rtl) { - border-top-right-radius: 5px; - border-bottom-right-radius: 5px; -} - -.category[disabled] { - border-top: 0; - border-bottom: 0; - height: 0; - opacity: 0; - transition-property: height, opacity; - transition-duration: 1s, 0.8s; -} - -.category:not([disabled]) { - height: 52px; - transition-property: height, opacity; - transition-duration: 1s, 0.8s; -} - -.category[selected] { - background-color: rgba(255, 255, 255, 0.35); - color: -moz-dialogtext; - border-color: rgba(50, 65, 92, 0.4); - -moz-border-end-color: #C9CFD7; -} - -.category-name { - font-size: 150%; -} - -/* Maximize the size of the viewport when the window is small */ -@media (max-width: 800px) { - .category-name { - display: none; - } -} - -.category-badge { - background-color: #55D4FF; - padding: 2px 8px; - margin: 6px 0; - border-radius: 10000px; - color: #FFF; - font-weight: bold; - text-align: center; -} - -.category-badge[value="0"] { - visibility: hidden; -} - -.category-icon { - width: 32px; - height: 32px; - -moz-margin-start: 6px; -} - -#category-search > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-search.png"); -} -#category-discover > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-discover.png"); -} -#category-locale > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-languages.png"); -} -#category-searchengine > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-searchengines.png"); -} -#category-extension > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-extensions.png"); -} -#category-service > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-service.png"); -} -#category-theme > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-themes.png"); -} -#category-plugin > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-plugins.png"); -} -#category-dictionary > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-dictionaries.png"); -} -#category-experiment > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-experiments.png"); -} -#category-availableUpdates > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-available.png"); -} -#category-recentUpdates > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-recent.png"); -} - - -/*** header ***/ - -#header { - margin-bottom: 18px; -} - -.nav-button { - list-style-image: url(chrome://mozapps/skin/extensions/navigation.png); -} - -#back-btn:-moz-locale-dir(ltr), -#forward-btn:-moz-locale-dir(rtl) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right: none; - -moz-image-region: rect(0, 20px, 20px, 0); - padding-right: 3px; -} - -#back-btn:-moz-locale-dir(rtl), -#forward-btn:-moz-locale-dir(ltr) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - -moz-image-region: rect(0, 40px, 20px, 20px); - padding-left: 3px; -} - -#header-utils-btn { - list-style-image: url("chrome://mozapps/skin/extensions/utilities.svg#utilities"); - -moz-margin-end: 18px; -} - -#header-utils-btn > .toolbarbutton-menu-dropmarker { - list-style-image: url("chrome://mozapps/skin/extensions/toolbarbutton-dropmarker.png"); - padding: 0; - -moz-margin-start: 2px; -} - -#header-search { - margin: 0; - -moz-appearance: none; - padding: 3px 5px 2px; - border: 1px solid rgba(60,73,97,0.5); - border-radius: 10000px; - box-shadow: inset 0 1px 1px rgba(0,0,0,0.15), 0 1px rgba(255,255,255,0.25); - background: linear-gradient(rgba(255,255,255,0.2), rgba(255,255,255,0.3)); - background-clip: padding-box; -} - -@media (max-width: 600px) { - #header-search { - width: 12em; - } -} - -#header-search[focused] { - box-shadow: @focusRingShadow@, inset 0 1px 1px rgba(0,0,0,0.15); - border-color: -moz-mac-focusring; -} - -#header-search > .textbox-input-box { - -moz-padding-start: 15px; - background: url("chrome://mozapps/skin/extensions/search.png") left no-repeat; -} - -#header-search > .textbox-input-box:-moz-locale-dir(rtl) { - background-position: right; -} - -#header-search > .textbox-input-box > html|*.textbox-input::-moz-placeholder { - color: #5C6470; - opacity: 1.0; -} - -.view-header { - padding: 4px; - margin: 0; - min-height: 31px; - border-bottom: 1px solid rgba(50, 65, 92, 0.4); - background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.05)); -} - - -/*** sorters ***/ - -.sort-controls { - -moz-appearance: none; -} - -.sorter { - -moz-appearance: none; - border: none; - color: #41434B; - background-color: transparent; - border-radius: 10000px; - padding: 0 6px; - margin: 0 6px; - min-width: 12px !important; - -moz-box-direction: reverse; -} - -.sorter[checkState="1"], -.sorter[checkState="2"], -.sorter:active:hover { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; - box-shadow: inset #A3A6AC 0 1px 1px, @loweredShadow@; -} - -.sorter:hover { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; -} - -.sorter[checkState="1"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); -} - -.sorter[checkState="2"] { - list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); -} - -.sorter .button-icon { - -moz-margin-start: 4px; -} - - -/*** discover view ***/ - -.discover-spacer-before, -.discover-spacer-after { - -moz-box-flex: 1; -} - -#discover-error .alert { - max-width: 45em; - -moz-box-flex: 1; -} - -.discover-logo { - list-style-image: url("chrome://mozapps/skin/extensions/discover-logo.png"); - -moz-margin-end: 15px; -} - -.discover-title { - font-weight: bold; - font-size: 24px; - font-family: MetaWebPro-Book, "Trebuchet MS", sans-serif; - margin: 0 0 15px 0; -} - -.discover-description { - text-align: justify; - margin: 0 0 15px 0; -} - -.discover-footer { - text-align: justify; -} - - -/*** list ***/ - -.list { - -moz-appearance: none; - margin: 0; - border: none; - background-color: transparent; -} - -.addon { - border-bottom: 1px solid #B6B1B9; - padding: 5px; - color: #373D48; -} - -.details { - cursor: pointer; - margin: 0; - -moz-margin-start: 10px; -} - -.icon-container { - width: 48px; - height: 48px; - margin: 3px 7px; - -moz-box-align: center; - -moz-box-pack: center; -} - -.icon { - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png"); - max-width: 48px; - max-height: 48px; -} - -.addon[active="false"] .icon { - filter: grayscale(1); -} - -.addon-view[type="theme"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric.png"); -} - -.addon-view[type="locale"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/localeGeneric.png"); -} - -.addon-view[type="plugin"] .icon { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric.png"); -} - -.addon-view[type="dictionary"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png"); -} - -.addon-view[type="experiment"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/experimentGeneric.png"); -} - -.name-container { - font-size: 150%; - margin-bottom: 0; - font-weight: bold; - color: #000; - text-shadow: @loweredShadow@; - -moz-box-align: end; - -moz-box-flex: 1; -} - -.creator { - font-weight: bold; -} - -.creator .text-link { - color: #0066CC; -} - -.description-container { - margin-top: 8px; - -moz-margin-start: 6px; - -moz-box-align: center; -} - -.description { - margin: 0; -} - -.warning, -.pending, -.error { - -moz-margin-start: 48px; - font-weight: bold; - text-shadow: @loweredShadow@; - -moz-box-align: center; -} - -.content-container, -.basicinfo-container { - -moz-box-align: start; -} - -.addon[status="installing"] > .content-container { - -moz-box-align: stretch; -} - -.update-info-container { - -moz-box-align: center; -} - -.advancedinfo-container, -.update-available { - -moz-box-align: end; -} - -.install-status-container { - -moz-box-pack: end; - -moz-box-align: end; -} - -.name-outer-container { - -moz-box-pack: center; -} - -.relnotes-toggle-container, -.icon-outer-container { - -moz-box-pack: start; -} - -.status-container, -.control-container { - -moz-box-pack: end; -} - -.addon-view .warning { - color: #916D15; -} - -.addon-view .error { - color: #864441; -} - -.addon-view .pending { - color: #1B7123; -} - -.addon-view[pending="disable"] .pending, -.addon-view[pending="uninstall"] .pending { - color: #62666E; -} - -.addon-view[notification="warning"] { - background-image: linear-gradient(rgba(255, 255, 0, 0.2), rgba(255, 255, 0, 0.1)); -} - -.addon-view[notification="error"] { - background-image: linear-gradient(rgba(255, 0, 0, 0.2), rgba(255, 0, 0, 0.1)); -} - -.addon-view[notification="info"] { - background-image: linear-gradient(rgba(0, 0, 255, 0.2), rgba(0, 0, 255, 0.1)); -} - -.addon-view[pending="enable"], -.addon-view[pending="upgrade"], -.addon-view[pending="install"] { - background-image: linear-gradient(rgba(0, 255, 0, 0.2), rgba(0, 255, 0, 0.1)); -} - -.addon-view[pending="disable"], -.addon-view[pending="uninstall"] { - background-image: linear-gradient(rgba(128, 128, 128, 0.2), rgba(128, 128, 128, 0.1)); -} - -.addon .relnotes-container { - -moz-box-align: start; - height: 0; - overflow: hidden; - opacity: 0; - transition-property: height, opacity; - transition-duration: 0.5s, 0.5s; -} - -.addon[show-relnotes] .relnotes-container { - opacity: 1; - transition-property: height, opacity; - transition-duration: 0.5s, 0.5s; -} - -.addon .relnotes-header { - font-weight: bold; - margin: 10px 0; -} - -.addon .relnotes-toggle { - -moz-appearance: none; - border: none; - background: transparent; - font-weight: bold; - -moz-box-direction: reverse; - cursor: pointer; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); -} - -.addon .relnotes-toggle > .button-box > .button-icon { - -moz-padding-start: 4px; -} - -.addon[show-relnotes] .relnotes-toggle { - list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); -} - -.addon[active="false"] { - background-color: rgba(135, 135, 135, 0.1); - background-image: linear-gradient(rgba(135, 135, 135, 0), - rgba(135, 135, 135, 0.1)); -} - -.addon-view[active="false"], -.addon-view[active="false"] .name-container { - color: #686A6B; -} - -.addon-view[notification="warning"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-warning.png"), - linear-gradient(rgba(255, 255, 0, 0.04), - rgba(255, 255, 0, 0)); - background-repeat: repeat-x; -} - -.addon-view[notification="warning"][native="false"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-compatibility.png"), - linear-gradient(rgba(255, 128, 0, 0.04), - rgba(255, 128, 0, 0)); - background-repeat: repeat-x; -} - -.addon-view[notification="error"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-error.png"), - linear-gradient(rgba(255, 0, 0, 0.04), - rgba(255, 0, 0, 0)); - background-repeat: repeat-x; -} - -.addon-view[pending="enable"], -.addon-view[pending="upgrade"], -.addon-view[pending="install"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-info-positive.png"), - linear-gradient(rgba(0, 255, 0, 0.04), - rgba(0, 255, 0, 0)); - background-repeat: repeat-x; -} - -.addon-view[pending="disable"], -.addon-view[pending="uninstall"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-info-negative.png"), - linear-gradient(rgba(128, 128, 128, 0.04), - rgba(128, 128, 128, 0)); - background-repeat: repeat-x; -} - -.addon[selected] { - background-color: rgba(105, 125, 149, 0.39); - color: black; -} - -.addon[selected] .name-container { - text-shadow: @loweredShadow@; -} - -.addon[active="false"][selected] .name-container { - color: #3F3F3F; -} - - -/*** search view ***/ - -#search-filter { - padding: 5px 20px; - font-size: 120%; - overflow-x: hidden; - border-bottom: 1px solid rgba(50, 65, 92, 0.4); -} - -#search-filter-label { - font-weight: bold; - color: #666; -} - -.search-filter-radio { - -moz-appearance: none; - padding: 0 10px; - margin: 0 3px; - border-radius: 10000px; -} - -.search-filter-radio[selected] { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; - box-shadow: inset #A3A6AC 0 1px 1px, @loweredShadow@; -} - -.search-filter-radio:hover { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; -} - -.search-filter-radio .radio-check { - display: none; -} - -.search-filter-radio .radio-icon { - display: none; -} - -#search-allresults-link { - margin-top: 1em; - margin-bottom: 2em; -} - -/*** detail view ***/ - -#detail-view .loading { - opacity: 0; -} - -#detail-view[loading-extended] .loading { - opacity: 1; - transition-property: opacity; - transition-duration: 1s; -} - -.detail-view-container { - padding: 0 2em 2em 2em; - font-size: 110%; -} - -#detail-notifications { - margin-top: 1em; - margin-bottom: 2em; -} - -#detail-notifications .warning, -#detail-notifications .pending, -#detail-notifications .error { - -moz-margin-start: 0; -} - -#detail-icon-container { - width: 64px; - -moz-margin-end: 10px; - margin-top: 6px; -} - -#detail-icon { - max-width: 64px; - max-height: 64px; -} - -#detail-summary { - margin-bottom: 2em; -} - -#detail-name-container { - font-size: 200%; -} - -#detail-screenshot { - -moz-margin-end: 2em; - max-width: 300px; - max-height: 300px; -} - -#detail-screenshot[loading] { - background-image: url("chrome://global/skin/icons/loading_16.png"), - linear-gradient(rgba(255, 255, 255, 0.5), transparent); - background-position: 50% 50%; - background-repeat: no-repeat; - border-radius: 3px; -} - -#detail-screenshot[loading="error"] { - background-image: url("chrome://global/skin/media/error.png"), - linear-gradient(rgba(255, 255, 255, 0.5), transparent); -} - -#detail-desc-container { - margin-bottom: 2em; -} - -#detail-desc, #detail-fulldesc { - -moz-margin-start: 6px; - /* This is necessary to fix layout issues with multi-line descriptions, see - bug 592712*/ - outline: solid transparent; - white-space: pre-wrap; - min-width: 10em; -} - -#detail-fulldesc { - margin-top: 1em; -} - -#detail-contributions { - border-radius: 5px; - border: 1px solid rgba(50, 65, 92, 0.3); - margin-bottom: 2em; - padding: 1em; - background-color: rgba(255, 255, 255, 0.35); -} - -#detail-contrib-description { - font-style: italic; - margin-bottom: 1em; - color: #373D48; -} - -#detail-contrib-suggested { - color: grey; - font-weight: bold; -} - -#detail-contrib-btn { - -moz-appearance: none; - color: #FFF; - border: 1px solid #3A4EEE; - border-radius: 3px; - list-style-image: url("chrome://mozapps/skin/extensions/heart.png"); - background-color: #2F73EF; - background-image: linear-gradient(rgba(251, 252, 253, 0.70), rgba(246, 247, 248, 0.27) 49%, - rgba(231, 232, 233, 0.25) 51%, rgba(225, 226, 229, 0.1)); -} - -#detail-contrib-btn .button-box { - padding: 0 6px 1px 6px; -} - -#detail-contrib-btn .button-icon { - -moz-margin-end: 3px; -} - -#detail-contrib-btn:not(:active):hover { - border-color: #4271FF; - background-color: #0459F7; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), - 0 0 3.5px hsl(190, 90%, 80%); - transition: background-color .4s ease-in, - border-color .3s ease-in, - box-shadow .3s ease-in; -} - -#detail-contrib-btn:active:hover { - background-color: #8FA1C1; - border-color: rgba(0, 0, 0, 0.65) rgba(0, 0, 0, 0.55) rgba(0, 0, 0, 0.5); - box-shadow: 0 0 6.5px rgba(0, 0, 0, 0.4) inset, - 0 0 2px rgba(0, 0, 0, 0.4) inset; -} - -#detail-grid { - margin-bottom: 2em; -} - -#detail-grid > columns > column:first-child { - min-width: 15em; - max-width: 25em; -} - -.detail-row[first-row="true"], -.detail-row-complex[first-row="true"], -setting[first-row="true"] { - border-top: none; -} - -.detail-row, -.detail-row-complex, -setting { - border-top: 2px solid; - -moz-border-top-colors: rgba(28, 31, 37, 0.2) rgba(255, 255, 255, 0.2); - -moz-box-align: center; - min-height: 30px; -} - -#detail-controls { - margin-bottom: 1em; -} - -#detail-view[active="false"]:not([pending]):not([notification]) { - background-image: linear-gradient(rgba(135, 135, 135, 0.1), - rgba(135, 135, 135, 0)); -} - -setting[first-row="true"] { - margin-top: 2em; -} - -setting { - -moz-box-align: start; -} - -.preferences-alignment { - min-height: 30px; - -moz-box-align: center; -} - -.preferences-description { - font-size: 90.9%; - color: graytext; - margin-top: -2px; - -moz-margin-start: 2em; - white-space: pre-wrap; -} - -.preferences-description:empty { - display: none; -} - -setting[type="radio"] > radiogroup { - -moz-box-orient: horizontal; -} - - -/*** creator ***/ - -.creator > label { - -moz-margin-start: 0; - -moz-margin-end: 0; -} - -.creator > .text-link { - margin-top: 1px; - margin-bottom: 1px; -} - - -/*** rating ***/ - -.meta-rating { - -moz-margin-end: 0; - margin-top: 2px; -} - -.meta-rating > .star { - list-style-image: url("chrome://mozapps/skin/extensions/rating-not-won.png"); - padding: 0 1px; -} - -.meta-rating > .star[on="true"] { - list-style-image: url("chrome://mozapps/skin/extensions/rating-won.png"); -} - - -/*** download progress ***/ - -.download-progress { - background-image: linear-gradient(#DCDEE3, #CBCED6); - border: 1px solid #858898; - border-radius: 3px; - box-shadow: inset #E3E8EC 0 1px 1px, @loweredShadow@; - width: 200px; - height: 21px; - margin: 0 8px; -} - -.download-progress[mode="undetermined"] .progress { - -moz-binding: url("chrome://global/content/bindings/progressmeter.xml#progressmeter-undetermined"); -} - -.download-progress[mode="undetermined"] { - border-color: #2E773A; -} - -.download-progress[mode="undetermined"] .status-container { - padding: 0 2px; -} - -.download-progress .start-cap, -.download-progress[complete] .end-cap, -.download-progress[mode="undetermined"] .end-cap, -.download-progress .progress .progress-bar { - -moz-appearance: none; - background-image: linear-gradient(#6AC47E, #4FAC6A); - margin-top: -1px; - margin-bottom: -1px; - border: 1px solid #2E773A; -} - -.download-progress .start-cap { - -moz-margin-start: -1px; - -moz-border-end-width: 0; -} - -.download-progress .end-cap { - -moz-margin-end: -1px; - -moz-border-start-width: 0px !important; -} - -.download-progress .progress .progress-bar { - border-left-width: 0; - border-right-width: 0; - min-height: 21px; -} - -.download-progress .progress { - -moz-appearance: none; - background-color: transparent; - padding: 0; - margin: 0; - border: none; -} - -.download-progress .start-cap, -.download-progress .end-cap { - width: 4px; -} - -.download-progress .start-cap:-moz-locale-dir(ltr), -.download-progress .end-cap:-moz-locale-dir(rtl) { - border-radius: 3px 0 0 3px; -} - -.download-progress .end-cap:-moz-locale-dir(ltr), -.download-progress .start-cap:-moz-locale-dir(rtl) { - border-radius: 0 3px 3px 0; -} - -.download-progress .cancel { - -moz-appearance: none; - background-color: rgba(255, 255, 255, 0.15); - border: 1px solid rgba(0, 0, 0, 0.4); - padding: 3px; - border-radius: 3px; - min-width: 0; - margin: 3px; -} - -.download-progress .cancel .button-text { - display: none; -} - -.download-progress .cancel .button-icon { - -moz-margin-start: 0; -} - -.download-progress .cancel { - list-style-image: url('chrome://mozapps/skin/extensions/cancel.png'); -} - -.download-progress .status-container { - -moz-box-align: center; -} - -.download-progress .status { - text-shadow: @loweredShadow@; -} - - -/*** install status ***/ - -.install-status { - -moz-box-align: center; -} - - -/*** check for updates ***/ - -#updates-container { - -moz-box-align: center; -} - -#updates-installed, -#updates-downloaded { - color: #3C735C; - font-weight: bold; -} - -#update-selected { - margin: 12px; -} - - -/*** buttons ***/ - -.addon-control[disabled="true"]:not(.no-auto-hide) { - display: none; -} - -.no-auto-hide .addon-control { - display: block !important; -} - -.no-auto-hide > .menulist-dropmarker { - -moz-padding-start: 0px !important; -} - -button.button-link { - -moz-appearance: none; - background: transparent; - border: none; - box-shadow: none; - text-decoration: underline; - color: #0066CC; - cursor: pointer; - min-width: 0; - margin: 0 6px; -} - -.text-link { - color: #3386D5; -} - -.button-link:hover, -.text-link:hover { - color: #3DA1FF; -} - -/* Needed to override normal button style from inContent.css */ -button.button-link:not([disabled="true"]):active:hover { - background: transparent; - border: none; - box-shadow: none; -} - -.header-button { - -moz-appearance: none; - padding: 0 4px; - margin: 0; - height: 22px; - border: 1px solid rgba(60,73,97,0.5); - border-radius: @toolbarbuttonCornerRadius@; - box-shadow: inset 0 1px rgba(255,255,255,0.25), 0 1px rgba(255,255,255,0.25); - background: linear-gradient(rgba(255,255,255,0.45), transparent); - background-clip: padding-box; -} - -.header-button .toolbarbutton-text { - display: none; -} - -.header-button[disabled="true"] .toolbarbutton-icon { - opacity: 0.4; -} - -.header-button:not([disabled="true"]):active:hover, -.header-button[open="true"] { - border-color: rgba(45,54,71,0.7); - box-shadow: inset 0 0 4px rgb(45,54,71), 0 1px rgba(255,255,255,0.25); - background-image: linear-gradient(rgba(45,54,71,0.6), transparent); -} - -/*** telemetry experiments ***/ - -#detail-experiment-container { - font-size: 80%; - margin-bottom: 1em; -} - -#detail-experiment-bullet-container, -#detail-experiment-state, -#detail-experiment-time, -.experiment-bullet-container, -.experiment-state, -.experiment-time { - vertical-align: middle; - display: inline-block; -} - -.addon .experiment-bullet, -#detail-experiment-bullet { - fill: rgb(158, 158, 158); -} - -.addon[active="true"] .experiment-bullet, -#detail-view[active="true"] #detail-experiment-bullet { - fill: rgb(106, 201, 20); -} diff --git a/toolkit/themes/osx/mozapps/extensions/heart.png b/toolkit/themes/osx/mozapps/extensions/heart.png deleted file mode 100644 index 655f4c4be795d4c49cf842e4b8858e74eef816dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2949 zcmV;03wrd4P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00026Nklr0qoz$^?$|PW&+Pwz=X#J7QPFnQr00000NkvXXu0mjfQzLf| diff --git a/toolkit/themes/osx/mozapps/extensions/localeGeneric.png b/toolkit/themes/osx/mozapps/extensions/localeGeneric.png deleted file mode 100644 index 4d9ac5ad895281ec1fc1154d24270bad38e21be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2410 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 Y02Xl?bhbfYx&QzG07*qoM6N<$f)@l6EC2ui diff --git a/toolkit/themes/osx/mozapps/extensions/newaddon.css b/toolkit/themes/osx/mozapps/extensions/newaddon.css deleted file mode 100644 index 5bf04fab1..000000000 --- a/toolkit/themes/osx/mozapps/extensions/newaddon.css +++ /dev/null @@ -1,112 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../../global/shared.inc - -@import url("chrome://global/skin/inContentUI.css"); - -#addon-page { - padding: 0; -} - -#addon-scrollbox { - overflow: auto; - -moz-box-orient: vertical; - -moz-box-flex: 1; -} - -#spacer-start { - -moz-box-flex: 1; -} - -#spacer-end { - -moz-box-flex: 3; -} - -#addon-container { - overflow: visible; - max-width: 600px; - margin: 20px; - padding: 30px 90px; -} - -#addon-info { - -moz-box-align: start; - margin: 25px 10px; -} - -#icon { - -moz-margin-end: 10px; - max-width: 64px; - max-height: 64px; - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png"); -} - -.addon-info[type="theme"] #icon { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric.png"); -} - -.addon-info[type="locale"] #icon { - list-style-image: url("chrome://mozapps/skin/extensions/localeGeneric.png"); -} - -.addon-info[type="plugin"] #icon { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric.png"); -} - -.addon-info[type="dictionary"] #icon { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png"); -} - -#name { - font-size: 130%; -} - -#author { - color: GrayText; -} - -#location { - color: GrayText; -} - -#warning { - margin-bottom: 25px; - -moz-box-align: start; -} - -#warning-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-warning.png"); - width: 16px; - height: 15px; - -moz-margin-end: 5px; -} - -#allow { - -moz-margin-start: 84px; - margin-bottom: 20px; -} - -#continuePanel, -#restartPanel { - margin-top: 25px; - -moz-box-align: center; - -moz-box-pack: end; -} - -#continuePanel { - -moz-box-pack: end; -} - -#restartMessage { - text-align: right; -} - -#restartSpacer { - -moz-box-flex: 1; -} - -#later { - color: GrayText; -} diff --git a/toolkit/themes/osx/mozapps/extensions/rating-not-won.png b/toolkit/themes/osx/mozapps/extensions/rating-not-won.png deleted file mode 100644 index 2761f19255511393ac671c0d075d4af2f63cf316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1559 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 RyJP?W002ovPDHLkV1kc@xmf@J diff --git a/toolkit/themes/osx/mozapps/extensions/selectAddons.css b/toolkit/themes/osx/mozapps/extensions/selectAddons.css deleted file mode 100644 index 8682b04b5..000000000 --- a/toolkit/themes/osx/mozapps/extensions/selectAddons.css +++ /dev/null @@ -1,163 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../../global/shared.inc - -.heading { - font-size: 270%; - text-align: center; - margin: 0 120px; -} - -.progress { - margin: 10px 128px; -} - -.progress-label, -#errors-description { - text-align: center; - margin: 0 10px; -} - -#checking-heading, -#update-heading, -#errors-heading { - margin-top: 90px; -} - -#select-heading, -#confirm-heading { - margin-top: 10px; - margin-bottom: 10px; - text-align: center; -} - -#select-description, -#confirm-description { - margin: 10px; -} - -#select-list { - border: 1px solid WindowFrame; - background-color: Window; - margin: 10px; -} - -#select-grid column { - -moz-box-align: center; -} - -#select-grid row { - -moz-box-align: stretch; -} - -#select-grid row:nth-of-type(odd) { - background-color: -moz-oddtreerow; -} - -#select-grid label, -#select-grid checkbox { - margin-top: 0; - margin-bottom: 0; -} - -.select-cell { - -moz-box-align: center; - -moz-box-pack: start; - box-sizing: border-box; -} - -#select-header { - background-color: Window !important; -} - -#select-header .select-cell { - -moz-appearance: treeheadercell; - border: 2px solid; - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow; - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -.select-keep { - -moz-box-pack: center; -} - -.select-icon { - width: 20px; -} - -#select-grid separator { - display: none; -} - -.addon-name, -.addon-action-message, -.addon-action-update { - box-sizing: border-box; - margin: 0; - padding: 2px 6px; -} - -.addon:not([active]) .addon-name, -.addon:not([active]) .addon-action-message, -.addon:not([active]) .addon-action-update { - color: GrayText; -} - -.addon-icon { - height: 16px; - width: 16px; - margin: 2px; - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric-16.png"); -} - -.addon-icon[type="theme"] { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric-16.png"); -} - -.addon-icon[type="plugin"] { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric-16.png"); -} - -.addon-icon[type="dictionary"] { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric-16.png"); -} - -.action-list { - margin-top: 10px; - -moz-margin-start: 5em; -} - -.action-header { - margin-bottom: 10px; -} - -#confirm .addon { - -moz-margin-start: 3em; - -moz-box-align: center; -} - -.addon:not([active]) .addon-icon, -#disable-list .addon-icon, -#incompatible-list .addon-icon { - filter: grayscale(1); -} - -#footer { - padding: 15px 12px; - -moz-appearance: statusbar; - -moz-window-dragging: drag; -} - -button { - -moz-appearance: toolbarbutton; - min-height: 22px; - margin: 0 6px; - padding: 0; - text-shadow: @loweredShadow@; -} diff --git a/toolkit/themes/osx/mozapps/extensions/stripes-compatibility.png b/toolkit/themes/osx/mozapps/extensions/stripes-compatibility.png deleted file mode 100644 index dee75516b771b15d4b3648084c8841afff06ccf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmV+s1n&EZP)bbHSWfY!lH*iooX?p{ktL(aQ}4x0*%Y+a z#ZJqp@!V$+GmlWlc}qp#evE$As={aj(h4KGLD@wLGNNR3raGh*MroN{Kw4px zl-UiW6-FtUT|ru59YDHB&V>{qU8KN*E>e!MIW00>WT%X^GEWIWa zYxc}joj)3LYQ|ETr-rn`SR(WEkX9J?WDWsog)t{{7)UFOB|krXdPpmbDVf7TT47vv zPNM-~kjjj(XbiW|iWVbmgGK+;rV6ALM)WUGsX$s`)R5^Sg&4m9VDX3<^Yw2|00000 LNkvXXu0mjf-#XE> diff --git a/toolkit/themes/osx/mozapps/extensions/stripes-error.png b/toolkit/themes/osx/mozapps/extensions/stripes-error.png deleted file mode 100644 index 1dc2d8504cbf625fffc9d5707ef9eb459c70fc0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1979 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 RqR0FDO-e{nHO0SO_J4HbA_V{d diff --git a/toolkit/themes/osx/mozapps/extensions/stripes-info-positive.png b/toolkit/themes/osx/mozapps/extensions/stripes-info-positive.png deleted file mode 100644 index 370ceec0f241b320339bd7a6239eafd4f19944cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1852 zcmaJ?3rrJt9IhxR$XjJ1AjcIFQQKZy9&1O1wnu4$HCW1qifC!CP_(^14k^qBOdJ&v zDIx?p5o8SA6#=(o?2^0x{eSts@AvqBmpdG> zDa_7hl?{PFuoLiM5x(m1J9>!~{%l=iT81yKSZFjBiOR8Li54NSWoR4%2$Yg|M1)9W zDVp0z5P`4|REVRoXyHbt6jhQXW(--cRO4&{At+d{mPmIY7!ZfVD^x6S|KNJ-$i~zW(76JUp5J?IJKtKSMOr`q;1_rJNXb=^mKr{-KMxq8X=`7znG{NLaxyuYPDZuy6e@$kFl*3gBpgA~rKm88o}|(dXBA*X zC)Fy{m;zM+W<^OHnuM`HywVRXDAjYaD&5SO@PSeE5;cWNhRiL^0)@i=hbonGXdNa( zKGyr6!a8w^8li{~9h#(-;s+-unp3HnTrDEOP^}n6ch62SA_2uvT>`2GxRL&VP$E^R z%=>A)P{(3RAgs8ja2Ir%|aek3kD%b2(hU04|Tifdipg zE{sZ(l!ywO<;p&C>GN{UR#2+(%rK%=>_KEaEvf{jTV^WeuLYV{Z-y(IzZUAeTnb(c z#eA^;IOy3B?jG~&oNe*VobeGA?shG1>vzv0?D4OqP5`sT`tIS99&I^f8=^eDM?QY` z+GOXxdsg+iA(?}Ya1RT+qKxCxw${Rc=J)A4^7X{=rK88D8easy_qne}m-&0Y zWFMswA3FCQcnc52_IrpeU#&|L-bMM49O31r?G67mw!)IP#JGRuAEi%STP*rV59tp1 z^IlrrA79Yq#kc_ywWC|9Pq#Hs_}EU2rS-qKx>dd?Ecf1}E4gE?UdI-v>?s0*gH?&S zHI8jA^k2#LdeQJn%`MY*dgl0I>zkLv=M42Nh6lO5@&o68F=d|NugkvGIXu$bKqy-4 zSkqyM0c$Lb&Igu)o;z>0fG4fc*xLZ7e#?n z_~GRi;uVS#r|_)yzjmB!ky&`?ZdPIZm7k&uJ%VPESP_ zN0r(SPcoK$*;E=EmIeBfItq5gZ5+H@^kz$WU0;@|USlD2>$rH~GV?QWny#Zg^~8B% zZ+YkP!O}SyFZfSMhT~x7zXGRta2Bb|GtkZ?E|yBEx1(Q?>)77bT>0aUCrvw^Ehomr z$ZA6>s@okE8933w7>|6-m*N%gGwh9$8~lD+;&ms}R8HeoXj*&U+eT?Z(lU_P0;lXF zczf$z%(w^nuHeO6IL=|Z*@%TQ(sajXz>4Ix99UpQxEr*x Uy0K$$oB4kx2;BtNa&~_8H&}1R3;+NC diff --git a/toolkit/themes/osx/mozapps/extensions/stripes-warning.png b/toolkit/themes/osx/mozapps/extensions/stripes-warning.png deleted file mode 100644 index 69463fb1af3de8f2cb8c9acc2fcbd61b226cb114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2177 zcmaJ@c~ld39#4Q}5s`BGf(1KFpga+BOn^X2IFd_u5kW<$>;#4Ok7eh*ncw_=@ALV5ug||u4?q&Z()u;Tg1bL$fZ*`VjBh-4! z)%Z097*UH<5~W6>kOM|VVWJ{kLkH1JUzZ?LuFJ~RZ`y=5jHneViDUxFSkfAh$NT?K znQR@c*6@)(^8KH}YC)C~A@UKmB3&gy2bY95hEmd)DnzJJs00dybghdKDGH53ouW_z z%t&8=ClpEK#{DXu$D?uOYK>4XLbxy;L=^}UiI_%Z!DJ?d%nD`rLS!<`4uDvpOa{}( zkI7~*U@B>i3oAtFGDNOf_vNz-!tsqmPkzqt7$w0(xl|lxrmQ0guoC|Y9y*FI( z#<{>7a*1d%MB`xpH0ZS>)IG-6b=#twb>ky))a@$N*7XVE0~n0i0v8SyXm3xSDypaj zY(j*Llh=dNR$6}VzMer%JIA&kD=5f!a{gHwzCGyvf(gY&wy^ZPi~7ZrW(&(RGxZ5~ zdj7`Rr~AO?AGKvaT1GvuY`%P8IQQ=}K&~w_$2}=~%4VFrZ8D~DzI2O8Wv?1r9FIgr zu=<5QlQ$cS-U$e~8?N0{4A|RwlJ?oJJ^8`jy4X#kmevpF1LkUwrZFzoWSSIm+trG@3T%5&N;?Z4Bav; zEcN%hL*;4vOnexS&W)Q<#WGh|L^WFJZ$jsLJDeJH<*ur*yy$1jCEeD!Q``r8nznPo zan&$e=u=-BU$o4$TFlB5^yQv##@%U(rx0G%_j%1VHl4juUS^UFo`o2%z$h#@<#53S zD%wwbp5L-HvwH``kJosFXivX-ROV9gqCx(>q}FY*`90);PQSgl_Qk;bq;k+>vv|p0 ze$g?ESY@lqm!?Wz;&#-HgaPd@o>b!I>@RXgia-6hyWxr|6ciRY3|b77p2O(H#l{I8 z_T*dR#U_Psdzep)`U2r=vBRxaE~j_)T#IHiEhN!)*a?5~tnhd2T<p;h3vq+P$Yc z@V9YW9NqR*c6pwxB`;v>ntsZ!%6{4LYeqsLE2*o>Eh!D?P#fKtC z`^TUwy;7WO11Bo4w;5+_7F09f3BAR(k9)9pdAQ_BS$*J8aAd{Ue(Z zJ9}~poOovXChVw(ZS31_XM5Zjl_Ou<76lH%E!NZ2>$y5x@L1zahCe)0V0(_^1X9y4 zS?gQ0|JEI9c|kr9Ln#XMFB$iUzI`q7&ajmx}`f*APM!zeu_uJBc?Wu^TF!DH&dA;$Jn!K%C--c{Ns&7v^Ja8>KT;HC2 z*baDqwSQ;RLOORZ4{!cWIjIH+*&i9`iuPN-bMv7>5g}Jm+ylY=vBDmyOxi|Z8Nk)1>%wApB>`NR!`Ax zb$#_vCv~~Nqqv!tKeW*nf7tahfYh1Y(f-imorz6i%TMcYBfj5-jXa)aHR22ov&XZp z3iMXS89z!-ynFIU7}$2E*5*c?J9l4s zuppIOvZ-|EjoUM|&h60z&e%uCTMk7H-xRf9W+j7mrgrV`mBm$KFW#ke-fDZ9V7Rw; z=y_0tczSQzKMTL#lcF}5B)T>AHf8czmNrh{CEWxTtpS3=FO9qFIaZI<_cT&Hh;wD? zfAHp8y)MtJmv3}L7y30h8zg=^>8XxGuU*<`I_Al@SZ_i~`9Q($9M|?Ur!E;(h2ms0 zMsFLrekfRK+j_$J2$0%CTUq%=I`p3``47QZb4*Oq;|mj^VxIA*fXfPpTNob{{1>ME BY6JiP diff --git a/toolkit/themes/osx/mozapps/extensions/themeGeneric-16.png b/toolkit/themes/osx/mozapps/extensions/themeGeneric-16.png deleted file mode 100644 index 190bb30d717c6abd6b87df313f609cd8a412c040..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmV;%0y+JOP)D)4l38 zbI#Vg*XcX8%nve$&TX%mBUCC(_R-G&+TK^zN-GdL@Vj}=^Z%W5IFD#;ZB6t)Y-ug@ zDhnQGh%z_Vw6!xi#GnuhVW!(jUv7>%7= zgH9*?r-0IH&(l`3f6nKD&#A{iQ7TSn-2gqfj3ozyRrfR)=bMPSwmy4<>foGY((EWjk+_3 zvG66d9(FAf=w=!0b*7`)$AGff5feE3Y~O{Gg|IAF4p)0Q+NBAY7#)v=$NU7EX$E`P zbhK~`w3Iav6AUmf!-60jA@F+Kn5eoAbF~uF{%@G{2iL>z=j|Br(6G!zFg~|}@+$4q zUr(T#?+md_#OE5pl<6#LF6V*jFwQCzmAC4iHL>O)54cG&7CrkgG9QMz+5GWQV^_+C zU$9wU?5wLOT5T&$hU#J=6e_h{Q>(S9YP5@OtQW&>8>YB^K5UwM*wDHEk2&ZllV$45 z^2yb#9pMKRrNq=X3d%kP#=VL`E`V0+VC1%1*K$|Wn)264JT4Z=b0qO4(nGs5D(+QY zcy8|GM$|L4Ez$4)~7)27TiK9J2Z{qKQ sxTraSXFE?4Px2;`qI(HHZy^YN0N!cbu+$SM$N&HU07*qoM6N<$f>lXO4gdfE diff --git a/toolkit/themes/osx/mozapps/extensions/themeGeneric.png b/toolkit/themes/osx/mozapps/extensions/themeGeneric.png deleted file mode 100644 index be645f76df92c954c143576eba8a9e43da0499fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2185 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 Q$p8QV07*qoM6N<$g3JiWga7~l diff --git a/toolkit/themes/osx/mozapps/passwordmgr/key.png b/toolkit/themes/osx/mozapps/passwordmgr/key.png deleted file mode 100644 index b5e8afefca4b4b4adfa8ebe2d528e3c68bfbb3a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cMy~*$5Lck$|NsBj*VoUOF=OV;nX_iinmv2gq)C&ePMy-; z-qzmU-qqFB-QC^T*x1zA*xc0A($dljM6IoDZ9v(!^78VE3LvVet*x!At1T=nEGjB0 zE-o%9DJd%}Eh{UlfGMb~sOV^K@9gaC>F)09>zg=n!kjsC=FXivZ{EE5^XDyIyl4p! zEm^X1#fq(4HgDUyW#^6^J9qBbwQJYzojZ2}$=yJ-d(WOdd-v|%zkmOM1N#mhIB@9T zfy0Lm9X@>c`0-;WKVlDym|BP?b~-E9wL@#BN(#T5Gimi{Hqi$~oL|iaH~D>h*2vYd+%kg0fXgz~%Zb&+Sodx(OHZ@0 zszOcN<&t>kaO3?M{&@!T&ujVGUpjurP9=6W>yhW%PX-un@b>a8zLdfqsr_KW(pN8p zQnj>>o#c7MZJD}yXRD|8N2jym-%bQ>=bez)zP_Yj-PrW<266dy1`6wg~7422WQ%mvv4FO#oVWU;Y39 diff --git a/toolkit/themes/osx/mozapps/plugins/notifyPluginGeneric.png b/toolkit/themes/osx/mozapps/plugins/notifyPluginGeneric.png deleted file mode 100644 index 449e081496f7f0e460de087d76f3cad549d25df1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmV-90mlA`P)oABaI+t`GP*qh2LqCs)LB@GWXW#`qfPGSN18&3o0*6F*0S^~&3kIDS z^4JiVK$Ga)y+DNIX|}%z6P|yA^AC9#C}-){<=IMzvMfh@;fb;sCou}nxj}#>2ACLN z$N@!Bm=8zvFMI=y2AbGFi@L7crfGJR0Hsvxeu@+3J#h=&TYv!onE6{3`a=V500000 LNkvXXu0mjf%UXO& diff --git a/toolkit/themes/osx/mozapps/plugins/pluginBlocked-64.png b/toolkit/themes/osx/mozapps/plugins/pluginBlocked-64.png deleted file mode 100644 index 56b8a3322d9d5054480d8ae5d70386ecfe51ea0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4563 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 diff --git a/toolkit/themes/osx/mozapps/plugins/pluginBlocked.png b/toolkit/themes/osx/mozapps/plugins/pluginBlocked.png deleted file mode 100644 index 6e8e1761bf87e41def9bc2567680c2ab0f4c6c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2152 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 diff --git a/toolkit/themes/osx/mozapps/plugins/pluginGeneric.png b/toolkit/themes/osx/mozapps/plugins/pluginGeneric.png deleted file mode 100644 index 6ada1616bb125b42529b68bf3bb66298cccfce9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1939 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 listitem { - list-style-image: url("chrome://mozapps/skin/profile/profileicon.png"); -} - -#profiles:focus > listitem[selected="true"] { - list-style-image: url("chrome://mozapps/skin/profile/profileicon-selected.png"); -} - -#profiles > listitem > listcell > image { - width: 16px; - height: 16px; -} - -box#managebuttons > button { - min-width: 8em; -} - -#managebuttons { - padding-top: 1em; -} diff --git a/toolkit/themes/osx/mozapps/profile/profileicon-selected.png b/toolkit/themes/osx/mozapps/profile/profileicon-selected.png deleted file mode 100644 index f3e1f8e110bc178888124a58ef675fcfaad67cdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmVvCT32rNX`^-QT$Iu}JTkFD*+VqtbV9lcmATBtAGAc_8F|0y}4 zY1+|wLXxCo zECOrhlY9$k5$7(%3BU`l30V{H%&XOEN3tyM#R)(>Td&toD3)>7Cm@7~f*|DL1W?PQ zQmL)r5!MVuW=+$)k2BG-tOtr=M)F}3m&o5nqwx|qL9^L>#^O*rqTWFQNyp1~yWP8R zcZ7!8F2f|Eu5mR1(r&d{M!0*s-F~GthFL~kqc4Q8!<#VJ2@<_X;x-6-!b+u5Im0!c zDvELu2A0d^tA4+KFqur=RaN}}?`P!&KAhZaHhaW*KI7bv$R6bwhEd>$!{JRjoxbEY si1B!=^7Hxp4G-jS69LC@zW)Rm08_#%&T6F}Q~&?~07*qoM6N<$f>RIUp#T5? diff --git a/toolkit/themes/osx/mozapps/profile/profileicon.png b/toolkit/themes/osx/mozapps/profile/profileicon.png deleted file mode 100644 index f67a43714eedae5f6aec3fa41535027a6a25deff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)TImVK(f5zW5cP+cPaz z@>8czRsD52g)$CH2|NR*zy=fW8O;9iR7xcq92Km9&?1; zyU6GBZ^AHqfn$Iz6wQ4o)jU9a-~X!nTf(S|>$;8Ubn5SeVu=u=P$-g6a=D11 z87V{rK5Vz!uK31rrhLR0jYdCvz1|fq7*a(VolfV+cs%y>n1n#s9LKqBHk)5?R_O{L zRjpR*5}%v6;@u0D%Vm8A#$vHJ84Ly=JkLAR=TNWLuZP3o%Sxp(qm{ogdN~qMtyX{6 zYPFGMj7!I+8jZ#`Y_t9HB(UTsy_u8AOpYv;r7B0x@OXfq{m-Gs${=a}EVl$uq a5nuqgT)EFPnnVWx0000!$0vZ&VzsXzMWrN-MhjA$s2LqUX{1GE8k5?X zR{YV18rzg2ZT*xKtql^ZI5WzFf-TB`d`4S3F{$#G=`d@*oI}nW&bjwu(I%5(4U}9aQHt)F9hC>;z{UZ>>W0S zZG+YV-*18+i6R;r1bu{=e}pzdzX87Q|DG2|0APOvK1g<%ilcXM-dLu7`jx1N-*vJI`&qcI_%B+sc(IKjt>V5Y|0~;7u$H zW4U`(RaF^bVPQ^`N4p`>(b4Hwu3Y&#JUskeT>h6mb{p6V)`Ksi@aK3qyabqe6%`ey zySlo17A#ocbh%vT9S+CgzP>(=zX|-O48I!1!yJF$z=6c5sHh0MrxM@mOH53R1HO92 ziWSHE`}_H#{WtLW+<}FBI>}B@UD0@weqhU3174Bw+zF~H8c%Wu_zxI9N5*p}7+!8X zNgwcUa?mgGoI}rbh;^y)?(YiqAzSP1+qb*Ly3}|XKV)m|?Ck6n>OE592l3p29;x@z z__V31sVPP8Cu2>lP;9B<_Bbe*^Uw2X11XP_4TLy{QQ#0hUw&9ga;2E{Hxg_-n41c+w?3j=SGeknMF2q z$Z4|S-TTZI@zSMB57B}>eE6`-Znx)>4b!QTY?+yvpXe5`4-E78$&7|N)~#FjH*wmK z4KJt^rp(vC-eGfi6pELi?yVIK4a>>NsS&3Q+2EW@m@*#&-^=j#qgVr_cG&Qp>4k-b z_2RT48`|(aUq8@yfbSF!GCD<{ws??SluuLODf~#Vh^G;0lJGN8q*%m%2K=|GP=dCy znI@qG#WO!?LV-XOF(#n|#WQUh{NpGVn1m8v(hOI|LP9VXqzUF4Ee3O;&_F4e`xmsv zVlYSN(q!nP%uJ(w4O(Fs%-xIPZM(+Wi$k@`<)U-)48X{(b z3O{Pps4*KiZp^xT`SL2oXo#3#72em^cl4SyYnBuj7cW+fMzH9>{YDdR^5n@;iqY^D z>JJ&=LqbBr6{8_Kd_XfJyk-0dfe+Yqz?PPl z%JlT~y@>5^8SnvZFCsK|rKP2P1a8q`zy}^Sz<TG}|oQPlLhIAv;u>+>v>_c7^po4^Oo%Lkc<4|w>1hYxu8!0*oo zyd|(dn}3h9@W89Ox;o3x&(ELPV%ak`13r+-b~B2Vyw06F_YzKEzQd)mXKV(1Ae(Ij z7iqq`U(m2wQmd>eZZCvu2H9_afP|HU%GW$~zE(z<306 zf0{mh`e=5~$)2?-_`u8Z4&-n+=9H9_qz48D`m%d3vuABuJ}`g&e1GBt-QC@VbR7^7 z5Ps~~vGrE@02=)u@qvzxj-BpUJt*jj6DLlrw8{sjO`A4`_y7XHKQsK){QUeBOMGDY z^5p?Xj~;!yt*xykB_(BpJ7#EauS-fw+GT|gBqt}2J9X;RYuBz_yPlYs_$Jx#uB%R` z^L;CPAR;2dAK^o0Yinye+ET#q&8t_h{!GOOhU5n*_Q&zvICt*c61v73ScM)fQ2aWr z%nwlP-_X#|0!Q3Gy<-ie;a$awU#FG%0gC<6h95R>-uw++V+}l)ot<5#_;p&HA3y+C z6c-n_N)rRw%<=NBTw6@@12=BmsM)b&$20N^wr$%s@A~!YF0=dqhQB^HH#bVg=j7x#urYjR zmLCAVDJv^$2#*G}4F$eY<^$exY@e5x_aS=QdGh4RruhLAG0qRbI~u0rx@)ui z0G>TSs=GGJ57gDwy-upTwwxa@5!3vDiJ0aGOvHMAKqHp(0~)cMAJE9~^8@mxG2Hxs z0lxok@yh=TSrqO6g)EBp|3Vf;%?E}d?V8x$swnxuFhtJ>EQlc=upowfz=90&0dKa= zk)e7R-dFR+GdwkDhYxu8z^|462`~VMhV18mi%}8)0000< KMNUMnLSTZewr+U< diff --git a/toolkit/themes/osx/mozapps/update/updates.css b/toolkit/themes/osx/mozapps/update/updates.css deleted file mode 100644 index 9bd78ef6f..000000000 --- a/toolkit/themes/osx/mozapps/update/updates.css +++ /dev/null @@ -1,171 +0,0 @@ -%include ../../global/shared.inc - -/* General */ -/* Specify the size for the wizardpage so the billboard has a fixed size. 3rd - party themes should typically specify the same values. */ -wizardpage { - height: 360px; - width: 700px; -} - -/* Remove margin and padding so the billboard will extend to the edge of the - window. 3rd party themes should typically specify the same values. */ -#updates, .wizard-page-box { - margin: 0; - padding: 0; -} - -.update-content { - padding: 6px 12px 12px 12px; -} - -.wizard-header-box-text { - padding: 0; -} - -.wizard-header { - margin: 12px 12px 0 12px; -} - -.wizard-buttons-btm { - padding: 15px 12px; -} - -/* Don't use top margin - it can cause a scrollbar on some pages */ -.wizard-buttons { - padding: 0; - -moz-appearance: statusbar; - -moz-window-dragging: drag; -} - -.wizard-buttons button { - -moz-appearance: toolbarbutton; - color: ButtonText; - min-height: 22px; - margin: 0 6px; - padding: 0; - text-shadow: @loweredShadow@; -} - -#finishedBackgroundMore { - margin-bottom: 6px; -} - -.inline-link { - color: -moz-nativehyperlinktext; - text-decoration: none; -} - -.inline-link:hover { - text-decoration: underline; -} - -/* Unsupported Page */ -#unsupportedLabel, #unsupportedLinkLabel { - margin-inline-start: 0; - padding-inline-start: 0; -} - -/* Update Found Basic Page */ -#updateName, #updateFinishedName { - font-weight: bold; - font-size: larger; -} - -/* Downloading Page */ -#downloadStatusLine { - -moz-box-align: center; -} - -#downloadStatus { - height: 3em !important; -} - -#downloadStatusProgress { - padding-right: 5px; -} - -#pauseButton { - list-style-image: url(chrome://mozapps/skin/update/buttons.png); - -moz-image-region: rect(48px, 16px, 64px, 0px); - -moz-appearance: none; - background-color: transparent; - border: none; - min-height: 16px; - min-width: 16px; - max-height: 16px; - max-width: 16px; - margin: 0 1px 0 1px; - padding: 0; -} - -/* !Important must be used otherwise this won't immediately take affect */ -#pauseButton > .button-box { - padding: 0 !important; -} - -#pauseButton:hover { - -moz-image-region: rect(48px, 32px, 64px, 16px); -} - -#pauseButton:not([disabled="true"]):hover:active { - -moz-image-region: rect(48px, 48px, 64px, 32px); -} - -#pauseButton[disabled="true"] { - -moz-image-region: rect(48px, 16px, 64px, 0px); -} - -#pauseButton[paused="true"] { - -moz-image-region: rect(16px, 16px, 32px, 0px); -} - -#pauseButton[paused="true"]:hover { - -moz-image-region: rect(16px, 32px, 32px, 16px); -} - -#pauseButton[paused="true"]:hover:active { - -moz-image-region: rect(16px, 48px, 32px, 32px); -} - -#verificationFailedIcon { - margin-left: 5px; - list-style-image: url("chrome://global/skin/icons/notfound.png"); -} - -/* Error Page */ -#errorReason { - margin-top: 1px; - margin-bottom: 2px; - margin-inline-start: 6px !important; - margin-inline-end: 5px; - font-weight: bold; -} - -/* Update History Window */ -update { - border-bottom: 1px dotted #C0C0C0; -} - -.update-name { - font-weight: bold; -} - -.update-label-column { - -moz-box-align: end; -} - -.update-type { - font-weight: bold; - color: #990000; -} - -#historyItems { - -moz-appearance: listbox; - height: 200px; - margin: 1px 5px 4px 5px; -} - -#historyItems > scrollbox { - margin-bottom: 1px; -} diff --git a/toolkit/themes/osx/mozapps/viewsource/viewsource.css b/toolkit/themes/osx/mozapps/viewsource/viewsource.css deleted file mode 100644 index 76c7d00b9..000000000 --- a/toolkit/themes/osx/mozapps/viewsource/viewsource.css +++ /dev/null @@ -1,5 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* This is for styling the menus of the viewsource window */ diff --git a/toolkit/themes/osx/reftests/482681-ref.xul b/toolkit/themes/osx/reftests/482681-ref.xul deleted file mode 100644 index 62fb4bb8d..000000000 --- a/toolkit/themes/osx/reftests/482681-ref.xul +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/toolkit/themes/osx/reftests/482681.xul b/toolkit/themes/osx/reftests/482681.xul deleted file mode 100644 index 6cb9aaeae..000000000 --- a/toolkit/themes/osx/reftests/482681.xul +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -