Merge m-c to cedar
authorJames Graham <james@hoppipolla.co.uk>
Tue, 16 Jun 2015 15:26:48 +0100
changeset 326818 6ac143d21a2117ebc4fd0f2ab730d497a8b9ef76
parent 326817 993b76cc659ddcc235d342e489260703de797e63 (current diff)
parent 272656 95b628befd287933e2098988e49c564a17c999dc (diff)
child 326819 508624b2e1b57b0dc327608b21146c5075888339
push id10169
push userdminor@mozilla.com
push dateThu, 28 Jan 2016 13:10:48 +0000
milestone41.0a1
Merge m-c to cedar
CLOBBER
addon-sdk/source/bin/node-scripts/test.firefox-bin.js
addon-sdk/source/lib/sdk/content/sandbox/events.js
addon-sdk/source/test/addons/require/list.js
addon-sdk/source/test/fixtures/test-addon-extras-window.html
addon-sdk/source/test/fixtures/test-addon-extras.html
addon-sdk/source/test/loader/user-global.js
addon-sdk/source/test/test-addon-extras.js
browser/base/content/browser-pocket-de.properties
browser/base/content/browser-pocket-en-US.properties
browser/base/content/browser-pocket-es-ES.properties
browser/base/content/browser-pocket-ja.properties
browser/base/content/browser-pocket-ru.properties
browser/base/content/browser-pocket.dtd
browser/base/content/test/general/browser_bug771331.js
browser/components/downloads/DownloadsLogger.jsm
browser/components/places/tests/chrome/chrome.ini
browser/components/pocket/panels/js/dictionary.js
browser/devtools/animationinspector/test/browser_animation_timeline_animates.js
browser/devtools/animationinspector/test/browser_animation_timeline_is_enabled.js
browser/devtools/animationinspector/test/browser_animation_timeline_waits_for_delay.js
browser/devtools/performance/test/browser_marker-utils.js
browser/devtools/performance/test/browser_timeline-blueprint.js
browser/devtools/performance/test/browser_timeline-filters.js
browser/devtools/webide/test/chrome.ini
browser/themes/linux/Secure.png
browser/themes/linux/webRTC-shareDevice-16.png
browser/themes/linux/webRTC-shareDevice-64.png
browser/themes/linux/webRTC-shareMicrophone-16.png
browser/themes/linux/webRTC-shareMicrophone-64.png
browser/themes/osx/Secure-Glyph.png
browser/themes/osx/Secure-Glyph@2x.png
browser/themes/osx/webRTC-shareDevice-16.png
browser/themes/osx/webRTC-shareDevice-16@2x.png
browser/themes/osx/webRTC-shareDevice-64.png
browser/themes/osx/webRTC-shareDevice-64@2x.png
browser/themes/osx/webRTC-shareMicrophone-16.png
browser/themes/osx/webRTC-shareMicrophone-16@2x.png
browser/themes/osx/webRTC-shareMicrophone-64.png
browser/themes/osx/webRTC-shareMicrophone-64@2x.png
browser/themes/shared/devtools/images/webconsole.png
browser/themes/shared/devtools/images/webconsole@2x.png
browser/themes/windows/Secure24-XP.png
browser/themes/windows/Secure24.png
browser/themes/windows/webRTC-shareDevice-16.png
browser/themes/windows/webRTC-shareDevice-64.png
browser/themes/windows/webRTC-shareMicrophone-16.png
browser/themes/windows/webRTC-shareMicrophone-64.png
build/pgo/certs/bug483440-attack2b.ca
build/pgo/certs/bug483440-attack7.ca
build/pgo/certs/bug483440-pk10oflo.ca
dom/base/test/TestCSPParser.cpp
dom/base/test/chrome.ini
dom/base/test/chrome/chrome.ini
dom/base/test/csp/browser.ini
dom/base/test/csp/browser_test_web_manifest.js
dom/base/test/csp/browser_test_web_manifest_mixed_content.js
dom/base/test/csp/chrome.ini
dom/base/test/csp/file_CSP.css
dom/base/test/csp/file_CSP.sjs
dom/base/test/csp/file_CSP_bug663567.xsl
dom/base/test/csp/file_CSP_bug663567_allows.xml
dom/base/test/csp/file_CSP_bug663567_allows.xml^headers^
dom/base/test/csp/file_CSP_bug663567_blocks.xml
dom/base/test/csp/file_CSP_bug663567_blocks.xml^headers^
dom/base/test/csp/file_CSP_bug802872.html
dom/base/test/csp/file_CSP_bug802872.html^headers^
dom/base/test/csp/file_CSP_bug802872.js
dom/base/test/csp/file_CSP_bug802872.sjs
dom/base/test/csp/file_CSP_bug885433_allows.html
dom/base/test/csp/file_CSP_bug885433_allows.html^headers^
dom/base/test/csp/file_CSP_bug885433_blocks.html
dom/base/test/csp/file_CSP_bug885433_blocks.html^headers^
dom/base/test/csp/file_CSP_bug888172.html
dom/base/test/csp/file_CSP_bug888172.sjs
dom/base/test/csp/file_CSP_bug909029_none.html
dom/base/test/csp/file_CSP_bug909029_none.html^headers^
dom/base/test/csp/file_CSP_bug909029_star.html
dom/base/test/csp/file_CSP_bug909029_star.html^headers^
dom/base/test/csp/file_CSP_bug910139.sjs
dom/base/test/csp/file_CSP_bug910139.xml
dom/base/test/csp/file_CSP_bug910139.xsl
dom/base/test/csp/file_CSP_bug941404.html
dom/base/test/csp/file_CSP_bug941404_xhr.html
dom/base/test/csp/file_CSP_bug941404_xhr.html^headers^
dom/base/test/csp/file_CSP_evalscript_main.html
dom/base/test/csp/file_CSP_evalscript_main.html^headers^
dom/base/test/csp/file_CSP_evalscript_main.js
dom/base/test/csp/file_CSP_evalscript_main_allowed.html
dom/base/test/csp/file_CSP_evalscript_main_allowed.html^headers^
dom/base/test/csp/file_CSP_evalscript_main_allowed.js
dom/base/test/csp/file_CSP_frameancestors.sjs
dom/base/test/csp/file_CSP_frameancestors_main.html
dom/base/test/csp/file_CSP_frameancestors_main.js
dom/base/test/csp/file_CSP_inlinescript_main.html
dom/base/test/csp/file_CSP_inlinescript_main.html^headers^
dom/base/test/csp/file_CSP_inlinescript_main_allowed.html
dom/base/test/csp/file_CSP_inlinescript_main_allowed.html^headers^
dom/base/test/csp/file_CSP_inlinestyle_main.html
dom/base/test/csp/file_CSP_inlinestyle_main.html^headers^
dom/base/test/csp/file_CSP_inlinestyle_main_allowed.html
dom/base/test/csp/file_CSP_inlinestyle_main_allowed.html^headers^
dom/base/test/csp/file_CSP_main.html
dom/base/test/csp/file_CSP_main.html^headers^
dom/base/test/csp/file_CSP_main.js
dom/base/test/csp/file_CSP_web_manifest.html
dom/base/test/csp/file_CSP_web_manifest.json
dom/base/test/csp/file_CSP_web_manifest.json^headers^
dom/base/test/csp/file_CSP_web_manifest_https.html
dom/base/test/csp/file_CSP_web_manifest_https.json
dom/base/test/csp/file_CSP_web_manifest_mixed_content.html
dom/base/test/csp/file_CSP_web_manifest_remote.html
dom/base/test/csp/file_base-uri.html
dom/base/test/csp/file_blob_data_schemes.html
dom/base/test/csp/file_bug836922_npolicies.html
dom/base/test/csp/file_bug836922_npolicies.html^headers^
dom/base/test/csp/file_bug836922_npolicies_ro_violation.sjs
dom/base/test/csp/file_bug836922_npolicies_violation.sjs
dom/base/test/csp/file_bug886164.html
dom/base/test/csp/file_bug886164.html^headers^
dom/base/test/csp/file_bug886164_2.html
dom/base/test/csp/file_bug886164_2.html^headers^
dom/base/test/csp/file_bug886164_3.html
dom/base/test/csp/file_bug886164_3.html^headers^
dom/base/test/csp/file_bug886164_4.html
dom/base/test/csp/file_bug886164_4.html^headers^
dom/base/test/csp/file_bug886164_5.html
dom/base/test/csp/file_bug886164_5.html^headers^
dom/base/test/csp/file_bug886164_6.html
dom/base/test/csp/file_bug886164_6.html^headers^
dom/base/test/csp/file_connect-src-fetch.html
dom/base/test/csp/file_connect-src.html
dom/base/test/csp/file_csp_allow_https_schemes.html
dom/base/test/csp/file_csp_bug768029.html
dom/base/test/csp/file_csp_bug768029.sjs
dom/base/test/csp/file_csp_bug773891.html
dom/base/test/csp/file_csp_bug773891.sjs
dom/base/test/csp/file_csp_invalid_source_expression.html
dom/base/test/csp/file_csp_path_matching.html
dom/base/test/csp/file_csp_path_matching.js
dom/base/test/csp/file_csp_path_matching_incl_query.html
dom/base/test/csp/file_csp_path_matching_redirect.html
dom/base/test/csp/file_csp_path_matching_redirect_server.sjs
dom/base/test/csp/file_csp_redirects_main.html
dom/base/test/csp/file_csp_redirects_page.sjs
dom/base/test/csp/file_csp_redirects_resource.sjs
dom/base/test/csp/file_csp_referrerdirective.html
dom/base/test/csp/file_csp_report.html
dom/base/test/csp/file_csp_testserver.sjs
dom/base/test/csp/file_dual_header_testserver.sjs
dom/base/test/csp/file_form-action.html
dom/base/test/csp/file_hash_source.html
dom/base/test/csp/file_hash_source.html^headers^
dom/base/test/csp/file_ignore_unsafe_inline.html
dom/base/test/csp/file_leading_wildcard.html
dom/base/test/csp/file_multi_policy_injection_bypass.html
dom/base/test/csp/file_multi_policy_injection_bypass.html^headers^
dom/base/test/csp/file_multi_policy_injection_bypass_2.html
dom/base/test/csp/file_multi_policy_injection_bypass_2.html^headers^
dom/base/test/csp/file_nonce_source.html
dom/base/test/csp/file_nonce_source.html^headers^
dom/base/test/csp/file_null_baseuri.html
dom/base/test/csp/file_policyuri_regression_from_multipolicy.html
dom/base/test/csp/file_policyuri_regression_from_multipolicy.html^headers^
dom/base/test/csp/file_policyuri_regression_from_multipolicy_policy
dom/base/test/csp/file_redirect_content.sjs
dom/base/test/csp/file_redirect_report.sjs
dom/base/test/csp/file_report_uri_missing_in_report_only_header.html
dom/base/test/csp/file_report_uri_missing_in_report_only_header.html^headers^
dom/base/test/csp/file_scheme_relative_sources.js
dom/base/test/csp/file_scheme_relative_sources.sjs
dom/base/test/csp/file_self_none_as_hostname_confusion.html
dom/base/test/csp/file_self_none_as_hostname_confusion.html^headers^
dom/base/test/csp/file_subframe_run_js_if_allowed.html
dom/base/test/csp/file_subframe_run_js_if_allowed.html^headers^
dom/base/test/csp/file_worker_redirect.html
dom/base/test/csp/file_worker_redirect.sjs
dom/base/test/csp/mochitest.ini
dom/base/test/csp/referrerdirective.sjs
dom/base/test/csp/test_301_redirect.html
dom/base/test/csp/test_302_redirect.html
dom/base/test/csp/test_303_redirect.html
dom/base/test/csp/test_307_redirect.html
dom/base/test/csp/test_CSP.html
dom/base/test/csp/test_CSP_bug663567.html
dom/base/test/csp/test_CSP_bug802872.html
dom/base/test/csp/test_CSP_bug885433.html
dom/base/test/csp/test_CSP_bug888172.html
dom/base/test/csp/test_CSP_bug909029.html
dom/base/test/csp/test_CSP_bug910139.html
dom/base/test/csp/test_CSP_bug941404.html
dom/base/test/csp/test_CSP_evalscript.html
dom/base/test/csp/test_CSP_frameancestors.html
dom/base/test/csp/test_CSP_inlinescript.html
dom/base/test/csp/test_CSP_inlinestyle.html
dom/base/test/csp/test_CSP_referrerdirective.html
dom/base/test/csp/test_base-uri.html
dom/base/test/csp/test_blob_data_schemes.html
dom/base/test/csp/test_bug836922_npolicies.html
dom/base/test/csp/test_bug886164.html
dom/base/test/csp/test_bug949549.html
dom/base/test/csp/test_connect-src.html
dom/base/test/csp/test_csp_allow_https_schemes.html
dom/base/test/csp/test_csp_bug768029.html
dom/base/test/csp/test_csp_bug773891.html
dom/base/test/csp/test_csp_invalid_source_expression.html
dom/base/test/csp/test_csp_path_matching.html
dom/base/test/csp/test_csp_path_matching_redirect.html
dom/base/test/csp/test_csp_redirects.html
dom/base/test/csp/test_csp_report.html
dom/base/test/csp/test_dual_header.html
dom/base/test/csp/test_form-action.html
dom/base/test/csp/test_hash_source.html
dom/base/test/csp/test_ignore_unsafe_inline.html
dom/base/test/csp/test_leading_wildcard.html
dom/base/test/csp/test_multi_policy_injection_bypass.html
dom/base/test/csp/test_nonce_source.html
dom/base/test/csp/test_null_baseuri.html
dom/base/test/csp/test_policyuri_regression_from_multipolicy.html
dom/base/test/csp/test_report_uri_missing_in_report_only_header.html
dom/base/test/csp/test_scheme_relative_sources.html
dom/base/test/csp/test_self_none_as_hostname_confusion.html
dom/base/test/csp/test_subframe_run_js_if_allowed.html
dom/base/test/csp/test_worker_redirect.html
dom/base/test/file_CrossSiteXHR_cache_server.sjs
dom/base/test/file_CrossSiteXHR_inner.html
dom/base/test/file_CrossSiteXHR_inner.jar
dom/base/test/file_CrossSiteXHR_inner_data.sjs
dom/base/test/file_CrossSiteXHR_server.sjs
dom/base/test/mixedcontentblocker/bug803225_test_mailto.html
dom/base/test/mixedcontentblocker/file_mixed_content_frameNavigation.html
dom/base/test/mixedcontentblocker/file_mixed_content_frameNavigation_blankTarget.html
dom/base/test/mixedcontentblocker/file_mixed_content_frameNavigation_grandchild.html
dom/base/test/mixedcontentblocker/file_mixed_content_frameNavigation_innermost.html
dom/base/test/mixedcontentblocker/file_mixed_content_frameNavigation_secure.html
dom/base/test/mixedcontentblocker/file_mixed_content_frameNavigation_secure_grandchild.html
dom/base/test/mixedcontentblocker/file_mixed_content_main.html
dom/base/test/mixedcontentblocker/file_mixed_content_main_bug803225.html
dom/base/test/mixedcontentblocker/file_mixed_content_main_bug803225_websocket_wsh.py
dom/base/test/mixedcontentblocker/file_mixed_content_server.sjs
dom/base/test/mixedcontentblocker/mochitest.ini
dom/base/test/mixedcontentblocker/test_mixed_content_blocker.html
dom/base/test/mixedcontentblocker/test_mixed_content_blocker_bug803225.html
dom/base/test/mixedcontentblocker/test_mixed_content_blocker_frameNavigation.html
dom/base/test/test_CrossSiteXHR.html
dom/base/test/test_CrossSiteXHR_cache.html
dom/base/test/test_CrossSiteXHR_origin.html
dom/base/test/unit/test_cspreports.js
dom/bluetooth/BluetoothCommon.h
dom/bluetooth/BluetoothUtils.cpp
dom/bluetooth/BluetoothUtils.h
dom/canvas/WebGLBindableName.h
dom/events/test/chrome.ini
dom/indexedDB/test/dummy_worker.js
dom/inputmethod/mochitest/file_test_contenteditable.html
dom/media/test/bipbop-cenc1-audio1.m4s
dom/media/test/bipbop-cenc1-audio2.m4s
dom/media/test/bipbop-cenc1-audio3.m4s
dom/media/test/bipbop-cenc1-audioinit.mp4
dom/media/test/bipbop-cenc1-video1.m4s
dom/media/test/bipbop-cenc1-video2.m4s
dom/media/test/bipbop-cenc1-videoinit.mp4
dom/media/test/bipbop-frag-cenc-audio.xml
dom/media/test/bipbop-frag-cenc-video.xml
dom/media/test/contentDuration1.sjs
dom/media/test/contentDuration2.sjs
dom/media/test/contentDuration3.sjs
dom/media/test/contentDuration4.sjs
dom/media/test/contentDuration5.sjs
dom/media/test/contentDuration6.sjs
dom/media/test/contentDuration7.sjs
dom/media/test/noContentLength.sjs
dom/media/test/test_contentDuration1.html
dom/media/test/test_contentDuration2.html
dom/media/test/test_contentDuration3.html
dom/media/test/test_contentDuration4.html
dom/media/test/test_contentDuration5.html
dom/media/test/test_contentDuration6.html
dom/media/test/test_contentDuration7.html
dom/media/test/test_eme_stream_capture_blocked.html
dom/media/test/test_seekable2.html
dom/media/test/test_seekable3.html
dom/security/test/csp/chrome.ini
dom/security/test/csp/file_bug886164.html
dom/security/test/csp/file_bug886164.html^headers^
dom/security/test/csp/file_bug886164_2.html
dom/security/test/csp/file_bug886164_2.html^headers^
dom/security/test/csp/file_bug886164_3.html
dom/security/test/csp/file_bug886164_3.html^headers^
dom/security/test/csp/file_bug886164_4.html
dom/security/test/csp/file_bug886164_4.html^headers^
dom/security/test/csp/file_bug886164_5.html
dom/security/test/csp/file_bug886164_5.html^headers^
dom/security/test/csp/file_bug886164_6.html
dom/security/test/csp/file_bug886164_6.html^headers^
dom/tests/mochitest/chrome/chrome.ini
dom/tests/mochitest/chrome/fullscreen_preventdefault.xul
dom/tests/mochitest/chrome/test_fullscreen_preventdefault.xul
dom/webidl/SystemDictionaries.webidl
ipc/bluetooth/BluetoothDaemonConnection.cpp
ipc/bluetooth/BluetoothDaemonConnection.h
ipc/bluetooth/BluetoothDaemonConnectionConsumer.cpp
ipc/bluetooth/BluetoothDaemonConnectionConsumer.h
ipc/bluetooth/moz.build
ipc/chromium/src/base/third_party/purify/pure.h
ipc/chromium/src/base/third_party/purify/pure_api.c
js/src/jit/BaselineHelpers.h
js/src/jit/BaselineRegisters.h
js/src/jit/arm/BaselineHelpers-arm.h
js/src/jit/arm/BaselineRegisters-arm.h
js/src/jit/mips/BaselineHelpers-mips.h
js/src/jit/mips/BaselineRegisters-mips.h
js/src/jit/none/BaselineHelpers-none.h
js/src/jit/none/BaselineRegisters-none.h
js/src/jit/x64/BaselineHelpers-x64.h
js/src/jit/x64/BaselineRegisters-x64.h
js/src/jit/x86/BaselineHelpers-x86.h
js/src/jit/x86/BaselineRegisters-x86.h
layout/mathml/MathJaxFonts.html
layout/mathml/mathfontMathJax_Main.properties
layout/mathml/mathfontStandardSymbolsL.properties
layout/style/test/chrome/chrome.ini
layout/xul/test/chrome.ini
media/libstagefright/binding/MP3TrackDemuxer.cpp
media/libstagefright/binding/include/mp4_demuxer/MP3TrackDemuxer.h
mobile/android/base/fennec-ids-generator.py
mobile/android/base/resources/drawable-hdpi/onboard_start_addon.png
mobile/android/base/resources/drawable-hdpi/onboard_start_private.png
mobile/android/base/resources/drawable-hdpi/onboard_start_shield.png
mobile/android/base/resources/drawable-hdpi/onboard_start_sync.png
mobile/android/base/resources/drawable-mdpi/onboard_start_addon.png
mobile/android/base/resources/drawable-mdpi/onboard_start_private.png
mobile/android/base/resources/drawable-mdpi/onboard_start_shield.png
mobile/android/base/resources/drawable-mdpi/onboard_start_sync.png
mobile/android/base/resources/drawable-xhdpi/onboard_start_addon.png
mobile/android/base/resources/drawable-xhdpi/onboard_start_private.png
mobile/android/base/resources/drawable-xhdpi/onboard_start_shield.png
mobile/android/base/resources/drawable-xhdpi/onboard_start_sync.png
mobile/android/base/resources/drawable-xxhdpi/onboard_start_addon.png
mobile/android/base/resources/drawable-xxhdpi/onboard_start_private.png
mobile/android/base/resources/drawable-xxhdpi/onboard_start_shield.png
mobile/android/base/resources/drawable-xxhdpi/onboard_start_sync.png
mobile/android/chrome/content/aboutPasswords.js
mobile/android/chrome/content/aboutPasswords.xhtml
mobile/android/locales/en-US/chrome/aboutPasswords.dtd
mobile/android/locales/en-US/chrome/aboutPasswords.properties
mobile/android/tests/browser/junit3/src/BrowserTestCase.java
mobile/android/tests/browser/junit3/src/TestDistribution.java
mobile/android/tests/browser/junit3/src/TestGeckoBackgroundThread.java
mobile/android/tests/browser/junit3/src/TestGeckoMenu.java
mobile/android/tests/browser/junit3/src/TestGeckoProfilesProvider.java
mobile/android/tests/browser/junit3/src/TestGeckoSharedPrefs.java
mobile/android/tests/browser/junit3/src/TestImageDownloader.java
mobile/android/tests/browser/junit3/src/TestJarReader.java
mobile/android/tests/browser/junit3/src/TestRawResource.java
mobile/android/tests/browser/junit3/src/TestSuggestedSites.java
mobile/android/tests/browser/junit3/src/TestTopSitesCursorWrapper.java
mobile/android/tests/browser/junit3/src/harness/BrowserInstrumentationTestRunner.java
mobile/android/tests/browser/junit3/src/harness/BrowserTestListener.java
mobile/android/tests/browser/robocop/testAboutPasswords.java
mobile/android/tests/browser/robocop/testAboutPasswords.js
mobile/android/themes/core/aboutPasswords.css
netwerk/protocol/websocket/WebSocketChannel.cpp
netwerk/test/TestSTSParser.cpp
security/manager/ssl/tests/mochitest/bugs/test_bug483440.html
security/manager/ssl/tests/unit/test_cert_eku/ca.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_EP_NS_OS_SA_TS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_NS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_OS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_SA-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-CA_TS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_NS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_OS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_SA-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-EP_TS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NONE-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_OS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_SA-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-NS_TS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_SA-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-OS_TS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-SA_TS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/ee-EKU-TS-int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-CA.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-CA_EP.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-CA_EP_NS_OS_SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-CA_NS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-CA_OS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-CA_SA.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-CA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-EP.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-EP_NS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-EP_OS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-EP_SA.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-EP_TS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-NONE.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-NS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-NS_OS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-NS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-NS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-OS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-OS_SA.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-OS_TS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-SA.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-SA_TS.der
security/manager/ssl/tests/unit/test_cert_eku/int-EKU-TS.der
security/manager/ssl/tests/unit/test_cert_trust/ca.der
security/manager/ssl/tests/unit/test_cert_trust/ee.der
security/manager/ssl/tests/unit/test_cert_trust/generate.py
security/manager/ssl/tests/unit/test_cert_trust/int.der
security/sandbox/linux/SandboxAssembler.cpp
security/sandbox/linux/SandboxAssembler.h
testing/mozharness/mozharness.json
testing/taskcluster/scripts/phone-builder/build-spark-ota.sh
testing/taskcluster/scripts/phone-builder/build-spark.sh
testing/web-platform/meta/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html.ini
testing/web-platform/meta/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html.ini
testing/web-platform/meta/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html.ini
testing/web-platform/meta/2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html.ini
testing/web-platform/meta/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html.ini
testing/web-platform/meta/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html.ini
testing/web-platform/meta/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.arc.selfintersect.1.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.arc.shape.3.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.arcTo.shape.curve1.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.arcTo.shape.curve2.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.rect.selfintersect.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.rect.zero.6.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.stroke.prune.arc.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.stroke.prune.closed.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.stroke.prune.curve.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.stroke.prune.line.html.ini
testing/web-platform/meta/2dcontext/path-objects/2d.path.stroke.prune.rect.html.ini
testing/web-platform/meta/2dcontext/shadows/2d.shadow.enable.blur.html.ini
testing/web-platform/meta/2dcontext/shadows/2d.shadow.enable.x.html.ini
testing/web-platform/meta/2dcontext/shadows/2d.shadow.enable.y.html.ini
testing/web-platform/meta/IndexedDB/idbcursor_delete_index4.htm.ini
testing/web-platform/meta/IndexedDB/idbcursor_delete_objectstore4.htm.ini
testing/web-platform/meta/IndexedDB/idbcursor_delete_objectstore5.htm.ini
testing/web-platform/meta/IndexedDB/idbcursor_update_index4.htm.ini
testing/web-platform/meta/IndexedDB/idbcursor_update_objectstore5.htm.ini
testing/web-platform/meta/IndexedDB/idbfactory_open2.htm.ini
testing/web-platform/meta/IndexedDB/idbindex_get6.htm.ini
testing/web-platform/meta/IndexedDB/idbindex_getKey6.htm.ini
testing/web-platform/meta/IndexedDB/idbindex_openCursor.htm.ini
testing/web-platform/meta/IndexedDB/idbindex_openKeyCursor2.htm.ini
testing/web-platform/meta/IndexedDB/idbobjectstore_deleted.htm.ini
testing/web-platform/meta/MANIFEST.json
testing/web-platform/meta/content-security-policy/media-src/media-src-7_1.html.ini
testing/web-platform/meta/content-security-policy/media-src/media-src-7_3_2.html.ini
testing/web-platform/meta/fetch/nosniff/image.html.ini
testing/web-platform/meta/html/dom/reflection-forms.html.ini
testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html.ini
testing/web-platform/meta/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini
testing/web-platform/meta/html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html.ini
testing/web-platform/meta/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-nested.html.ini
testing/web-platform/meta/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-wrapped.html.ini
testing/web-platform/meta/media-source/SourceBuffer-abort-readyState.html.ini
testing/web-platform/meta/media-source/SourceBuffer-abort-removed.html.ini
testing/web-platform/meta/media-source/SourceBuffer-abort-updating.html.ini
testing/web-platform/meta/media-source/SourceBuffer-abort.html.ini
testing/web-platform/meta/media-source/mediasource-is-type-supported.html.ini
testing/web-platform/meta/media-source/mediasource-redundant-seek.html.ini
testing/web-platform/meta/media-source/mediasource-remove.html.ini
testing/web-platform/meta/navigation-timing/test_navigation_type_reload.html.ini
testing/web-platform/meta/quirks-mode/hashless-hex-color.html.ini
testing/web-platform/meta/quirks-mode/percentage-height-calculation.html.ini
testing/web-platform/meta/url/a-element.xhtml.ini
testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html.ini
testing/web-platform/meta/workers/interfaces/WorkerGlobalScope/close/setTimeout.html.ini
testing/web-platform/tests/webaudio/the-audio-api/the-gainnode-interface/test.html
toolkit/components/passwordmgr/test/chrome.ini
toolkit/components/url-classifier/tests/mochitest/chrome.ini
toolkit/content/tests/chrome/chrome.ini
toolkit/devtools/server/actors/utils/memory-bridge.js
toolkit/devtools/server/tests/unit/test_promises_actor_onpromisesettled.js
toolkit/devtools/webconsole/test/chrome.ini
toolkit/mozapps/update/tests/chrome/chrome.ini
xpcom/base/pure.h
xpcom/base/pure_api.c
xpcom/glue/nsTHashtable.cpp
--- a/CLOBBER
+++ b/CLOBBER
@@ -17,9 +17,9 @@
 #
 # Modifying this file will now automatically clobber the buildbot machines \o/
 #
 
 # Are you updating CLOBBER because you think it's needed for your WebIDL
 # changes to stick? As of bug 928195, this shouldn't be necessary! Please
 # don't change CLOBBER for WebIDL changes any more.
 
-Bug 1165422 - Updated the Android SDK versions
+Bug 1167064: Switch to bluetooth APIv2.
--- a/accessible/atk/AccessibleWrap.cpp
+++ b/accessible/atk/AccessibleWrap.cpp
@@ -6,16 +6,17 @@
 
 #include "AccessibleWrap.h"
 
 #include "Accessible-inl.h"
 #include "ApplicationAccessibleWrap.h"
 #include "InterfaceInitFuncs.h"
 #include "nsAccUtils.h"
 #include "mozilla/a11y/PDocAccessible.h"
+#include "OuterDocAccessible.h"
 #include "ProxyAccessible.h"
 #include "RootAccessible.h"
 #include "nsMai.h"
 #include "nsMaiHyperlink.h"
 #include "nsString.h"
 #include "nsAutoPtr.h"
 #include "prprf.h"
 #include "nsStateMap.h"
@@ -91,17 +92,17 @@ static GType GetAtkTypeForMai(MaiInterfa
     case MAI_INTERFACE_DOCUMENT:
       return ATK_TYPE_DOCUMENT;
     case MAI_INTERFACE_IMAGE:
       return ATK_TYPE_IMAGE;
   }
   return G_TYPE_INVALID;
 }
 
-static const char* kNonUserInputEvent = ":system";
+#define NON_USER_EVENT ":system"
     
 static const GInterfaceInfo atk_if_infos[] = {
     {(GInterfaceInitFunc)componentInterfaceInitCB,
      (GInterfaceFinalizeFunc) nullptr, nullptr}, 
     {(GInterfaceInitFunc)actionInterfaceInitCB,
      (GInterfaceFinalizeFunc) nullptr, nullptr},
     {(GInterfaceInitFunc)valueInterfaceInitCB,
      (GInterfaceFinalizeFunc) nullptr, nullptr},
@@ -795,21 +796,26 @@ getParentCB(AtkObject *aAtkObj)
     return aAtkObj->accessible_parent;
 
   AtkObject* atkParent = nullptr;
   if (AccessibleWrap* wrapper = GetAccessibleWrap(aAtkObj)) {
     Accessible* parent = wrapper->Parent();
     atkParent = parent ? AccessibleWrap::GetAtkObject(parent) : nullptr;
   } else if (ProxyAccessible* proxy = GetProxy(aAtkObj)) {
     ProxyAccessible* parent = proxy->Parent();
-    if (parent)
+    if (parent) {
       atkParent = GetWrapperFor(parent);
-
-    // Otherwise this should be the proxy for the tab's top level document.
-    atkParent = AccessibleWrap::GetAtkObject(proxy->OuterDocOfRemoteBrowser());
+    } else {
+      // Otherwise this should be the proxy for the tab's top level document.
+      Accessible* outerDocParent = proxy->OuterDocOfRemoteBrowser();
+      NS_ASSERTION(outerDocParent, "this document should have an outerDoc as a parent");
+      if (outerDocParent) {
+        atkParent = AccessibleWrap::GetAtkObject(outerDocParent);
+      }
+    }
   }
 
   if (atkParent)
     atk_object_set_parent(aAtkObj, atkParent);
 
   return aAtkObj->accessible_parent;
 }
 
@@ -822,36 +828,55 @@ getChildCountCB(AtkObject *aAtkObj)
     }
 
     return static_cast<gint>(accWrap->EmbeddedChildCount());
 }
 
 AtkObject *
 refChildCB(AtkObject *aAtkObj, gint aChildIndex)
 {
-    // aChildIndex should not be less than zero
-    if (aChildIndex < 0) {
+  // aChildIndex should not be less than zero
+  if (aChildIndex < 0) {
+    return nullptr;
+  }
+
+  AtkObject* childAtkObj = nullptr;
+  AccessibleWrap* accWrap = GetAccessibleWrap(aAtkObj);
+  if (accWrap) {
+    if (nsAccUtils::MustPrune(accWrap)) {
       return nullptr;
     }
 
-    AccessibleWrap* accWrap = GetAccessibleWrap(aAtkObj);
-    if (!accWrap || nsAccUtils::MustPrune(accWrap)) {
-        return nullptr;
+    Accessible* accChild = accWrap->GetEmbeddedChildAt(aChildIndex);
+    if (accChild) {
+      childAtkObj = AccessibleWrap::GetAtkObject(accChild);
+    } else {
+      OuterDocAccessible* docOwner = accWrap->AsOuterDoc();
+      if (docOwner) {
+        ProxyAccessible* proxyDoc = docOwner->RemoteChildDoc();
+        if (proxyDoc)
+          childAtkObj = GetWrapperFor(proxyDoc);
+      }
     }
+  } else if (ProxyAccessible* proxy = GetProxy(aAtkObj)) {
+    if (proxy->MustPruneChildren())
+      return nullptr;
 
-    Accessible* accChild = accWrap->GetEmbeddedChildAt(aChildIndex);
-    if (!accChild)
-        return nullptr;
+    ProxyAccessible* child = proxy->EmbeddedChildAt(aChildIndex);
+    if (child)
+      childAtkObj = GetWrapperFor(child);
+  } else {
+    return nullptr;
+  }
 
-    AtkObject* childAtkObj = AccessibleWrap::GetAtkObject(accChild);
+  NS_ASSERTION(childAtkObj, "Fail to get AtkObj");
+  if (!childAtkObj)
+    return nullptr;
 
-    NS_ASSERTION(childAtkObj, "Fail to get AtkObj");
-    if (!childAtkObj)
-        return nullptr;
-    g_object_ref(childAtkObj);
+  g_object_ref(childAtkObj);
 
   if (aAtkObj != childAtkObj->accessible_parent)
     atk_object_set_parent(childAtkObj, aAtkObj);
 
   return childAtkObj;
 }
 
 gint
@@ -1425,63 +1450,81 @@ MaiAtkObject::FireStateChangeEvent(uint6
             // Fire state change for first state if there is one to map
             atk_object_notify_state_change(&parent,
                                            gAtkStateMap[stateIndex].atkState,
                                            aEnabled);
         }
     }
 }
 
+#define OLD_TEXT_INSERTED "text_changed::insert"
+#define OLD_TEXT_REMOVED "text_changed::delete"
+static const char* oldTextChangeStrings[2][2] = {
+  { OLD_TEXT_REMOVED NON_USER_EVENT, OLD_TEXT_INSERTED NON_USER_EVENT },
+  { OLD_TEXT_REMOVED, OLD_TEXT_INSERTED }
+};
+
+#define TEXT_INSERTED "text-insert"
+#define TEXT_REMOVED "text-remove"
+#define NON_USER_DETAIL "::system"
+static const char* textChangedStrings[2][2] = {
+  { TEXT_REMOVED NON_USER_DETAIL, TEXT_INSERTED NON_USER_DETAIL },
+  { TEXT_REMOVED, TEXT_INSERTED}
+};
+
 nsresult
 AccessibleWrap::FireAtkTextChangedEvent(AccEvent* aEvent,
                                         AtkObject* aObject)
 {
     AccTextChangeEvent* event = downcast_accEvent(aEvent);
     NS_ENSURE_TRUE(event, NS_ERROR_FAILURE);
 
     int32_t start = event->GetStartOffset();
     uint32_t length = event->GetLength();
     bool isInserted = event->IsTextInserted();
     bool isFromUserInput = aEvent->IsFromUserInput();
-    char* signal_name = nullptr;
 
   if (gAvailableAtkSignals == eUnknown)
     gAvailableAtkSignals =
       g_signal_lookup("text-insert", G_OBJECT_TYPE(aObject)) ?
         eHaveNewAtkTextSignals : eNoNewAtkSignals;
 
   if (gAvailableAtkSignals == eNoNewAtkSignals) {
     // XXX remove this code and the gHaveNewTextSignals check when we can
     // stop supporting old atk since it doesn't really work anyway
     // see bug 619002
-    signal_name = g_strconcat(isInserted ? "text_changed::insert" :
-                              "text_changed::delete",
-                              isFromUserInput ? "" : kNonUserInputEvent, nullptr);
+    const char* signal_name =
+      oldTextChangeStrings[isFromUserInput][isInserted];
     g_signal_emit_by_name(aObject, signal_name, start, length);
   } else {
     nsAutoString text;
     event->GetModifiedText(text);
-    signal_name = g_strconcat(isInserted ? "text-insert" : "text-remove",
-                              isFromUserInput ? "" : "::system", nullptr);
+    const char* signal_name =
+      textChangedStrings[isFromUserInput][isInserted];
     g_signal_emit_by_name(aObject, signal_name, start, length,
                           NS_ConvertUTF16toUTF8(text).get());
   }
 
-  g_free(signal_name);
   return NS_OK;
 }
 
+#define ADD_EVENT "children_changed::add"
+#define HIDE_EVENT "children_changed::remove"
+
+static const char *kMutationStrings[2][2] = {
+  { HIDE_EVENT NON_USER_EVENT, ADD_EVENT NON_USER_EVENT },
+  { HIDE_EVENT, ADD_EVENT },
+};
+
 nsresult
 AccessibleWrap::FireAtkShowHideEvent(AccEvent* aEvent,
                                      AtkObject* aObject, bool aIsAdded)
 {
     int32_t indexInParent = getIndexInParentCB(aObject);
     AtkObject *parentObject = getParentCB(aObject);
     NS_ENSURE_STATE(parentObject);
 
     bool isFromUserInput = aEvent->IsFromUserInput();
-    char *signal_name = g_strconcat(aIsAdded ? "children_changed::add" :  "children_changed::remove",
-                                    isFromUserInput ? "" : kNonUserInputEvent, nullptr);
+    const char *signal_name = kMutationStrings[isFromUserInput][aIsAdded];
     g_signal_emit_by_name(parentObject, signal_name, indexInParent, aObject, nullptr);
-    g_free(signal_name);
 
     return NS_OK;
 }
--- a/accessible/atk/nsMaiInterfaceText.cpp
+++ b/accessible/atk/nsMaiInterfaceText.cpp
@@ -27,23 +27,25 @@ ConvertTextAttributeToAtkAttribute(const
                                    const nsAString& aValue,
                                    AtkAttributeSet** aAttributeSet)
 {
   // Handle attributes where atk has its own name.
   const char* atkName = nullptr;
   nsAutoString atkValue;
   if (aName.EqualsLiteral("color")) {
     // The format of the atk attribute is r,g,b and the gecko one is
-    // rgb(r,g,b).
-    atkValue = Substring(aValue, 5, aValue.Length() - 1);
+    // rgb(r, g, b).
+    atkValue = Substring(aValue, 4, aValue.Length() - 5);
+    atkValue.StripWhitespace();
     atkName = sAtkTextAttrNames[ATK_TEXT_ATTR_FG_COLOR];
   } else if (aName.EqualsLiteral("background-color")) {
     // The format of the atk attribute is r,g,b and the gecko one is
-    // rgb(r,g,b).
-    atkValue = Substring(aValue, 5, aValue.Length() - 1);
+    // rgb(r, g, b).
+    atkValue = Substring(aValue, 4, aValue.Length() - 5);
+    atkValue.StripWhitespace();
     atkName = sAtkTextAttrNames[ATK_TEXT_ATTR_BG_COLOR];
   } else if (aName.EqualsLiteral("font-family")) {
     atkValue = aValue;
     atkName = sAtkTextAttrNames[ATK_TEXT_ATTR_FAMILY_NAME];
   } else if (aName.EqualsLiteral("font-size")) {
     // ATK wants the number of pixels without px at the end.
     atkValue = StringHead(aValue, aValue.Length() - 2);
     atkName = sAtkTextAttrNames[ATK_TEXT_ATTR_SIZE];
--- a/accessible/generic/Accessible.h
+++ b/accessible/generic/Accessible.h
@@ -33,16 +33,17 @@ class AccGroupInfo;
 class ApplicationAccessible;
 class DocAccessible;
 class EmbeddedObjCollector;
 class HTMLImageMapAccessible;
 class HTMLLIAccessible;
 class HyperTextAccessible;
 class ImageAccessible;
 class KeyBinding;
+class OuterDocAccessible;
 class ProxyAccessible;
 class Relation;
 class RootAccessible;
 class TableAccessible;
 class TableCellAccessible;
 class TextLeafAccessible;
 class XULLabelAccessible;
 class XULTreeAccessible;
@@ -614,16 +615,19 @@ public:
 
   bool IsProxy() const { return mType == eProxyType; }
   ProxyAccessible* Proxy() const
   {
     MOZ_ASSERT(IsProxy());
     return mBits.proxy;
   }
 
+  bool IsOuterDoc() const { return mType == eOuterDocType; }
+  OuterDocAccessible* AsOuterDoc();
+
   bool IsProgress() const { return mType == eProgressType; }
 
   bool IsRoot() const { return mType == eRootType; }
   a11y::RootAccessible* AsRoot();
 
   bool IsSearchbox() const;
 
   bool IsSelect() const { return HasGenericType(eSelect); }
--- a/accessible/generic/DocAccessible.cpp
+++ b/accessible/generic/DocAccessible.cpp
@@ -450,18 +450,19 @@ DocAccessible::Shutdown()
   // array as they are shutdown.
   int32_t childDocCount = mChildDocuments.Length();
   for (int32_t idx = childDocCount - 1; idx >= 0; idx--)
     mChildDocuments[idx]->Shutdown();
 
   mChildDocuments.Clear();
 
   // XXX thinking about ordering?
-  if (IPCAccessibilityActive()) {
-    DocAccessibleChild::Send__delete__(mIPCDoc);
+  if (mIPCDoc) {
+    MOZ_ASSERT(IPCAccessibilityActive());
+    mIPCDoc->Shutdown();
     MOZ_ASSERT(!mIPCDoc);
   }
 
   if (mVirtualCursor) {
     mVirtualCursor->RemoveObserver(this);
     mVirtualCursor = nullptr;
   }
 
--- a/accessible/generic/OuterDocAccessible.cpp
+++ b/accessible/generic/OuterDocAccessible.cpp
@@ -3,16 +3,18 @@
  * 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 "OuterDocAccessible.h"
 
 #include "Accessible-inl.h"
 #include "nsAccUtils.h"
 #include "DocAccessible-inl.h"
+#include "mozilla/a11y/DocAccessibleParent.h"
+#include "mozilla/dom/TabParent.h"
 #include "Role.h"
 #include "States.h"
 
 #ifdef A11Y_LOG
 #include "Logging.h"
 #endif
 
 using namespace mozilla;
@@ -21,16 +23,17 @@ using namespace mozilla::a11y;
 ////////////////////////////////////////////////////////////////////////////////
 // OuterDocAccessible
 ////////////////////////////////////////////////////////////////////////////////
 
 OuterDocAccessible::
   OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc) :
   AccessibleWrap(aContent, aDoc)
 {
+  mType = eOuterDocType;
 }
 
 OuterDocAccessible::~OuterDocAccessible()
 {
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
@@ -176,8 +179,29 @@ OuterDocAccessible::CacheChildren()
   // created. It will appended to outerdoc accessible children asynchronously.
   nsIDocument* outerDoc = mContent->GetCurrentDoc();
   if (outerDoc) {
     nsIDocument* innerDoc = outerDoc->GetSubDocumentFor(mContent);
     if (innerDoc)
       GetAccService()->GetDocAccessible(innerDoc);
   }
 }
+
+ProxyAccessible*
+OuterDocAccessible::RemoteChildDoc() const
+{
+  dom::TabParent* tab = dom::TabParent::GetFrom(GetContent());
+  if (!tab)
+    return nullptr;
+
+  // XXX Consider managing non top level remote documents with there parent
+  // document.
+  const nsTArray<PDocAccessibleParent*>& docs = tab->ManagedPDocAccessibleParent();
+  size_t docCount = docs.Length();
+  for (size_t i = 0; i < docCount; i++) {
+    auto doc = static_cast<DocAccessibleParent*>(docs[i]);
+    if (!doc->ParentDoc())
+      return doc;
+  }
+
+  MOZ_ASSERT(false, "no top level tab document?");
+  return nullptr;
+}
--- a/accessible/generic/OuterDocAccessible.h
+++ b/accessible/generic/OuterDocAccessible.h
@@ -5,16 +5,17 @@
 
 #ifndef MOZILLA_A11Y_OUTERDOCACCESSIBLE_H_
 #define MOZILLA_A11Y_OUTERDOCACCESSIBLE_H_
 
 #include "AccessibleWrap.h"
 
 namespace mozilla {
 namespace a11y {
+class ProxyAccessible;
 
 /**
  * Used for <browser>, <frame>, <iframe>, <page> or editor> elements.
  * 
  * In these variable names, "outer" relates to the OuterDocAccessible as
  * opposed to the DocAccessibleWrap which is "inner". The outer node is
  * a something like tags listed above, whereas the inner node corresponds to
  * the inner document root.
@@ -22,16 +23,18 @@ namespace a11y {
 
 class OuterDocAccessible final : public AccessibleWrap
 {
 public:
   OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc);
 
   NS_DECL_ISUPPORTS_INHERITED
 
+  ProxyAccessible* RemoteChildDoc() const;
+
   // Accessible
   virtual void Shutdown() override;
   virtual mozilla::a11y::role NativeRole() override;
   virtual Accessible* ChildAtPoint(int32_t aX, int32_t aY,
                                    EWhichChildAtPoint aWhichChild) override;
 
   virtual void InvalidateChildren() override;
   virtual bool InsertChildAt(uint32_t aIdx, Accessible* aChild) override;
@@ -39,12 +42,17 @@ public:
 
 protected:
   virtual ~OuterDocAccessible() override;
 
   // Accessible
   virtual void CacheChildren() override;
 };
 
+inline OuterDocAccessible*
+Accessible::AsOuterDoc()
+{
+  return IsOuterDoc() ? static_cast<OuterDocAccessible*>(this) : nullptr;
+}
 } // namespace a11y
 } // namespace mozilla
 
 #endif  
--- a/accessible/ipc/DocAccessibleChild.cpp
+++ b/accessible/ipc/DocAccessibleChild.cpp
@@ -65,16 +65,19 @@ SerializeTree(Accessible* aRoot, nsTArra
 }
 
 Accessible*
 DocAccessibleChild::IdToAccessible(const uint64_t& aID) const
 {
   if (!aID)
     return mDoc;
 
+  if (!mDoc)
+    return nullptr;
+
   return mDoc->GetAccessibleByUniqueID(reinterpret_cast<void*>(aID));
 }
 
 Accessible*
 DocAccessibleChild::IdToAccessibleLink(const uint64_t& aID) const
 {
   Accessible* acc = IdToAccessible(aID);
   return acc && acc->IsLink() ? acc : nullptr;
@@ -220,17 +223,17 @@ DocAccessibleChild::PersistentProperties
   return true;
 }
 
 bool
 DocAccessibleChild::RecvRelationByType(const uint64_t& aID,
                                        const uint32_t& aType,
                                        nsTArray<uint64_t>* aTargets)
 {
-  Accessible* acc = mDoc->GetAccessibleByUniqueID((void*)aID);
+  Accessible* acc = IdToAccessible(aID);
   if (!acc)
     return true;
 
   auto type = static_cast<RelationType>(aType);
   Relation rel = acc->RelationByType(type);
   while (Accessible* target = rel.Next())
     aTargets->AppendElement(reinterpret_cast<uintptr_t>(target));
 
@@ -253,17 +256,17 @@ AddRelation(Accessible* aAcc, RelationTy
     newRelation->Targets().SwapElements(targets);
   }
 }
 
 bool
 DocAccessibleChild::RecvRelations(const uint64_t& aID,
                                   nsTArray<RelationTargets>* aRelations)
 {
-  Accessible* acc = mDoc->GetAccessibleByUniqueID((void*)aID);
+  Accessible* acc = IdToAccessible(aID);
   if (!acc)
     return true;
 
 #define RELATIONTYPE(gecko, s, a, m, i) AddRelation(acc, RelationType::gecko, aRelations);
 
 #include "RelationTypeMap.h"
 #undef RELATIONTYPE
 
@@ -1630,16 +1633,31 @@ DocAccessibleChild::RecvIndexOfEmbeddedC
   if (!parent || !child)
     return true;
 
   *aChildIdx = parent->GetIndexOfEmbeddedChild(child);
   return true;
 }
 
 bool
+DocAccessibleChild::RecvEmbeddedChildAt(const uint64_t& aID,
+                                        const uint32_t& aIdx,
+                                        uint64_t* aChildID)
+{
+  *aChildID = 0;
+
+  Accessible* acc = IdToAccessible(aID);
+  if (!acc)
+    return true;
+
+  *aChildID = reinterpret_cast<uintptr_t>(acc->GetEmbeddedChildAt(aIdx));
+  return true;
+}
+
+bool
 DocAccessibleChild::RecvChildAtPoint(const uint64_t& aID,
                                      const int32_t& aX,
                                      const int32_t& aY,
                                      const uint32_t& aWhich,
                                      uint64_t* aChild,
                                      bool* aOk)
 {
   *aChild = 0;
--- a/accessible/ipc/DocAccessibleChild.h
+++ b/accessible/ipc/DocAccessibleChild.h
@@ -27,18 +27,29 @@ class AccShowEvent;
 class DocAccessibleChild : public PDocAccessibleChild
 {
 public:
   explicit DocAccessibleChild(DocAccessible* aDoc) :
     mDoc(aDoc)
   { MOZ_COUNT_CTOR(DocAccessibleChild); }
   ~DocAccessibleChild()
   {
+    // Shutdown() should have been called, but maybe it isn't if the process is
+    // killed?
+    MOZ_ASSERT(!mDoc);
+    if (mDoc)
+      mDoc->SetIPCDoc(nullptr);
+    MOZ_COUNT_DTOR(DocAccessibleChild);
+  }
+
+  void Shutdown()
+  {
     mDoc->SetIPCDoc(nullptr);
-    MOZ_COUNT_DTOR(DocAccessibleChild);
+    mDoc = nullptr;
+    SendShutdown();
   }
 
   void ShowEvent(AccShowEvent* aShowEvent);
 
   /*
    * Return the state for the accessible with given ID.
    */
   virtual bool RecvState(const uint64_t& aID, uint64_t* aState) override;
@@ -392,16 +403,19 @@ public:
                         double* aStep) override;
 
   virtual bool RecvTakeFocus(const uint64_t& aID) override;
 
   virtual bool RecvIndexOfEmbeddedChild(const uint64_t& aID,
                                         const uint64_t& aChildID,
                                         uint32_t* aChildIdx) override final;
 
+  virtual bool RecvEmbeddedChildAt(const uint64_t& aID, const uint32_t& aIdx,
+                                   uint64_t* aChildID) override final;
+
   virtual bool RecvChildAtPoint(const uint64_t& aID,
                                 const int32_t& aX,
                                 const int32_t& aY,
                                 const uint32_t& aWhich,
                                 uint64_t* aChild,
                                 bool* aOk) override;
 
   virtual bool RecvBounds(const uint64_t& aID, nsIntRect* aRect) override;
--- a/accessible/ipc/DocAccessibleParent.cpp
+++ b/accessible/ipc/DocAccessibleParent.cpp
@@ -3,16 +3,17 @@
 /* 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 "DocAccessibleParent.h"
 #include "nsAutoPtr.h"
 #include "mozilla/a11y/Platform.h"
 #include "ProxyAccessible.h"
+#include "mozilla/dom/TabParent.h"
 
 namespace mozilla {
 namespace a11y {
 
 bool
 DocAccessibleParent::RecvShowEvent(const ShowEventData& aData)
 {
   if (mShutdown)
@@ -181,27 +182,42 @@ DocAccessibleParent::AddChildDoc(DocAcce
 
 PLDHashOperator
 DocAccessibleParent::ShutdownAccessibles(ProxyEntry* entry, void*)
 {
   ProxyDestroyed(entry->mProxy);
   return PL_DHASH_REMOVE;
 }
 
+bool
+DocAccessibleParent::RecvShutdown()
+{
+  Destroy();
+
+  if (!static_cast<dom::TabParent*>(Manager())->IsDestroyed()) {
+  return PDocAccessibleParent::Send__delete__(this);
+  }
+
+  return true;
+}
+
 void
 DocAccessibleParent::Destroy()
 {
   NS_ASSERTION(mChildDocs.IsEmpty(),
                "why weren't the child docs destroyed already?");
   MOZ_ASSERT(!mShutdown);
   mShutdown = true;
 
   uint32_t childDocCount = mChildDocs.Length();
   for (uint32_t i = childDocCount - 1; i < childDocCount; i--)
     mChildDocs[i]->Destroy();
 
   mAccessibles.EnumerateEntries(ShutdownAccessibles, nullptr);
   ProxyDestroyed(this);
-  mParentDoc ? mParentDoc->RemoveChildDoc(this)
-    : GetAccService()->RemoteDocShutdown(this);
+  if (mParentDoc)
+    mParentDoc->RemoveChildDoc(this);
+  else if (IsTopLevel())
+    GetAccService()->RemoteDocShutdown(this);
 }
-}
-}
+
+} // a11y
+} // mozilla
--- a/accessible/ipc/DocAccessibleParent.h
+++ b/accessible/ipc/DocAccessibleParent.h
@@ -21,25 +21,29 @@ namespace a11y {
  * These objects live in the main process and comunicate with and represent
  * an accessible document in a content process.
  */
 class DocAccessibleParent : public ProxyAccessible,
     public PDocAccessibleParent
 {
 public:
   DocAccessibleParent() :
-    ProxyAccessible(this), mParentDoc(nullptr), mShutdown(false)
+    ProxyAccessible(this), mParentDoc(nullptr),
+    mTopLevel(false), mShutdown(false)
   { MOZ_COUNT_CTOR_INHERITED(DocAccessibleParent, ProxyAccessible); }
   ~DocAccessibleParent()
   {
     MOZ_COUNT_DTOR_INHERITED(DocAccessibleParent, ProxyAccessible);
     MOZ_ASSERT(mChildDocs.Length() == 0);
     MOZ_ASSERT(!ParentDoc());
   }
 
+  void SetTopLevel() { mTopLevel = true; }
+  bool IsTopLevel() const { return mTopLevel; }
+
   /*
    * Called when a message from a document in a child process notifies the main
    * process it is firing an event.
    */
   virtual bool RecvEvent(const uint64_t& aID, const uint32_t& aType)
     override;
 
   virtual bool RecvShowEvent(const ShowEventData& aData) override;
@@ -54,16 +58,17 @@ public:
   virtual bool RecvBindChildDoc(PDocAccessibleParent* aChildDoc, const uint64_t& aID) override;
   void Unbind()
   {
     mParent = nullptr;
     ParentDoc()->mChildDocs.RemoveElement(this);
     mParentDoc = nullptr;
   }
 
+  virtual bool RecvShutdown() override;
   void Destroy();
   virtual void ActorDestroy(ActorDestroyReason aWhy) override
   {
     if (!mShutdown)
       Destroy();
   }
 
   /*
@@ -145,15 +150,16 @@ private:
   nsTArray<DocAccessibleParent*> mChildDocs;
   DocAccessibleParent* mParentDoc;
 
   /*
    * Conceptually this is a map from IDs to proxies, but we store the ID in the
    * proxy object so we can't use a real map.
    */
   nsTHashtable<ProxyEntry> mAccessibles;
+  bool mTopLevel;
   bool mShutdown;
 };
 
 }
 }
 
 #endif
--- a/accessible/ipc/PDocAccessible.ipdl
+++ b/accessible/ipc/PDocAccessible.ipdl
@@ -43,17 +43,17 @@ struct RelationTargets
   uint64_t[] Targets;
 };
 
 prio(normal upto high) sync protocol PDocAccessible
 {
   manager PBrowser;
 
 parent:
-  __delete__();
+  Shutdown();
 
   /*
    * Notify the parent process the document in the child process is firing an
    * event.
    */
   Event(uint64_t aID, uint32_t type);
   ShowEvent(ShowEventData data);
   HideEvent(uint64_t aRootID);
@@ -62,16 +62,18 @@ parent:
 
   /*
    * Tell the parent document to bind the existing document as a new child
    * document.
    */
   BindChildDoc(PDocAccessible aChildDoc, uint64_t aID);
 
 child:
+  __delete__();
+
   // Accessible
   prio(high) sync State(uint64_t aID) returns(uint64_t states);
   prio(high) sync Name(uint64_t aID) returns(nsString name);
   prio(high) sync Value(uint64_t aID) returns(nsString value);
   prio(high) sync Description(uint64_t aID) returns(nsString desc);
   prio(high) sync Attributes(uint64_t aID) returns(Attribute[] attributes);
   prio(high) sync RelationByType(uint64_t aID, uint32_t aRelationType)
     returns(uint64_t[] targets);
@@ -211,16 +213,18 @@ child:
   prio(high) sync SetCurValue(uint64_t aID, double aValue) returns(bool aRetVal);
   prio(high) sync MinValue(uint64_t aID) returns(double aValue);
   prio(high) sync MaxValue(uint64_t aID) returns(double aValue);
   prio(high) sync Step(uint64_t aID) returns(double aStep);
 
   prio(high) sync TakeFocus(uint64_t aID);
   prio(high) sync IndexOfEmbeddedChild(uint64_t aID, uint64_t aChildID)
     returns(uint32_t childIdx);
+  prio(high) sync EmbeddedChildAt(uint64_t aID, uint32_t aChildIdx)
+    returns(uint64_t aChild);
   prio(high) sync ChildAtPoint(uint64_t aID, int32_t aX, int32_t aY, uint32_t aWhich)
     returns(uint64_t aChild, bool aOk);
   prio(high) sync Bounds(uint64_t aID) returns(nsIntRect aRect);
 
   prio(high) sync Language(uint64_t aID) returns(nsString aLocale);
   prio(high) sync DocType(uint64_t aID) returns(nsString aType);
   prio(high) sync URL(uint64_t aID) returns(nsString aURL);
   prio(high) sync MimeType(uint64_t aID) returns(nsString aMime);
--- a/accessible/ipc/ProxyAccessible.cpp
+++ b/accessible/ipc/ProxyAccessible.cpp
@@ -912,16 +912,24 @@ ProxyAccessible::IndexOfEmbeddedChild(co
 {
   uint64_t childID = aChild->mID;
   uint32_t childIdx;
   unused << mDoc->SendIndexOfEmbeddedChild(mID, childID, &childIdx);
   return childIdx;
 }
 
 ProxyAccessible*
+ProxyAccessible::EmbeddedChildAt(size_t aChildIdx)
+{
+  uint64_t childID;
+  unused << mDoc->SendEmbeddedChildAt(mID, aChildIdx, &childID);
+  return mDoc->GetAccessible(childID);
+}
+
+ProxyAccessible*
 ProxyAccessible::ChildAtPoint(int32_t aX, int32_t aY,
                               Accessible::EWhichChildAtPoint aWhichChild)
 {
   uint64_t childID = 0;
   bool ok = false;
   unused << mDoc->SendChildAtPoint(mID, aX, aY,
                                    static_cast<uint32_t>(aWhichChild),
                                    &childID, &ok);
--- a/accessible/ipc/ProxyAccessible.h
+++ b/accessible/ipc/ProxyAccessible.h
@@ -44,16 +44,17 @@ public:
   { mChildren.InsertElementAt(aIdx, aChild); }
 
   uint32_t ChildrenCount() const { return mChildren.Length(); }
   ProxyAccessible* ChildAt(uint32_t aIdx) const { return mChildren[aIdx]; }
 
   // XXX evaluate if this is fast enough.
   size_t IndexInParent() const { return Parent()->mChildren.IndexOf(this); }
   int32_t IndexOfEmbeddedChild(const ProxyAccessible*);
+  ProxyAccessible* EmbeddedChildAt(size_t aChildIdx);
   bool MustPruneChildren() const;
 
   void Shutdown();
 
   void SetChildDoc(DocAccessibleParent*);
 
   /**
    * Remove The given child.
--- a/accessible/mac/AccessibleWrap.h
+++ b/accessible/mac/AccessibleWrap.h
@@ -1,14 +1,14 @@
 /* -*- 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, 
+/* For documentation of the accessibility architecture,
  * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
  */
 
 #ifndef _AccessibleWrap_H_
 #define _AccessibleWrap_H_
 
 #include <objc/objc.h>
 
@@ -82,32 +82,38 @@ protected:
 #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 
+   * 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;  
+  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
--- a/accessible/mac/AccessibleWrap.mm
+++ b/accessible/mac/AccessibleWrap.mm
@@ -15,52 +15,52 @@
 #import "mozHTMLAccessible.h"
 #import "mozTextAccessible.h"
 
 using namespace mozilla;
 using namespace mozilla::a11y;
 
 AccessibleWrap::
   AccessibleWrap(nsIContent* aContent, DocAccessible* aDoc) :
-  Accessible(aContent, aDoc), mNativeObject(nil),  
+  Accessible(aContent, aDoc), mNativeObject(nil),
   mNativeInited(false)
 {
 }
 
 AccessibleWrap::~AccessibleWrap()
 {
 }
 
-mozAccessible* 
+mozAccessible*
 AccessibleWrap::GetNativeObject()
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
-  
+
   if (!mNativeInited && !mNativeObject && !IsDefunct() && !AncestorIsFlat()) {
     uintptr_t accWrap = reinterpret_cast<uintptr_t>(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<void*>(GetNativeObject());
 }
 
 // overridden in subclasses to create the right kind of object. by default we create a generic
 // 'mozAccessible' node.
 Class
-AccessibleWrap::GetNativeType () 
+AccessibleWrap::GetNativeType ()
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
 
   if (IsXULTabpanels())
     return [mozPaneAccessible class];
 
   return GetTypeFromRole(Role());
 
@@ -107,28 +107,17 @@ AccessibleWrap::HandleAccEvent(AccEvent*
   Accessible* accessible = aEvent->GetAccessible();
   NS_ENSURE_STATE(accessible);
 
   mozAccessible *nativeAcc = nil;
   accessible->GetNativeInterface((void**)&nativeAcc);
   if (!nativeAcc)
     return NS_ERROR_FAILURE;
 
-  switch (eventType) {
-    case nsIAccessibleEvent::EVENT_FOCUS:
-      [nativeAcc didReceiveFocus];
-      break;
-    case nsIAccessibleEvent::EVENT_VALUE_CHANGE:
-      [nativeAcc valueDidChange];
-      break;
-    case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED:
-    case nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED:
-      [nativeAcc selectedTextDidChange];
-      break;
-  }
+  FireNativeEvent(nativeAcc, eventType);
 
   return NS_OK;
 
   NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
 }
 
 void
 AccessibleWrap::InvalidateChildren()
@@ -160,24 +149,24 @@ AccessibleWrap::RemoveChild(Accessible* 
   if (removed && mNativeObject)
     [mNativeObject invalidateChildren];
 
   return removed;
 }
 
 // if we for some reason have no native accessible, we should be skipped over (and traversed)
 // when fetching all unignored children, etc.  when counting unignored children, we will not be counted.
-bool 
-AccessibleWrap::IsIgnored() 
+bool
+AccessibleWrap::IsIgnored()
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN;
-  
+
   mozAccessible* nativeObject = GetNativeObject();
   return (!nativeObject) || [nativeObject accessibilityIsIgnored];
-  
+
   NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false);
 }
 
 void
 AccessibleWrap::GetUnignoredChildren(nsTArray<Accessible*>* aChildrenArray)
 {
   // we're flat; there are no children.
   if (nsAccUtils::MustPrune(this))
@@ -198,67 +187,88 @@ AccessibleWrap::GetUnignoredChildren(nsT
   }
 }
 
 Accessible*
 AccessibleWrap::GetUnignoredParent() const
 {
   // Go up the chain to find a parent that is not ignored.
   AccessibleWrap* parentWrap = static_cast<AccessibleWrap*>(Parent());
-  while (parentWrap && parentWrap->IsIgnored()) 
+  while (parentWrap && parentWrap->IsIgnored())
     parentWrap = static_cast<AccessibleWrap*>(parentWrap->Parent());
-    
+
   return parentWrap;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // 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. 
+  // 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:
+      [aNativeAcc valueDidChange];
+      break;
+    case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED:
+    case nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED:
+      [aNativeAcc selectedTextDidChange];
+      break;
+  }
+
+  NS_OBJC_END_TRY_ABORT_BLOCK;
+}
+
 Class
-a11y::GetTypeFromRole(roles::Role aRole) 
+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:
@@ -268,17 +278,17 @@ a11y::GetTypeFromRole(roles::Role aRole)
       // 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;
 }
--- a/accessible/mac/MacUtils.mm
+++ b/accessible/mac/MacUtils.mm
@@ -13,21 +13,21 @@
 namespace mozilla {
 namespace a11y {
 namespace utils {
 
 /**
  * Get a localized string from the a11y string bundle.
  * Return nil if not found.
  */
-NSString* 
+NSString*
 LocalizedString(const nsString& aString)
 {
   nsString text;
-  
+
   Accessible::TranslateString(aString, text);
-  
+
   return text.IsEmpty() ? nil : nsCocoaUtils::ToNSString(text);
 }
 
 }
 }
 }
--- a/accessible/mac/Platform.mm
+++ b/accessible/mac/Platform.mm
@@ -42,39 +42,54 @@ ProxyCreated(ProxyAccessible* aProxy, ui
   uintptr_t accWrap = reinterpret_cast<uintptr_t>(aProxy) | IS_PROXY;
   mozAccessible* mozWrapper = [[type alloc] initWithAccessible:accWrap];
   aProxy->SetWrapper(reinterpret_cast<uintptr_t>(mozWrapper));
 }
 
 void
 ProxyDestroyed(ProxyAccessible* aProxy)
 {
-  mozAccessible* wrapper =
-    reinterpret_cast<mozAccessible*>(aProxy->GetWrapper());
+  mozAccessible* wrapper = GetNativeFromProxy(aProxy);
   [wrapper expire];
   [wrapper release];
   aProxy->SetWrapper(0);
 }
 
 void
-ProxyEvent(ProxyAccessible*, uint32_t)
+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_CARET_MOVED &&
+      aEventType != nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED)
+    return;
+
+  mozAccessible* wrapper = GetNativeFromProxy(aProxy);
+  if (wrapper)
+    FireNativeEvent(wrapper, aEventType);
 }
 
 void
-ProxyStateChangeEvent(ProxyAccessible*, uint64_t, bool)
+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];
 }
-}
+
+} // 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
--- a/accessible/mac/RootAccessibleWrap.h
+++ b/accessible/mac/RootAccessibleWrap.h
@@ -1,14 +1,14 @@
 /* -*- 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, 
+/* 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"
 
@@ -18,17 +18,17 @@ namespace a11y {
 class RootAccessibleWrap : public RootAccessible
 {
 public:
   RootAccessibleWrap(nsIDocument* aDocument, nsIContent* aRootContent,
                      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
 
--- a/accessible/mac/RootAccessibleWrap.mm
+++ b/accessible/mac/RootAccessibleWrap.mm
@@ -41,14 +41,14 @@ RootAccessibleWrap::GetNativeWidget(void
 {
   nsIFrame *frame = GetFrame();
   if (frame) {
     nsView *view = frame->GetViewExternal();
     if (view) {
       nsIWidget *widget = view->GetWidget();
       if (widget) {
         *aOutView = (void**)widget->GetNativeData (NS_NATIVE_WIDGET);
-        NS_ASSERTION (*aOutView, 
+        NS_ASSERTION (*aOutView,
                       "Couldn't get the native NSView parent we need to connect the accessibility hierarchy!");
       }
     }
   }
 }
--- a/accessible/mac/TextLeafAccessibleWrap.h
+++ b/accessible/mac/TextLeafAccessibleWrap.h
@@ -5,15 +5,15 @@
 
 #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
--- a/accessible/mac/mozAccessible.h
+++ b/accessible/mac/mozAccessible.h
@@ -1,14 +1,15 @@
 /* -*- 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 <Cocoa/Cocoa.h>
 
 #import "mozAccessibleProtocol.h"
 
 @class mozRootAccessible;
 
 /**
@@ -26,32 +27,38 @@ GetObjectOrRepresentedView(id <mozAccess
 inline mozAccessible*
 GetNativeFromGeckoAccessible(mozilla::a11y::Accessible* aAccessible)
 {
   mozAccessible* native = nil;
   aAccessible->GetNativeInterface((void**)&native);
   return native;
 }
 
+inline mozAccessible*
+GetNativeFromProxy(mozilla::a11y::ProxyAccessible* aProxy)
+{
+  return reinterpret_cast<mozAccessible*>(aProxy->GetWrapper());
+}
+
 // 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 <mozAccessible>
 {
   /**
    * 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;
@@ -117,17 +124,17 @@ static const uintptr_t IS_PROXY = 1;
 - (void)valueDidChange;
 - (void)selectedTextDidChange;
 
 #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;
--- a/accessible/mac/mozAccessible.mm
+++ b/accessible/mac/mozAccessible.mm
@@ -1,13 +1,13 @@
 /* -*- 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"
@@ -32,39 +32,39 @@ using namespace mozilla::a11y;
 static inline id
 GetClosestInterestingAccessible(id anObject)
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
 
   // this object is not ignored, so let's return it.
   if (![anObject accessibilityIsIgnored])
     return GetObjectOrRepresentedView(anObject);
-  
+
   // find the closest ancestor that is not ignored.
   id unignoredObject = anObject;
   while ((unignoredObject = [unignoredObject accessibilityAttributeValue:NSAccessibilityParentAttribute])) {
     if (![unignoredObject accessibilityIsIgnored])
       // object is not ignored, so let's stop the search.
       break;
   }
-  
+
   // if it's a mozAccessible, we need to take care to maybe return the view we
   // represent, to the AT.
   if ([unignoredObject respondsToSelector:@selector(hasRepresentedView)])
     return GetObjectOrRepresentedView(unignoredObject);
-  
+
   return unignoredObject;
 
   NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
 }
 
 #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();
@@ -99,17 +99,17 @@ GetClosestInterestingAccessible(id anObj
 - (mozilla::a11y::ProxyAccessible*)getProxyAccessible
 {
   // Check if mGeckoAccessible points at a proxy
   if (!(mGeckoAccessible & IS_PROXY))
     return nil;
 
   return reinterpret_cast<ProxyAccessible*>(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.
@@ -123,22 +123,22 @@ GetClosestInterestingAccessible(id anObj
 
 - (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];
-  
+
   static NSArray *generalAttributes = nil;
-  
+
   if (!generalAttributes) {
     // standard attributes that are shared and supported by all generic elements.
-    generalAttributes = [[NSArray alloc] initWithObjects:  NSAccessibilityChildrenAttribute, 
+    generalAttributes = [[NSArray alloc] initWithObjects:  NSAccessibilityChildrenAttribute,
                                                            NSAccessibilityParentAttribute,
                                                            NSAccessibilityRoleAttribute,
                                                            NSAccessibilityTitleAttribute,
                                                            NSAccessibilityValueAttribute,
                                                            NSAccessibilitySubroleAttribute,
                                                            NSAccessibilityRoleDescriptionAttribute,
                                                            NSAccessibilityPositionAttribute,
                                                            NSAccessibilityEnabledAttribute,
@@ -156,48 +156,48 @@ GetClosestInterestingAccessible(id anObj
   }
 
   return generalAttributes;
 
   NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
 }
 
 - (id)accessibilityAttributeValue:(NSString*)attribute
-{  
+{
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
 
   if (![self getGeckoAccessible])
     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]) 
+  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]) 
+  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:NSAccessibilityRoleDescriptionAttribute])
+    return [self roleDescription];
   if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute])
     return [self customDescription];
   if ([attribute isEqualToString:NSAccessibilityFocusedAttribute])
     return [NSNumber numberWithBool:[self isFocused]];
   if ([attribute isEqualToString:NSAccessibilitySizeAttribute])
     return [self size];
   if ([attribute isEqualToString:NSAccessibilityWindowAttribute])
     return [self window];
@@ -208,45 +208,45 @@ GetClosestInterestingAccessible(id anObj
   if ([attribute isEqualToString:NSAccessibilityTitleUIElementAttribute]) {
     Relation rel =
       [self getGeckoAccessible]->RelationByType(RelationType::LABELLED_BY);
     Accessible* tempAcc = rel.Next();
     return tempAcc ? GetNativeFromGeckoAccessible(tempAcc) : nil;
   }
   if ([attribute isEqualToString:NSAccessibilityHelpAttribute])
     return [self help];
-    
+
 #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
@@ -270,48 +270,48 @@ GetClosestInterestingAccessible(id anObj
 
   if (child) {
     mozAccessible* nativeChild = GetNativeFromGeckoAccessible(child);
     if (nativeChild)
       return GetClosestInterestingAccessible(nativeChild);
   }
 
   // if we didn't find anything, return ourself (or the first unignored ancestor).
-  return GetClosestInterestingAccessible(self); 
+  return GetClosestInterestingAccessible(self);
 }
 
-- (NSArray*)accessibilityActionNames 
+- (NSArray*)accessibilityActionNames
 {
   return nil;
 }
 
-- (NSString*)accessibilityActionDescription:(NSString*)action 
+- (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 
+- (void)accessibilityPerformAction:(NSString*)action
 {
 }
 
 - (id)accessibilityFocusedUIElement
 {
   AccessibleWrap* accWrap = [self getGeckoAccessible];
   if (!accWrap)
     return nil;
-  
+
   Accessible* focusedGeckoChild = accWrap->FocusedChild();
   if (focusedGeckoChild) {
     mozAccessible *focusedChild = GetNativeFromGeckoAccessible(focusedGeckoChild);
     if (focusedChild)
       return GetClosestInterestingAccessible(focusedChild);
   }
-  
+
   // return ourself if we can't get a native focused child.
   return GetClosestInterestingAccessible(self);
 }
 
 #pragma mark -
 
 - (id <mozAccessible>)parent
 {
@@ -319,19 +319,19 @@ GetClosestInterestingAccessible(id anObj
 
   AccessibleWrap* accWrap = [self getGeckoAccessible];
   Accessible* accessibleParent = accWrap->GetUnignoredParent();
   if (accessibleParent) {
     id nativeParent = GetNativeFromGeckoAccessible(accessibleParent);
     if (nativeParent)
       return GetClosestInterestingAccessible(nativeParent);
   }
-  
+
   // GetUnignoredParent() returns null when there is no unignored accessible all the way up to
-  // the root accessible. so we'll have to return whatever native accessible is above our root accessible 
+  // the root accessible. so we'll have to return whatever native accessible is above our root accessible
   // (which might be the owning NSWindow in the application, for example).
   //
   // get the native root accessible, and tell it to return its first parent unignored accessible.
   id nativeParent =
     GetNativeFromGeckoAccessible(accWrap->RootAccessible());
   NSAssert1 (nativeParent, @"!!! we can't find a parent for %@", self);
 
   return GetClosestInterestingAccessible(nativeParent);
@@ -375,26 +375,26 @@ GetClosestInterestingAccessible(id anObj
   for (uint32_t idx = 0; idx < totalCount; idx++) {
     Accessible* curAccessible = childrenArray.ElementAt(idx);
     if (curAccessible) {
       mozAccessible *curNative = GetNativeFromGeckoAccessible(curAccessible);
       if (curNative)
         [mChildren addObject:GetObjectOrRepresentedView(curNative)];
     }
   }
-  
+
 #ifdef DEBUG_hakan
   // make sure we're not returning any ignored accessibles.
   NSEnumerator *e = [mChildren objectEnumerator];
   mozAccessible *m = nil;
   while ((m = [e nextObject])) {
     NSAssert1(![m accessibilityIsIgnored], @"we should never return an ignored accessible! (%@)", m);
   }
 #endif
-  
+
   return mChildren;
 
   NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
 }
 
 - (NSValue*)position
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
@@ -595,23 +595,24 @@ struct RoleDescrComparator
 {
   // Do nothing. mozTextAccessible will.
 }
 
 - (NSString*)customDescription
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
 
-  AccessibleWrap* accWrap = [self getGeckoAccessible];
-  if (accWrap->IsDefunct())
+  nsAutoString desc;
+  if (AccessibleWrap* accWrap = [self getGeckoAccessible])
+    accWrap->Description(desc);
+  else if (ProxyAccessible* proxy = [self getProxyAccessible])
+    proxy->Description(desc);
+  else
     return nil;
 
-  nsAutoString desc;
-  accWrap->Description(desc);
-
   return nsCocoaUtils::ToNSString(desc);
 
   NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
 }
 
 - (NSString*)help
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
@@ -705,30 +706,30 @@ struct RoleDescrComparator
   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:GetObjectOrRepresentedView(curNative)];
 }
 
 - (void)expire
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
 
   [self invalidateChildren];
 
   mGeckoAccessible = 0;
-  
+
   NS_OBJC_END_TRY_ABORT_BLOCK;
 }
 
 - (BOOL)isExpired
 {
   return ![self getGeckoAccessible];
 }
 
@@ -742,23 +743,23 @@ struct RoleDescrComparator
 // parent.
 - (void)sanityCheckChildren:(NSArray *)children
 {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
 
   NSAssert(![self accessibilityIsIgnored], @"can't sanity check children of an ignored accessible!");
   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, 
+    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
 {
@@ -778,36 +779,36 @@ struct RoleDescrComparator
   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<level;i++)
     [indent appendString:@" "];
-  
+
   NSLog (@"%@(#%i) %@", indent, level, self);
-  
+
   // use |children| method to make sure our children are lazily fetched first.
   NSArray *children = [self children];
   if (!children)
     return;
-    
+
   if (![self accessibilityIsIgnored])
     [self sanityCheckChildren];
-    
+
   NSEnumerator *iter = [children objectEnumerator];
   mozAccessible *object = nil;
-  
+
   while (iter && (object = [iter nextObject]))
     // print every child node's subtree, increasing the indenting
     // by two for every level.
     [object printHierarchyWithLevel:(level+1)];
 
   NS_OBJC_END_TRY_ABORT_BLOCK;
 }
 
--- a/accessible/mac/mozAccessibleProtocol.h
+++ b/accessible/mac/mozAccessibleProtocol.h
@@ -4,31 +4,31 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #import <Cocoa/Cocoa.h>
 
 #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 
+
+   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, 
+// 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
--- a/accessible/mac/mozActionElements.mm
+++ b/accessible/mac/mozActionElements.mm
@@ -157,34 +157,34 @@ enum CheckboxValue {
 
 - (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 = [self getGeckoAccessible]->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]];
@@ -202,34 +202,34 @@ enum CheckboxValue {
 
   [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;  
+
+  return attributes;
 }
 
 - (id)accessibilityAttributeValue:(NSString *)attribute
-{  
+{
   if ([attribute isEqualToString:NSAccessibilityContentsAttribute])
     return [super children];
   if ([attribute isEqualToString:NSAccessibilityTabsAttribute])
     return [self tabs];
-  
-  return [super accessibilityAttributeValue:attribute];  
+
+  return [super accessibilityAttributeValue:attribute];
 }
 
 /**
  * Returns the selected tab (the mozAccessible)
  */
 - (id)value
 {
   if (![self getGeckoAccessible])
@@ -251,17 +251,17 @@ enum CheckboxValue {
 - (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;
 }
 
--- a/accessible/mac/mozDocAccessible.h
+++ b/accessible/mac/mozDocAccessible.h
@@ -4,17 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #import <Cocoa/Cocoa.h>
 #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
--- a/accessible/mac/mozDocAccessible.mm
+++ b/accessible/mac/mozDocAccessible.mm
@@ -9,78 +9,78 @@
 
 #import "mozView.h"
 
 // This must be included last:
 #include "nsObjCExceptions.h"
 
 using namespace mozilla::a11y;
 
-static id <mozAccessible, mozView> 
+static id <mozAccessible, mozView>
 getNativeViewFromRootAccessible(Accessible* aAccessible)
 {
   RootAccessibleWrap* root =
     static_cast<RootAccessibleWrap*>(aAccessible->AsRoot());
   id <mozAccessible, mozView> 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<mozView, mozAccessible>)[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
 {
@@ -89,19 +89,19 @@ getNativeViewFromRootAccessible(Accessib
 
 // 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
 {
--- a/accessible/mac/mozTextAccessible.mm
+++ b/accessible/mac/mozTextAccessible.mm
@@ -14,17 +14,17 @@
 
 using namespace mozilla::a11y;
 
 inline bool
 ToNSRange(id aValue, NSRange* aRange)
 {
   NS_PRECONDITION(aRange, "aRange is nil");
 
-  if ([aValue isKindOfClass:[NSValue class]] && 
+  if ([aValue isKindOfClass:[NSValue class]] &&
       strcmp([(NSValue*)aValue objCType], @encode(NSRange)) == 0) {
     *aRange = [aValue rangeValue];
     return true;
   }
 
   return false;
 }
 
@@ -99,17 +99,17 @@ ToNSString(id aValue)
     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. 
+    // 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];
   }
@@ -219,17 +219,17 @@ ToNSString(id aValue)
 }
 
 - (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);
@@ -241,17 +241,17 @@ ToNSString(id aValue)
 
   AccessibleWrap* accWrap = [self getGeckoAccessible];
   HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr;
   if (!textAcc)
     return;
 
   if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
     [self setText:ToNSString(value)];
-    
+
     return;
   }
 
   if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute]) {
     NSString* stringValue = ToNSString(value);
     if (!stringValue)
       return;
 
@@ -277,17 +277,17 @@ ToNSString(id aValue)
   if ([attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) {
     NSRange range;
     if (!ToNSRange(value, &range))
       return;
 
     textAcc->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
 {
--- a/accessible/tests/mochitest/focus/a11y.ini
+++ b/accessible/tests/mochitest/focus/a11y.ini
@@ -1,6 +1,7 @@
 [DEFAULT]
 
 [test_focusedChild.html]
+skip-if = (os == 'win' && (os_version == '6.2' || os_version == '6.3')) # bug 845134
 [test_takeFocus.html]
 skip-if = buildapp == 'mulet'
 [test_takeFocus.xul]
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -28,16 +28,18 @@ builtin(include, build/autoconf/arch.m4)
 builtin(include, build/autoconf/android.m4)dnl
 builtin(include, build/autoconf/zlib.m4)dnl
 builtin(include, build/autoconf/linux.m4)dnl
 builtin(include, build/autoconf/python-virtualenv.m4)dnl
 builtin(include, build/autoconf/winsdk.m4)dnl
 builtin(include, build/autoconf/icu.m4)dnl
 builtin(include, build/autoconf/ffi.m4)dnl
 builtin(include, build/autoconf/clang-plugin.m4)dnl
+builtin(include, build/autoconf/alloc.m4)dnl
+builtin(include, build/autoconf/ios.m4)dnl
 
 MOZ_PROG_CHECKMSYS()
 
 # Read the user's .mozconfig script.  We can't do this in
 # configure.in: autoconf puts the argument parsing code above anything
 # expanded from configure.in, and we need to get the configure options
 # from .mozconfig in place before that argument parsing code.
 MOZ_READ_MOZCONFIG(.)
--- a/addon-sdk/mach_commands.py
+++ b/addon-sdk/mach_commands.py
@@ -24,17 +24,17 @@ from mach.decorators import (
 class JetpackRunner(MozbuildObject):
     """Run jetpack tests."""
     def run_tests(self, **kwargs):
         self._run_make(target='jetpack-tests')
 
 @CommandProvider
 class MachCommands(MachCommandBase):
     @Command('jetpack-test', category='testing',
-        description='Runs the jetpack test suite (Add-on SDK).')
+        description='Run the jetpack test suite (Add-on SDK).')
     def run_jetpack_test(self, **params):
         # We should probably have a utility function to ensure the tree is
         # ready to run tests. Until then, we just create the state dir (in
         # case the tree wasn't built with mach).
         self._ensure_state_subdir_exists('.')
 
         jetpack = self._spawn(JetpackRunner)
 
--- a/addon-sdk/moz.build
+++ b/addon-sdk/moz.build
@@ -24,16 +24,17 @@ EXTRA_JS_MODULES.sdk.system += [
 if CONFIG['MOZ_WIDGET_TOOLKIT'] != "gonk":
     EXTRA_JS_MODULES.commonjs.method.test += [
         'source/lib/method/test/browser.js',
         'source/lib/method/test/common.js',
     ]
 
     EXTRA_JS_MODULES.commonjs.sdk.deprecated += [
         'source/lib/sdk/deprecated/api-utils.js',
+        'source/lib/sdk/deprecated/memory.js',
         'source/lib/sdk/deprecated/sync-worker.js',
         'source/lib/sdk/deprecated/unit-test-finder.js',
         'source/lib/sdk/deprecated/unit-test.js',
         'source/lib/sdk/deprecated/window-utils.js',
     ]
 
     EXTRA_JS_MODULES.commonjs.sdk.frame += [
         'source/lib/sdk/frame/hidden-frame.js',
@@ -252,20 +253,16 @@ EXTRA_JS_MODULES.commonjs.sdk.content +=
     'source/lib/sdk/content/sandbox.js',
     'source/lib/sdk/content/tab-events.js',
     'source/lib/sdk/content/thumbnail.js',
     'source/lib/sdk/content/utils.js',
     'source/lib/sdk/content/worker-child.js',
     'source/lib/sdk/content/worker.js',
 ]
 
-EXTRA_JS_MODULES.commonjs.sdk.content.sandbox += [
-    'source/lib/sdk/content/sandbox/events.js',
-]
-
 EXTRA_JS_MODULES.commonjs.sdk['context-menu'] += [
     'source/lib/sdk/context-menu/context.js',
     'source/lib/sdk/context-menu/core.js',
     'source/lib/sdk/context-menu/readers.js',
 ]
 
 EXTRA_JS_MODULES.commonjs.sdk.core += [
     'source/lib/sdk/core/disposable.js',
@@ -451,16 +448,17 @@ EXTRA_JS_MODULES.commonjs.sdk.uri += [
 ]
 
 EXTRA_JS_MODULES.commonjs.sdk.url += [
     'source/lib/sdk/url/utils.js',
 ]
 
 EXTRA_JS_MODULES.commonjs.sdk.util += [
     'source/lib/sdk/util/array.js',
+    'source/lib/sdk/util/bond.js',
     'source/lib/sdk/util/collection.js',
     'source/lib/sdk/util/contract.js',
     'source/lib/sdk/util/deprecate.js',
     'source/lib/sdk/util/dispatcher.js',
     'source/lib/sdk/util/list.js',
     'source/lib/sdk/util/match-pattern.js',
     'source/lib/sdk/util/object.js',
     'source/lib/sdk/util/rules.js',
--- a/addon-sdk/source/.travis.yml
+++ b/addon-sdk/source/.travis.yml
@@ -1,12 +1,12 @@
 sudo: false
 language: node_js
 node_js:
-  - "0.12"
+  - "0.10"
 
 env:
   - JPM_FX_DEBUG=0
   - JPM_FX_DEBUG=1
 
 notifications:
   irc: "irc.mozilla.org#jetpack"
 
--- a/addon-sdk/source/bin/jpm-test.js
+++ b/addon-sdk/source/bin/jpm-test.js
@@ -12,23 +12,22 @@ var mocha = new Mocha({
 });
 
 var isDebug = require("./node-scripts/utils").isDebug;
 
 exports.run = function(type) {
   return new Promise(function(resolve) {
     type = type || "";
     [
-      (!isDebug && /^(firefox-bin)?$/.test(type)) && require.resolve("../bin/node-scripts/test.firefox-bin"),
+      (!isDebug && /^(modules)?$/.test(type)) && require.resolve("../bin/node-scripts/test.modules"),
+      (!isDebug && /^(addons)?$/.test(type)) && require.resolve("../bin/node-scripts/test.addons"),
+      (/^(examples)?$/.test(type)) && require.resolve("../bin/node-scripts/test.examples"),
       (!isDebug && /^(docs)?$/.test(type)) && require.resolve("../bin/node-scripts/test.docs"),
       (!isDebug && /^(ini)?$/.test(type)) && require.resolve("../bin/node-scripts/test.ini"),
-      (/^(examples)?$/.test(type)) && require.resolve("../bin/node-scripts/test.examples"),
-      (!isDebug && /^(addons)?$/.test(type)) && require.resolve("../bin/node-scripts/test.addons"),
-      (!isDebug && /^(modules)?$/.test(type)) && require.resolve("../bin/node-scripts/test.modules"),
-    ].forEach(function(filepath) {
+    ].sort().forEach(function(filepath) {
       filepath && mocha.addFile(filepath);
     })
 
     mocha.run(function(failures) {
       resolve(failures);
     });
   });
 }
deleted file mode 100644
--- a/addon-sdk/source/bin/node-scripts/test.firefox-bin.js
+++ /dev/null
@@ -1,37 +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/. */
-"use strict";
-
-var fs = require("fs");
-var Promise = require("promise");
-var chai = require("chai");
-var expect = chai.expect;
-var normalizeBinary = require("fx-runner/lib/utils").normalizeBinary;
-
-//var firefox_binary = process.env["JPM_FIREFOX_BINARY"] || normalizeBinary("nightly");
-
-describe("Checking Firefox binary", function () {
-
-  it("using matching fx-runner version with jpm", function () {
-    var sdkPackageJSON = require("../../package.json");
-    var jpmPackageINI = require("jpm/package.json");
-    expect(sdkPackageJSON.devDependencies["fx-runner"]).to.be.equal(jpmPackageINI.dependencies["fx-runner"]);
-  });
-
-  it("exists", function (done) {
-    var useEnvVar = new Promise(function(resolve) {
-      resolve(process.env["JPM_FIREFOX_BINARY"]);
-    });
-
-    var firefox_binary = process.env["JPM_FIREFOX_BINARY"] ? useEnvVar : normalizeBinary("nightly");
-    firefox_binary.then(function(path) {
-      expect(path).to.be.ok;
-      fs.exists(path, function (exists) {
-        expect(exists).to.be.ok;
-        done();
-      });
-    })
-  });
-
-});
--- a/addon-sdk/source/bin/node-scripts/test.ini.js
+++ b/addon-sdk/source/bin/node-scripts/test.ini.js
@@ -6,63 +6,34 @@
 var fs = require("fs");
 var path = require("path");
 var Promise = require("promise");
 var chai = require("chai");
 var expect = chai.expect;
 var ini = require("./update-ini");
 
 var addonINI = path.resolve("./test/addons/jetpack-addon.ini");
-var packageINI = path.resolve("./test/jetpack-package.ini");
 
 describe("Checking ini files", function () {
 
   it("Check test/addons/jetpack-addon.ini", function (done) {
 
     fs.readFile(addonINI, function (err, data) {
       if (err) {
         throw err;
       }
-      // filter comments
-      var text = data.toString().split("\n").filter(function(line) {
-        return !/^\s*#/.test(line);
-      }).join("\n");
+      var text = data.toString();
       var expected = "";
 
       ini.makeAddonIniContent()
       .then(function(contents) {
         expected = contents;
 
         setTimeout(function end() {
-          expect(text.trim()).to.be.equal(expected.trim());
-          done();
-        });
-      });
-    });
-
-  });
-
-  it("Check test/jetpack-package.ini", function (done) {
-
-    fs.readFile(packageINI, function (err, data) {
-      if (err) {
-        throw err;
-      }
-      // filter comments
-      var text = data.toString().split("\n").filter(function(line) {
-        return !/^\s*#/.test(line);
-      }).join("\n");
-      var expected = "";
-
-      ini.makePackageIniContent()
-      .then(function(contents) {
-        expected = contents;
-
-        setTimeout(function end() {
-          expect(text.trim()).to.be.equal(expected.trim());
+          expect(expected.trim()).to.be.equal(text.trim());
           done();
         });
       });
     });
 
   });
 
 });
--- a/addon-sdk/source/bin/node-scripts/update-ini.js
+++ b/addon-sdk/source/bin/node-scripts/update-ini.js
@@ -6,25 +6,16 @@
 var path = require("path");
 var cp = require("child_process");
 var fs = require("fs");
 var Promise = require("promise");
 var parser = require("ini-parser");
 
 var addonINI = path.resolve("./test/addons/jetpack-addon.ini");
 var addonsDir = path.resolve("./test/addons/");
-var packageINI = path.resolve("./test/jetpack-package.ini");
-var packageDir = path.resolve("./test/");
-var packageIgnorables = [ "addons", "preferences" ];
-var packageSupportFiles = [
-  "fixtures.js",
-  "pagemod-test-helpers.js",
-  "test-context-menu.html",
-  "util.js"
-]
 
 function updateAddonINI() {
   return new Promise(function(resolve) {
     console.log("Start updating " + addonINI);
 
     makeAddonIniContent().
     then(function(contents) {
       fs.writeFileSync(addonINI, contents, { encoding: "utf8" });
@@ -36,107 +27,32 @@ function updateAddonINI() {
 exports.updateAddonINI = updateAddonINI;
 
 function makeAddonIniContent() {
   return new Promise(function(resolve) {
     var data = parser.parse(fs.readFileSync(addonINI, { encoding: "utf8" }).toString());
     var result = {};
 
     fs.readdir(addonsDir, function(err, files) {
-      // get a list of folders
       var folders = files.filter(function(file) {
         return fs.statSync(path.resolve(addonsDir, file)).isDirectory();
       }).sort();
 
-      // copy any related data from the existing ini
       folders.forEach(function(folder) {
         var oldData = data[folder + ".xpi"];
         result[folder] = oldData ? oldData : {};
       });
 
-      // build a new ini file
+      // build ini file
       var contents = [];
       Object.keys(result).sort().forEach(function(key) {
         contents.push("[" + key + ".xpi]");
         Object.keys(result[key]).forEach(function(dataKey) {
           contents.push(dataKey + " = " + result[key][dataKey]);
         });
       });
       contents = contents.join("\n") + "\n";
 
       return resolve(contents);
     });
   });
 }
 exports.makeAddonIniContent = makeAddonIniContent;
-
-function makePackageIniContent() {
-  return new Promise(function(resolve) {
-    var data = parser.parse(fs.readFileSync(packageINI, { encoding: "utf8" }).toString());
-    var result = {};
-
-    fs.readdir(packageDir, function(err, files) {
-      // get a list of folders
-      var folders = files.filter(function(file) {
-        var ignore = (packageIgnorables.indexOf(file) >= 0);
-        var isDir = fs.statSync(path.resolve(packageDir, file)).isDirectory();
-        return (isDir && !ignore);
-      }).sort();
-
-      // get a list of "test-"" files
-      var files = files.filter(function(file) {
-        var ignore = !/^test\-.*\.js$/i.test(file);
-        var isDir = fs.statSync(path.resolve(packageDir, file)).isDirectory();
-        return (!isDir && !ignore);
-      }).sort();
-
-      // get a list of the support files
-      var support_files = packageSupportFiles.map(function(file) {
-        return "  " + file;
-      });
-      folders.forEach(function(folder) {
-        support_files.push("  " + folder + "/**");
-      });
-      support_files = support_files.sort();
-
-      // copy any related data from the existing ini
-      files.forEach(function(file) {
-        var oldData = data[file];
-        result[file] = oldData ? oldData : {};
-      });
-
-      // build a new ini file
-      var contents = [
-        "[DEFAULT]",
-        "support-files ="
-      ];
-      support_files.forEach(function(support_file) {
-        contents.push(support_file);
-      });
-      contents.push("");
-
-      Object.keys(result).sort().forEach(function(key) {
-        contents.push("[" + key + "]");
-        Object.keys(result[key]).forEach(function(dataKey) {
-          contents.push(dataKey + " = " + result[key][dataKey]);
-        });
-      });
-      contents = contents.join("\n") + "\n";
-
-      return resolve(contents);
-    });
-  });
-}
-exports.makePackageIniContent = makePackageIniContent;
-
-function updatePackageINI() {
-  return new Promise(function(resolve) {
-    console.log("Start updating " + packageINI);
-
-    makeAddonIniContent().
-    then(function(contents) {
-      fs.writeFileSync(packageINI, contents, { encoding: "utf8" });
-      console.log("Done updating " + packageINI);
-      resolve();
-    });
-  })
-}
-exports.updatePackageINI = updatePackageINI;
--- a/addon-sdk/source/bin/node-scripts/utils.js
+++ b/addon-sdk/source/bin/node-scripts/utils.js
@@ -60,19 +60,16 @@ function run (cmd, options, p) {
       }
       output.push(data);
       return null;
     });
 
     if (p) {
       proc.stdout.pipe(p.stdout);
     }
-    else if (!isDebug) {
-      proc.stdout.pipe(DEFAULT_PROCESS.stdout);
-    }
     else {
       proc.stdout.on("data", function (data) {
         data = (data || "") + "";
         if (/TEST-/.test(data)) {
           DEFAULT_PROCESS.stdout.write(data.replace(/[\s\n]+$/, "") + "\n");
         }
       });
     }
--- a/addon-sdk/source/gulpfile.js
+++ b/addon-sdk/source/gulpfile.js
@@ -23,22 +23,22 @@ gulp.task('test:examples', function(done
   require("./bin/jpm-test").run("examples").catch(console.error).then(done);
 });
 
 gulp.task('test:modules', function(done) {
   require("./bin/jpm-test").run("modules").catch(console.error).then(done);
 });
 
 gulp.task('test:ini', function(done) {
-  require("./bin/jpm-test").run("ini").catch(console.error).then(done);
-});
-
-gulp.task('test:firefox-bin', function(done) {
-  require("./bin/jpm-test").run("firefox-bin").catch(console.error).then(done);
+  test("ini").catch(console.error).then(done);
 });
 
 gulp.task('patch:clean', function(done) {
   patch.clean().catch(console.error).then(done);
 });
 
 gulp.task('patch:apply', function(done) {
   patch.apply().catch(console.error).then(done);
 });
+
+gulp.task('update:ini', function(done) {
+  ini.updateAddonINI().catch(console.error).then(done);
+});
--- a/addon-sdk/source/lib/sdk/console/traceback.js
+++ b/addon-sdk/source/lib/sdk/console/traceback.js
@@ -1,21 +1,24 @@
 /* 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/. */
+
 "use strict";
 
 module.metadata = {
   "stability": "experimental"
 };
 
-const { Ci, components } = require("chrome");
+const { Cc, Ci, components } = require("chrome");
 const { parseStack, sourceURI } = require("toolkit/loader");
 const { readURISync } = require("../net/url");
 
+exports.sourceURI = sourceURI
+
 function safeGetFileLine(path, line) {
   try {
     var scheme = require("../url").URL(path).scheme;
     // TODO: There should be an easier, more accurate way to figure out
     // what's the case here.
     if (!(scheme == "http" || scheme == "https"))
       return readURISync(path).split("\n")[line - 1];
   } catch (e) {}
--- a/addon-sdk/source/lib/sdk/content/sandbox.js
+++ b/addon-sdk/source/lib/sdk/content/sandbox.js
@@ -5,28 +5,28 @@
 
 module.metadata = {
   'stability': 'unstable'
 };
 
 const { Class } = require('../core/heritage');
 const { EventTarget } = require('../event/target');
 const { on, off, emit } = require('../event/core');
-const { events } = require('./sandbox/events');
 const { requiresAddonGlobal } = require('./utils');
 const { delay: async } = require('../lang/functional');
 const { Ci, Cu, Cc } = require('chrome');
 const timer = require('../timers');
 const { URL } = require('../url');
 const { sandbox, evaluate, load } = require('../loader/sandbox');
 const { merge } = require('../util/object');
 const { getTabForContentWindow } = require('../tabs/utils');
 const { getInnerId } = require('../window/utils');
 const { PlainTextConsole } = require('../console/plain-text');
-const { data } = require('../self');const { isChildLoader } = require('../remote/core');
+const { data } = require('../self');
+const { isChildLoader } = require('../remote/core');
 // WeakMap of sandboxes so we can access private values
 const sandboxes = new WeakMap();
 
 /* Trick the linker in order to ensure shipping these files in the XPI.
   require('./content-worker.js');
   Then, retrieve URL of these files in the XPI:
 */
 let prefix = module.uri.split('sandbox.js')[0];
@@ -161,17 +161,16 @@ const WorkerSandbox = Class({
     let top = window.top === window ? content : content.top;
     let parent = window.parent === window ? content : content.parent;
     merge(content, {
       // We need 'this === window === top' to be true in toplevel scope:
       get window() content,
       get top() top,
       get parent() parent
     });
-
     // Use the Greasemonkey naming convention to provide access to the
     // unwrapped window object so the content script can access document
     // JavaScript values.
     // NOTE: this functionality is experimental and may change or go away
     // at any time!
     //
     // Note that because waivers aren't propagated between origins, we
     // need the unsafeWindow getter to live in the sandbox.
@@ -257,34 +256,28 @@ const WorkerSandbox = Class({
       };
 
       Object.defineProperties(con, properties);
       Cu.makeObjectPropsNormal(con);
 
       win.console = con;
     };
 
-    emit(events, "content-script-before-inserted", {
-      window: window,
-      worker: worker
-    });
-
     // The order of `contentScriptFile` and `contentScript` evaluation is
     // intentional, so programs can load libraries like jQuery from script URLs
     // and use them in scripts.
     let contentScriptFile = ('contentScriptFile' in worker)
           ? worker.contentScriptFile
           : null,
         contentScript = ('contentScript' in worker)
           ? worker.contentScript
           : null;
 
     if (contentScriptFile)
       importScripts.apply(null, [this].concat(contentScriptFile));
-
     if (contentScript) {
       evaluateIn(
         this,
         Array.isArray(contentScript) ? contentScript.join(';\n') : contentScript
       );
     }
   },
   destroy: function destroy(reason) {
deleted file mode 100644
--- a/addon-sdk/source/lib/sdk/content/sandbox/events.js
+++ /dev/null
@@ -1,12 +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/. */
-
-"use strict";
-
-module.metadata = {
-  "stability": "experimental"
-};
-
-const events = {};
-exports.events = events;
new file mode 100644
--- /dev/null
+++ b/addon-sdk/source/lib/sdk/deprecated/memory.js
@@ -0,0 +1,129 @@
+/* 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/. */
+"use strict";
+
+module.metadata = {
+  "stability": "deprecated"
+};
+
+const { Cc, Ci, Cu, components } = require("chrome");
+const { when: unload } = require("../system/unload")
+
+var trackedObjects = {};
+const Compacter = {
+  notify: function() {
+    var newTrackedObjects = {};
+
+    for (let name in trackedObjects) {
+      let oldBin = trackedObjects[name];
+      let newBin = [];
+      let strongRefs = [];
+
+      for (let i = 0, l = oldBin.length; i < l; i++) {
+        let strongRef = oldBin[i].weakref.get();
+
+        if (strongRef && strongRefs.indexOf(strongRef) == -1) {
+          strongRefs.push(strongRef);
+          newBin.push(oldBin[i]);
+        }
+      }
+
+      if (newBin.length)
+        newTrackedObjects[name] = newBin;
+    }
+
+    trackedObjects = newTrackedObjects;
+  }
+};
+
+var timer = Cc["@mozilla.org/timer;1"]
+            .createInstance(Ci.nsITimer);
+timer.initWithCallback(Compacter,
+                       5000,
+                       Ci.nsITimer.TYPE_REPEATING_SLACK);
+
+function track(object, bin, stackFrameNumber) {
+  var frame = components.stack.caller;
+  var weakref = Cu.getWeakReference(object);
+
+  if (!bin && 'constructor' in object)
+    bin = object.constructor.name;
+  if (bin == "Object")
+    bin = frame.name;
+  if (!bin)
+    bin = "generic";
+  if (!(bin in trackedObjects))
+    trackedObjects[bin] = [];
+
+  if (stackFrameNumber > 0)
+    for (va