Merge m-c -> oak
authorBrian R. Bondy <netzen@gmail.com>
Sat, 03 Jan 2015 23:04:37 -0500
changeset 491366 07a508ef6ecc4bf86609d941d19617f58e5dad15
parent 491365 43be9c3acdb36b44be04924ef52e0f03df975690 (current diff)
parent 234914 9703c61caf74093fa2f629e0b9067c806b78cc77 (diff)
child 491367 79ca20c956bfdecfe50958c27a8f44fbbb07b1e5
push id47343
push userbmo:dothayer@mozilla.com
push dateWed, 01 Mar 2017 22:58:58 +0000
milestone37.0a1
Merge m-c -> oak
.reviewboardrc
CLOBBER
b2g/app/Makefile.in
b2g/components/test/unit/data/test_properties
b2g/installer/Makefile.in
b2g/installer/package-manifest.in
browser/app/nsBrowserApp.cpp
browser/app/profile/firefox.js
browser/base/content/browser-tabPreviews.js
browser/base/content/test/general/browser_bug1025195_switchToTabHavingURI_ignoreFragment.js
browser/base/content/test/general/browser_bug816527.js
browser/base/content/test/general/browser_sanitize-download-history.js
browser/base/content/test/general/browser_sanitizeDialog_treeView.js
browser/components/loop/content/shared/css/contacts.css
browser/components/loop/content/shared/css/panel.css
browser/components/loop/standalone/content/l10n/loop.en-US.properties
browser/components/loop/test/shared/vendor/sinon-1.9.0.js
browser/confvars.sh
browser/devtools/fontinspector/test/browser_font.woff
browser/devtools/inspector/test/browser_inspector_menu.js
browser/devtools/inspector/test/doc_inspector_menu.html
browser/devtools/performance/controller.js
browser/devtools/performance/views/main.js
browser/devtools/styleinspector/test/browser_computedview_refresh-on-style-change_02.js
browser/installer/package-manifest.in
browser/modules/BrowserNewTabPreloader.jsm
browser/themes/linux/bad-content-blocked-16.png
browser/themes/linux/bad-content-blocked-64.png
browser/themes/linux/bad-content-unblocked-16.png
browser/themes/linux/bad-content-unblocked-64.png
browser/themes/osx/bad-content-blocked-16.png
browser/themes/osx/bad-content-blocked-16@2x.png
browser/themes/osx/bad-content-blocked-64.png
browser/themes/osx/bad-content-blocked-64@2x.png
browser/themes/osx/bad-content-unblocked-16.png
browser/themes/osx/bad-content-unblocked-16@2x.png
browser/themes/osx/bad-content-unblocked-64.png
browser/themes/osx/bad-content-unblocked-64@2x.png
browser/themes/windows/bad-content-blocked-16.png
browser/themes/windows/bad-content-blocked-64.png
browser/themes/windows/bad-content-unblocked-16.png
browser/themes/windows/bad-content-unblocked-64.png
browser/themes/windows/loop/toolbar-XPVista7.png
build/automationutils.py
build/pgo/js-input/3d-cube.html
build/pgo/js-input/3d-morph.html
build/pgo/js-input/3d-raytrace.html
build/pgo/js-input/access-binary-trees.html
build/pgo/js-input/access-fannkuch.html
build/pgo/js-input/access-nbody.html
build/pgo/js-input/access-nsieve.html
build/pgo/js-input/bitops-3bit-bits-in-byte.html
build/pgo/js-input/bitops-bits-in-byte.html
build/pgo/js-input/bitops-bitwise-and.html
build/pgo/js-input/bitops-nsieve-bits.html
build/pgo/js-input/controlflow-recursive.html
build/pgo/js-input/crypto-aes.html
build/pgo/js-input/crypto-md5.html
build/pgo/js-input/crypto-sha1.html
build/pgo/js-input/date-format-tofte.html
build/pgo/js-input/date-format-xparb.html
build/pgo/js-input/math-cordic.html
build/pgo/js-input/math-partial-sums.html
build/pgo/js-input/math-spectral-norm.html
build/pgo/js-input/regexp-dna.html
build/pgo/js-input/string-base64.html
build/pgo/js-input/string-fasta.html
build/pgo/js-input/string-tagcloud.html
build/pgo/js-input/string-unpack-code.html
build/pgo/js-input/string-validate-input.html
configure.in
dom/animation/test/css-integration/test_animation-effect-name.html
dom/animation/test/css-integration/test_animation-pausing.html
dom/animation/test/css-integration/test_animation-player-playstate.html
dom/animation/test/css-integration/test_animation-target.html
dom/animation/test/css-integration/test_animations-dynamic-changes.html
dom/animation/test/css-integration/test_element-get-animation-players.html
dom/apps/tests/test_widget_browser.html
dom/bindings/parser/tests/test_scalarvaluestring.py
dom/bindings/test/test_scalarvaluestring.html
dom/bluetooth/bluedroid/BluetoothUtils.cpp
dom/bluetooth/bluedroid/BluetoothUtils.h
dom/bluetooth/bluez/BluetoothUtils.cpp
dom/bluetooth/bluez/BluetoothUtils.h
dom/camera/test/callback/test_bug1022766.html
dom/camera/test/callback/test_bug975472.html
dom/camera/test/callback/test_camera.html
dom/camera/test/callback/test_camera_2.html
dom/camera/test/callback/test_camera_3.html
dom/camera/test/callback/test_camera_hardware_auto_focus_moving_cb.html
dom/camera/test/callback/test_camera_hardware_face_detection.html
dom/camera/test/callback/test_camera_hardware_failures.html
dom/camera/test/callback/test_camera_hardware_init_failure.html
dom/canvas/WebGLContextAsyncQueries.cpp
dom/events/test/bug457672.html
dom/events/test/test_dom_before_after_keyboard_event_remote.html
dom/icc/tests/marionette/test_icc_card_lock.js
dom/indexedDB/test/unit/bug1056939.zip
dom/interfaces/base/nsIDOMGlobalObjectConstructor.idl
dom/media/MediaDataDecodedListener.h
dom/media/fmp4/apple/AppleUtils.cpp
dom/media/tests/mochitest/test_peerConnection_bug835370.html
dom/mobileconnection/gonk/MobileConnectionService.js
dom/mobileconnection/gonk/nsIGonkMobileConnectionService.idl
dom/mobileconnection/tests/marionette/test_mobile_mmi.js
dom/mobileconnection/tests/marionette/test_mobile_mmi_call_forwarding.js
dom/mobileconnection/tests/marionette/test_mobile_mmi_change_pin.js
dom/mobilemessage/gonk/SmsService.cpp
dom/mobilemessage/gonk/SmsService.h
dom/mobilemessage/interfaces/nsIRilMobileMessageDatabaseService.idl
dom/quota/AcquireListener.h
dom/telephony/test/marionette/test_emergency_badNumber.js
dom/telephony/test/marionette/test_incoming_answer_hangup.js
dom/telephony/test/marionette/test_incoming_answer_remote_hangup.js
dom/telephony/test/marionette/test_incoming_connecting_remote_hangup.js
dom/telephony/test/marionette/test_incoming_hangup_held.js
dom/telephony/test/marionette/test_incoming_hold_resume.js
dom/telephony/test/marionette/test_incoming_reject.js
dom/telephony/test/marionette/test_incoming_remote_cancel.js
dom/telephony/test/marionette/test_incoming_remote_hangup_held.js
dom/telephony/test/marionette/test_outgoing_answer_hangup.js
dom/telephony/test/marionette/test_outgoing_answer_local_hangup.js
dom/telephony/test/marionette/test_outgoing_emergency_in_airplane_mode.js
dom/telephony/test/marionette/test_outgoing_error_state.js
dom/telephony/test/marionette/test_outgoing_hangup_alerting.js
dom/telephony/test/marionette/test_outgoing_hangup_held.js
dom/telephony/test/marionette/test_outgoing_hold_resume.js
dom/telephony/test/marionette/test_outgoing_reject.js
dom/telephony/test/marionette/test_outgoing_remote_hangup_held.js
dom/webidl/SelectionChangeEvent.webidl
dom/xul/nsIXULContextMenuBuilder.idl
dom/xul/nsXULContextMenuBuilder.cpp
dom/xul/nsXULContextMenuBuilder.h
gfx/layers/Makefile.in
gfx/layers/d3d11/CompositorD3D11.fx
gfx/layers/genTables.py
gfx/ots/ots-brotli-path.patch
gfx/tests/mochitest.ini
image/src/DecodeStrategy.h
image/src/DiscardTracker.cpp
image/src/DiscardTracker.h
image/src/FrameSequence.cpp
image/src/FrameSequence.h
image/src/imgDecoderObserver.h
image/src/imgStatusTracker.cpp
image/src/imgStatusTracker.h
ipc/chromium/src/chrome/common/ipc_logging.cc
ipc/chromium/src/chrome/common/ipc_logging.h
ipc/glue/GeckoChildProcessHost.cpp
js/src/jit-test/tests/basic/bug764289.js
js/src/jit-test/tests/basic/testBug771242.js
js/src/jit-test/tests/jaeger/bug832670.js
js/src/jit-test/tests/latin1/quote.js
js/src/jit/IonAllocPolicy.h
js/src/jit/IonFrames-inl.h
js/src/jit/IonFrames.cpp
js/src/jit/IonFrames.h
js/src/jit/IonLinker.h
js/src/jit/IonMacroAssembler.cpp
js/src/jit/IonMacroAssembler.h
js/src/jsapi-tests/testFuncCallback.cpp
js/src/tests/ecma_6/TypedObject/architecture.js
js/src/tests/ecma_6/TypedObject/arraybuffer_isview.js
js/src/tests/ecma_6/TypedObject/arrayequiv.js
js/src/tests/ecma_6/TypedObject/arrayofstructs.js
js/src/tests/ecma_6/TypedObject/arraytype.js
js/src/tests/ecma_6/TypedObject/arrayzerolen.js
js/src/tests/ecma_6/TypedObject/atopbuffer.js
js/src/tests/ecma_6/TypedObject/atopbufferwithoffset.js
js/src/tests/ecma_6/TypedObject/map-neutered-midway.js
js/src/tests/ecma_6/TypedObject/memory.js
js/src/tests/ecma_6/TypedObject/method_build.js
js/src/tests/ecma_6/TypedObject/method_filter.js
js/src/tests/ecma_6/TypedObject/method_from.js
js/src/tests/ecma_6/TypedObject/method_map.js
js/src/tests/ecma_6/TypedObject/method_reduce.js
js/src/tests/ecma_6/TypedObject/method_scatter.js
js/src/tests/ecma_6/TypedObject/numerictypes.js
js/src/tests/ecma_6/TypedObject/objecttype.js
js/src/tests/ecma_6/TypedObject/redimension.js
js/src/tests/ecma_6/TypedObject/referencetypealiasing.js
js/src/tests/ecma_6/TypedObject/referencetypecoercions.js
js/src/tests/ecma_6/TypedObject/referencetypemultiple.js
js/src/tests/ecma_6/TypedObject/referencetypetrace.js
js/src/tests/ecma_6/TypedObject/referencetypeuninit.js
js/src/tests/ecma_6/TypedObject/scalar_types.js
js/src/tests/ecma_6/TypedObject/shell.js
js/src/tests/ecma_6/TypedObject/simd/bug1023145.js
js/src/tests/ecma_6/TypedObject/simd/bug953270.js
js/src/tests/ecma_6/TypedObject/simd/coercions.js
js/src/tests/ecma_6/TypedObject/simd/float32x4abs.js
js/src/tests/ecma_6/TypedObject/simd/float32x4add.js
js/src/tests/ecma_6/TypedObject/simd/float32x4alignment.js
js/src/tests/ecma_6/TypedObject/simd/float32x4and.js
js/src/tests/ecma_6/TypedObject/simd/float32x4clamp.js
js/src/tests/ecma_6/TypedObject/simd/float32x4div.js
js/src/tests/ecma_6/TypedObject/simd/float32x4equal.js
js/src/tests/ecma_6/TypedObject/simd/float32x4fromint32x4.js
js/src/tests/ecma_6/TypedObject/simd/float32x4fromint32x4bits.js
js/src/tests/ecma_6/TypedObject/simd/float32x4getters.js
js/src/tests/ecma_6/TypedObject/simd/float32x4greaterthan.js
js/src/tests/ecma_6/TypedObject/simd/float32x4greaterthanorequal.js
js/src/tests/ecma_6/TypedObject/simd/float32x4handle.js
js/src/tests/ecma_6/TypedObject/simd/float32x4lessthan.js
js/src/tests/ecma_6/TypedObject/simd/float32x4lessthanorequal.js
js/src/tests/ecma_6/TypedObject/simd/float32x4max.js
js/src/tests/ecma_6/TypedObject/simd/float32x4min.js
js/src/tests/ecma_6/TypedObject/simd/float32x4mul.js
js/src/tests/ecma_6/TypedObject/simd/float32x4neg.js
js/src/tests/ecma_6/TypedObject/simd/float32x4not.js
js/src/tests/ecma_6/TypedObject/simd/float32x4notequal.js
js/src/tests/ecma_6/TypedObject/simd/float32x4or.js
js/src/tests/ecma_6/TypedObject/simd/float32x4reciprocal.js
js/src/tests/ecma_6/TypedObject/simd/float32x4reciprocalsqrt.js
js/src/tests/ecma_6/TypedObject/simd/float32x4reify.js
js/src/tests/ecma_6/TypedObject/simd/float32x4scale.js
js/src/tests/ecma_6/TypedObject/simd/float32x4select.js
js/src/tests/ecma_6/TypedObject/simd/float32x4setter.js
js/src/tests/ecma_6/TypedObject/simd/float32x4sqrt.js
js/src/tests/ecma_6/TypedObject/simd/float32x4sub.js
js/src/tests/ecma_6/TypedObject/simd/float32x4with.js
js/src/tests/ecma_6/TypedObject/simd/float32x4xor.js
js/src/tests/ecma_6/TypedObject/simd/int32x4add.js
js/src/tests/ecma_6/TypedObject/simd/int32x4alignment.js
js/src/tests/ecma_6/TypedObject/simd/int32x4and.js
js/src/tests/ecma_6/TypedObject/simd/int32x4equal.js
js/src/tests/ecma_6/TypedObject/simd/int32x4fromfloat32x4.js
js/src/tests/ecma_6/TypedObject/simd/int32x4fromfloat32x4bits.js
js/src/tests/ecma_6/TypedObject/simd/int32x4getters.js
js/src/tests/ecma_6/TypedObject/simd/int32x4greaterthan.js
js/src/tests/ecma_6/TypedObject/simd/int32x4handle.js
js/src/tests/ecma_6/TypedObject/simd/int32x4lessthan.js
js/src/tests/ecma_6/TypedObject/simd/int32x4lsh.js
js/src/tests/ecma_6/TypedObject/simd/int32x4mul.js
js/src/tests/ecma_6/TypedObject/simd/int32x4neg.js
js/src/tests/ecma_6/TypedObject/simd/int32x4not.js
js/src/tests/ecma_6/TypedObject/simd/int32x4or.js
js/src/tests/ecma_6/TypedObject/simd/int32x4reify.js
js/src/tests/ecma_6/TypedObject/simd/int32x4rsh.js
js/src/tests/ecma_6/TypedObject/simd/int32x4select.js
js/src/tests/ecma_6/TypedObject/simd/int32x4setter.js
js/src/tests/ecma_6/TypedObject/simd/int32x4sub.js
js/src/tests/ecma_6/TypedObject/simd/int32x4ursh.js
js/src/tests/ecma_6/TypedObject/simd/int32x4with.js
js/src/tests/ecma_6/TypedObject/simd/int32x4withflag.js
js/src/tests/ecma_6/TypedObject/simd/int32x4xor.js
js/src/tests/ecma_6/TypedObject/simd/shell.js
js/src/tests/ecma_6/TypedObject/simd/swizzle-shuffle.js
js/src/tests/ecma_6/TypedObject/simpleequiv.js
js/src/tests/ecma_6/TypedObject/size_and_alignment.js
js/src/tests/ecma_6/TypedObject/storageopaque.js
js/src/tests/ecma_6/TypedObject/structequiv.js
js/src/tests/ecma_6/TypedObject/structtypeenumerate.js
js/src/tests/ecma_6/TypedObject/structtypeindexedfields.js
js/src/tests/ecma_6/TypedObject/structtypeprototype.js
js/src/tests/ecma_6/TypedObject/structtypereflection.js
js/src/tests/ecma_6/TypedObject/structtypestructuralassign.js
js/src/tests/js1_5/Regress/regress-315974.js
js/src/tests/js1_7/extensions/regress-470176.js
js/src/tests/js1_8/extensions/regress-378789.js
js/src/tests/js1_8_1/regress/regress-452498-039.js
js/src/tests/js1_8_1/regress/regress-452498-077.js
js/src/tests/js1_8_1/regress/regress-452498-110.js
js/src/tests/js1_8_1/regress/regress-452498-184.js
js/src/tests/js1_8_5/extensions/compound-assign-const.js
js/xpconnect/src/XPCShellImpl.cpp
js/xpconnect/tests/idl/Makefile.in
layout/generic/nsPluginUtilsOSX.h
layout/generic/nsPluginUtilsOSX.mm
layout/style/test/test_flexbox_flex_basis_values.html
media/gmp-clearkey/0.1/openaes/rand.c
media/gmp-clearkey/0.1/openaes/rand.h
media/libtheora/include/moz.build
media/libtheora/include/theora/moz.build
media/libtheora/lib/Makefile.in
media/libtheora/lib/moz.build
media/libvpx/vp8/encoder/arm/neon/vp8_mse16x16_neon.asm
media/webrtc/signaling/include/CC_Call.h
media/webrtc/signaling/include/CC_CallInfo.h
media/webrtc/signaling/include/CC_CallServerInfo.h
media/webrtc/signaling/include/CC_CallTypes.h
media/webrtc/signaling/include/CC_Common.h
media/webrtc/signaling/include/CC_Device.h
media/webrtc/signaling/include/CC_DeviceInfo.h
media/webrtc/signaling/include/CC_FeatureInfo.h
media/webrtc/signaling/include/CC_Line.h
media/webrtc/signaling/include/CC_LineInfo.h
media/webrtc/signaling/include/CC_Observer.h
media/webrtc/signaling/include/CC_Service.h
media/webrtc/signaling/include/CSFAudioControl.h
media/webrtc/signaling/include/CSFVideoControl.h
media/webrtc/signaling/include/CallControlManager.h
media/webrtc/signaling/include/ECC_Observer.h
media/webrtc/signaling/include/ECC_Types.h
media/webrtc/signaling/include/PhoneDetails.h
media/webrtc/signaling/include/SharedPtr.h
media/webrtc/signaling/include/debug-psipcc-types.h
media/webrtc/signaling/src/callcontrol/CC_CallTypes.cpp
media/webrtc/signaling/src/callcontrol/CallControlManager.cpp
media/webrtc/signaling/src/callcontrol/CallControlManagerImpl.cpp
media/webrtc/signaling/src/callcontrol/CallControlManagerImpl.h
media/webrtc/signaling/src/callcontrol/ECC_Types.cpp
media/webrtc/signaling/src/callcontrol/PhoneDetailsImpl.cpp
media/webrtc/signaling/src/callcontrol/PhoneDetailsImpl.h
media/webrtc/signaling/src/callcontrol/debug-psipcc-types.cpp
media/webrtc/signaling/src/media/CSFVideoControlWrapper.cpp
media/webrtc/signaling/src/media/VcmSIPCCBinding.cpp
media/webrtc/signaling/src/media/VcmSIPCCBinding.h
media/webrtc/signaling/src/media/cip_Sipcc_CodecMask.h
media/webrtc/signaling/src/sipcc/core/ccapp/CCProvider.h
media/webrtc/signaling/src/sipcc/core/ccapp/call_logger.c
media/webrtc/signaling/src/sipcc/core/ccapp/call_logger.h
media/webrtc/signaling/src/sipcc/core/ccapp/capability_set.c
media/webrtc/signaling/src/sipcc/core/ccapp/capability_set.h
media/webrtc/signaling/src/sipcc/core/ccapp/cc_blf.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_call_feature.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_config.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_device_feature.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_device_manager.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_device_manager.h
media/webrtc/signaling/src/sipcc/core/ccapp/cc_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_service.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_call.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_call_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_config.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_device.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_device_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_feature_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_line.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_line_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_service.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_snapshot.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_snapshot.h
media/webrtc/signaling/src/sipcc/core/ccapp/ccapp_task.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapp_task.h
media/webrtc/signaling/src/sipcc/core/ccapp/ccprovider.c
media/webrtc/signaling/src/sipcc/core/ccapp/conf_roster.c
media/webrtc/signaling/src/sipcc/core/ccapp/conf_roster.h
media/webrtc/signaling/src/sipcc/core/ccapp/sessionHash.c
media/webrtc/signaling/src/sipcc/core/ccapp/sessionHash.h
media/webrtc/signaling/src/sipcc/core/common/cfgfile_utils.c
media/webrtc/signaling/src/sipcc/core/common/cfgfile_utils.h
media/webrtc/signaling/src/sipcc/core/common/config_api.c
media/webrtc/signaling/src/sipcc/core/common/config_parser.c
media/webrtc/signaling/src/sipcc/core/common/config_parser.h
media/webrtc/signaling/src/sipcc/core/common/init.c
media/webrtc/signaling/src/sipcc/core/common/logger.c
media/webrtc/signaling/src/sipcc/core/common/logger.h
media/webrtc/signaling/src/sipcc/core/common/logmsg.h
media/webrtc/signaling/src/sipcc/core/common/misc.c
media/webrtc/signaling/src/sipcc/core/common/plat.c
media/webrtc/signaling/src/sipcc/core/common/platform_api.c
media/webrtc/signaling/src/sipcc/core/common/prot_cfgmgr_private.h
media/webrtc/signaling/src/sipcc/core/common/prot_configmgr.c
media/webrtc/signaling/src/sipcc/core/common/prot_configmgr.h
media/webrtc/signaling/src/sipcc/core/common/resource_manager.c
media/webrtc/signaling/src/sipcc/core/common/resource_manager.h
media/webrtc/signaling/src/sipcc/core/common/sip_socket_api.c
media/webrtc/signaling/src/sipcc/core/common/subscription_handler.c
media/webrtc/signaling/src/sipcc/core/common/subscription_handler.h
media/webrtc/signaling/src/sipcc/core/common/text_strings.c
media/webrtc/signaling/src/sipcc/core/common/text_strings.h
media/webrtc/signaling/src/sipcc/core/common/ui.c
media/webrtc/signaling/src/sipcc/core/gsm/ccapi.c
media/webrtc/signaling/src/sipcc/core/gsm/ccapi_strings.c
media/webrtc/signaling/src/sipcc/core/gsm/dcsm.c
media/webrtc/signaling/src/sipcc/core/gsm/fim.c
media/webrtc/signaling/src/sipcc/core/gsm/fsm.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmb2bcnf.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmcac.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmcnf.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmdef.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmxfr.c
media/webrtc/signaling/src/sipcc/core/gsm/gsm.c
media/webrtc/signaling/src/sipcc/core/gsm/gsm_sdp.c
media/webrtc/signaling/src/sipcc/core/gsm/gsm_sdp_crypto.c
media/webrtc/signaling/src/sipcc/core/gsm/h/fim.h
media/webrtc/signaling/src/sipcc/core/gsm/h/fsm.h
media/webrtc/signaling/src/sipcc/core/gsm/h/gsm.h
media/webrtc/signaling/src/sipcc/core/gsm/h/gsm_sdp.h
media/webrtc/signaling/src/sipcc/core/gsm/h/lsm.h
media/webrtc/signaling/src/sipcc/core/gsm/h/lsm_private.h
media/webrtc/signaling/src/sipcc/core/gsm/h/sm.h
media/webrtc/signaling/src/sipcc/core/gsm/lsm.c
media/webrtc/signaling/src/sipcc/core/gsm/media_cap_tbl.c
media/webrtc/signaling/src/sipcc/core/gsm/sm.c
media/webrtc/signaling/src/sipcc/core/gsm/subapi.c
media/webrtc/signaling/src/sipcc/core/includes/ccSession.h
media/webrtc/signaling/src/sipcc/core/includes/ccapi.h
media/webrtc/signaling/src/sipcc/core/includes/check_sync.h
media/webrtc/signaling/src/sipcc/core/includes/ci.h
media/webrtc/signaling/src/sipcc/core/includes/config.h
media/webrtc/signaling/src/sipcc/core/includes/configapp.h
media/webrtc/signaling/src/sipcc/core/includes/configmgr.h
media/webrtc/signaling/src/sipcc/core/includes/debug.h
media/webrtc/signaling/src/sipcc/core/includes/dialplan.h
media/webrtc/signaling/src/sipcc/core/includes/dialplanint.h
media/webrtc/signaling/src/sipcc/core/includes/digcalc.h
media/webrtc/signaling/src/sipcc/core/includes/dns_utils.h
media/webrtc/signaling/src/sipcc/core/includes/dtmf.h
media/webrtc/signaling/src/sipcc/core/includes/embedded.h
media/webrtc/signaling/src/sipcc/core/includes/intelpentiumtypes.h
media/webrtc/signaling/src/sipcc/core/includes/kpml_common_util.h
media/webrtc/signaling/src/sipcc/core/includes/kpmlmap.h
media/webrtc/signaling/src/sipcc/core/includes/md5.h
media/webrtc/signaling/src/sipcc/core/includes/memory.h
media/webrtc/signaling/src/sipcc/core/includes/misc_apps_task.h
media/webrtc/signaling/src/sipcc/core/includes/misc_util.h
media/webrtc/signaling/src/sipcc/core/includes/phntask.h
media/webrtc/signaling/src/sipcc/core/includes/phone.h
media/webrtc/signaling/src/sipcc/core/includes/phone_debug.h
media/webrtc/signaling/src/sipcc/core/includes/phone_platform_constants.h
media/webrtc/signaling/src/sipcc/core/includes/phone_types.h
media/webrtc/signaling/src/sipcc/core/includes/platform_api.h
media/webrtc/signaling/src/sipcc/core/includes/pres_sub_not_handler.h
media/webrtc/signaling/src/sipcc/core/includes/publish_int.h
media/webrtc/signaling/src/sipcc/core/includes/rcc_int_types.h
media/webrtc/signaling/src/sipcc/core/includes/regexp.h
media/webrtc/signaling/src/sipcc/core/includes/ringlist.h
media/webrtc/signaling/src/sipcc/core/includes/rtp_defs.h
media/webrtc/signaling/src/sipcc/core/includes/scSession.h
media/webrtc/signaling/src/sipcc/core/includes/session.h
media/webrtc/signaling/src/sipcc/core/includes/sessionConstants.h
media/webrtc/signaling/src/sipcc/core/includes/sessionTypes.h
media/webrtc/signaling/src/sipcc/core/includes/sessuri.h
media/webrtc/signaling/src/sipcc/core/includes/singly_link_list.h
media/webrtc/signaling/src/sipcc/core/includes/sip_socket_api.h
media/webrtc/signaling/src/sipcc/core/includes/sntp.h
media/webrtc/signaling/src/sipcc/core/includes/string_lib.h
media/webrtc/signaling/src/sipcc/core/includes/subapi.h
media/webrtc/signaling/src/sipcc/core/includes/task.h
media/webrtc/signaling/src/sipcc/core/includes/time2.h
media/webrtc/signaling/src/sipcc/core/includes/timer.h
media/webrtc/signaling/src/sipcc/core/includes/tnpphone.h
media/webrtc/signaling/src/sipcc/core/includes/uart.h
media/webrtc/signaling/src/sipcc/core/includes/uiapi.h
media/webrtc/signaling/src/sipcc/core/includes/upgrade.h
media/webrtc/signaling/src/sipcc/core/includes/util_ios_queue.h
media/webrtc/signaling/src/sipcc/core/includes/util_parse.h
media/webrtc/signaling/src/sipcc/core/includes/util_string.h
media/webrtc/signaling/src/sipcc/core/includes/www.h
media/webrtc/signaling/src/sipcc/core/includes/xml_defs.h
media/webrtc/signaling/src/sipcc/core/sdp/ccsdp.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_access.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_attr.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_attr_access.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_base64.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_base64.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_config.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_main.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_os_defs.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_private.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_services_unix.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_services_win32.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_token.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_utils.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_callinfo.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_cc.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_common_util.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_core.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_debug.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_info.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_messaging.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_tcp.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_timers.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_tls.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_udp.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_pmh.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_publish.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_register.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_reldev.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_sdp.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_spi_utils.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_subsmanager.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_task.c
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_callinfo.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_cc.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_common_cb.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_core.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_credentials.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_macros.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_messaging.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_tcp.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_timers.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_tls.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_udp.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_pmh.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_protocol.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_publish.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_register.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_reldev.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_sdp.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_sim.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_spi_utils.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_subsmanager.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_task.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/httpish.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/httpish_protocol.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/pmhdefs.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/pmhutils.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/regmgrapi.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_ccm_transport.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_common_regmgr.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_common_transport.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_csps_transport.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_interface_regmgr.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_platform_task.h
media/webrtc/signaling/src/sipcc/core/sipstack/httpish.c
media/webrtc/signaling/src/sipcc/core/sipstack/pmhutils.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_common_regmgr.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_common_transport.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_csps_transport.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_interface_regmgr.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_platform_task.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_platform_win32_task.c
media/webrtc/signaling/src/sipcc/core/src-common/configapp.c
media/webrtc/signaling/src/sipcc/core/src-common/dialplan.c
media/webrtc/signaling/src/sipcc/core/src-common/dialplanint.c
media/webrtc/signaling/src/sipcc/core/src-common/digcalc.c
media/webrtc/signaling/src/sipcc/core/src-common/kpml_common_util.c
media/webrtc/signaling/src/sipcc/core/src-common/kpmlmap.c
media/webrtc/signaling/src/sipcc/core/src-common/md5.c
media/webrtc/signaling/src/sipcc/core/src-common/misc_apps_task.c
media/webrtc/signaling/src/sipcc/core/src-common/pres_sub_not_handler.c
media/webrtc/signaling/src/sipcc/core/src-common/publish_int.c
media/webrtc/signaling/src/sipcc/core/src-common/singly_link_list.c
media/webrtc/signaling/src/sipcc/core/src-common/sll_lite.c
media/webrtc/signaling/src/sipcc/core/src-common/string_lib.c
media/webrtc/signaling/src/sipcc/core/src-common/util_ios_queue.c
media/webrtc/signaling/src/sipcc/core/src-common/util_parse.c
media/webrtc/signaling/src/sipcc/core/src-common/util_string.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_align.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_assert.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_errno.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_errno.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_in.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_init.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_private.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_rand.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_socket.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_socket.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_stdio.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_stdio.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_string.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_string.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_strings.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_threads.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_time.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_timers.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_timers_using_select.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_tst.c
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_tst.h
media/webrtc/signaling/src/sipcc/cpr/android/cpr_android_types.h
media/webrtc/signaling/src/sipcc/cpr/common/cpr_ipc.c
media/webrtc/signaling/src/sipcc/cpr/common/cpr_string.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_align.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_assert.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_errno.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_errno.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_in.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_init.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_private.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_rand.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_socket.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_socket.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_stdio.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_stdio.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_string.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_string.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_strings.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_threads.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_time.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_timers.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_timers_using_select.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_tst.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_types.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_assert.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_debug.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_errno.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_in.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_ipc.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_locks.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_memory.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_rand.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_socket.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_stddef.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_stdio.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_stdlib.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_string.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_strings.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_threads.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_time.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_timers.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_types.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_align.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_assert.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_errno.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_errno.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_in.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_init.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_private.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_rand.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_socket.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_socket.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_stdio.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_stdio.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_string.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_string.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_strings.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_threads.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_time.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_timers.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_timers_using_select.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_tst.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_tst.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_types.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_assert.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_debug.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_debug.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_defines.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_errno.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_errno.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_in.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_init.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_locks.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_locks.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_rand.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_rand.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_socket.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_socket.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_stdio.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_stdio.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_string.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_string.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_strings.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_threads.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_threads.cpp
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_time.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_timers.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_timers.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_types.h
media/webrtc/signaling/src/sipcc/include/cc_blf.h
media/webrtc/signaling/src/sipcc/include/cc_blf_listener.h
media/webrtc/signaling/src/sipcc/include/cc_call_feature.h
media/webrtc/signaling/src/sipcc/include/cc_call_listener.h
media/webrtc/signaling/src/sipcc/include/cc_config.h
media/webrtc/signaling/src/sipcc/include/cc_constants.h
media/webrtc/signaling/src/sipcc/include/cc_debug.h
media/webrtc/signaling/src/sipcc/include/cc_device_feature.h
media/webrtc/signaling/src/sipcc/include/cc_device_listener.h
media/webrtc/signaling/src/sipcc/include/cc_info.h
media/webrtc/signaling/src/sipcc/include/cc_info_listener.h
media/webrtc/signaling/src/sipcc/include/cc_service.h
media/webrtc/signaling/src/sipcc/include/cc_service_listener.h
media/webrtc/signaling/src/sipcc/include/cc_types.h
media/webrtc/signaling/src/sipcc/include/ccapi_call.h
media/webrtc/signaling/src/sipcc/include/ccapi_call_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_call_listener.h
media/webrtc/signaling/src/sipcc/include/ccapi_calllog.h
media/webrtc/signaling/src/sipcc/include/ccapi_conf_roster.h
media/webrtc/signaling/src/sipcc/include/ccapi_device.h
media/webrtc/signaling/src/sipcc/include/ccapi_device_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_device_listener.h
media/webrtc/signaling/src/sipcc/include/ccapi_feature_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_line.h
media/webrtc/signaling/src/sipcc/include/ccapi_line_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_line_listener.h
media/webrtc/signaling/src/sipcc/include/ccapi_service.h
media/webrtc/signaling/src/sipcc/include/ccapi_types.h
media/webrtc/signaling/src/sipcc/include/ccsdp.h
media/webrtc/signaling/src/sipcc/include/ccsdp_rtcp_fb.h
media/webrtc/signaling/src/sipcc/include/config_api.h
media/webrtc/signaling/src/sipcc/include/dns_util.h
media/webrtc/signaling/src/sipcc/include/fsmdef_states.h
media/webrtc/signaling/src/sipcc/include/peer_connection_types.h
media/webrtc/signaling/src/sipcc/include/plat_api.h
media/webrtc/signaling/src/sipcc/include/reset_api.h
media/webrtc/signaling/src/sipcc/include/sll_lite.h
media/webrtc/signaling/src/sipcc/include/vcm.h
media/webrtc/signaling/src/sipcc/include/xml_parser_defines.h
media/webrtc/signaling/src/sipcc/plat/common/dns_utils.c
media/webrtc/signaling/src/sipcc/plat/common/plat_debug.h
media/webrtc/signaling/src/sipcc/plat/common/tnp_blf.h
media/webrtc/signaling/src/sipcc/plat/csf2g/model.c
media/webrtc/signaling/src/sipcc/plat/csf2g/reset_api.c
media/webrtc/signaling/src/sipcc/plat/darwin/netif.c
media/webrtc/signaling/src/sipcc/plat/darwin/plat_api_stub.c
media/webrtc/signaling/src/sipcc/plat/unix-common/random.c
media/webrtc/signaling/src/sipcc/plat/win32/dns_utils.c
media/webrtc/signaling/src/sipcc/plat/win32/mystub.c
media/webrtc/signaling/src/sipcc/plat/win32/plat_api_stub.c
media/webrtc/signaling/src/sipcc/plat/win32/plat_api_win.c
media/webrtc/signaling/src/sipcc/stub/cc_blf_stub.c
media/webrtc/signaling/src/sipcc/stub/vcm_stub.c
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCall.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCall.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallServerInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallServerInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDevice.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDevice.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDeviceInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDeviceInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCFeatureInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCFeatureInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLine.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLine.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLineInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLineInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCService.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCService.h
media/webrtc/signaling/src/softphonewrapper/ccapi_plat_api_impl.cpp
media/webrtc/trunk/webrtc/tools/e2e_quality/audio/perf
memory/jemalloc/0001-Use-a-configure-test-to-detect-whether-to-use-a-cons.patch
memory/jemalloc/0002-Use-ULL-prefix-instead-of-LLU-for-unsigned-long-long.patch
memory/jemalloc/0003-Don-t-use-msvc_compat-s-C99-headers-with-MSVC-versio.patch
memory/jemalloc/0004-Try-to-use-__builtin_ffsl-if-ffsl-is-unavailable.patch
memory/jemalloc/0005-Check-for-__builtin_ffsl-before-ffsl.patch
memory/jemalloc/0006-Fix-clang-warnings.patch
memory/jemalloc/0007-Ensure-the-default-purgeable-zone-is-after-the-defau.patch
memory/jemalloc/0008-Allow-to-build-with-clang-cl.patch
memory/jemalloc/0009-Remove-srcroot-from-cfghdrs_in-cfgoutputs_in-and-cfg.patch
memory/jemalloc/src/test/integration/allocm.c
memory/jemalloc/src/test/integration/mremap.c
memory/jemalloc/src/test/integration/rallocm.c
memory/jemalloc/src/test/unit/prof_accum.h
memory/jemalloc/src/test/unit/prof_accum_a.c
memory/jemalloc/src/test/unit/prof_accum_b.c
memory/replace/dmd/test/full-heap-empty-expected.txt
memory/replace/dmd/test/full-heap-sampled-expected.txt
memory/replace/dmd/test/full-heap-unsampled1-expected.txt
memory/replace/dmd/test/full-heap-unsampled2-expected.txt
memory/replace/dmd/test/full-reports-empty-expected.txt
memory/replace/dmd/test/full-reports-sampled-expected.txt
memory/replace/dmd/test/full-reports-unsampled1-expected.txt
memory/replace/dmd/test/full-reports-unsampled2-expected.txt
memory/replace/dmd/test/script-diff-basic-expected.txt
memory/replace/dmd/test/script-diff-options-expected.txt
memory/replace/dmd/test/script-diff1.json
memory/replace/dmd/test/script-diff2.json
mobile/android/app/build.gradle
mobile/android/base/LightweightTheme.java
mobile/android/base/LightweightThemeDrawable.java
mobile/android/base/LocaleAware.java
mobile/android/base/build.gradle
mobile/android/base/gradle_AndroidManifest.xml
mobile/android/base/mozglue/GeckoLoader.java.in
mobile/android/base/newtablet/res/color-large-v11/new_tablet_tab_item_title.xml
mobile/android/base/newtablet/res/color-large-v11/new_tablet_tab_strip_item_title.xml
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_default_favicon.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_ic_menu_back.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_ic_menu_forward.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_ic_menu_reload.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_menu.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_tab_close.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_tab_close_active.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_tabs_count.png
mobile/android/base/newtablet/res/drawable-large-hdpi-v11/new_tablet_tabs_count_foreground.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_default_favicon.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_ic_menu_back.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_ic_menu_forward.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_ic_menu_reload.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_menu.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_tab_close.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_tab_close_active.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_tabs_count.png
mobile/android/base/newtablet/res/drawable-large-mdpi-v11/new_tablet_tabs_count_foreground.png
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_action_bar_button.xml
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_site_security_level.xml
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_site_security_unknown.xml
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_tab_item_close_button.xml
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_tab_strip_button.xml
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_tab_strip_divider.xml
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_tab_strip_item_bg.xml
mobile/android/base/newtablet/res/drawable-large-v11/new_tablet_url_bar_nav_button.xml
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_default_favicon.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_ic_menu_back.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_ic_menu_forward.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_ic_menu_reload.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_menu.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_tab_close.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_tab_close_active.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_tabs_count.png
mobile/android/base/newtablet/res/drawable-large-xhdpi-v11/new_tablet_tabs_count_foreground.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_default_favicon.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_ic_menu_back.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_ic_menu_forward.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_ic_menu_reload.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_menu.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_tab_close.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_tab_close_active.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_tabs_count.png
mobile/android/base/newtablet/res/drawable-large-xxhdpi-v11/new_tablet_tabs_count_foreground.png
mobile/android/base/newtablet/res/layout-large-v11/new_tablet_browser_toolbar.xml
mobile/android/base/newtablet/res/layout-large-v11/new_tablet_tab_strip.xml
mobile/android/base/newtablet/res/layout-large-v11/new_tablet_tabs_counter.xml
mobile/android/base/newtablet/res/layout-large-v11/tab_strip.xml
mobile/android/base/newtablet/res/layout-large-v11/tab_strip_item.xml
mobile/android/base/newtablet/res/layout-large-v11/tab_strip_item_view.xml
mobile/android/base/resources/drawable-hdpi/shield.png
mobile/android/base/resources/drawable-hdpi/shield_doorhanger.png
mobile/android/base/resources/drawable-hdpi/warning.png
mobile/android/base/resources/drawable-hdpi/warning_doorhanger.png
mobile/android/base/resources/drawable-mdpi/shield.png
mobile/android/base/resources/drawable-mdpi/shield_doorhanger.png
mobile/android/base/resources/drawable-mdpi/warning.png
mobile/android/base/resources/drawable-mdpi/warning_doorhanger.png
mobile/android/base/resources/drawable-xhdpi/share_overlay_background.9.png
mobile/android/base/resources/drawable-xhdpi/shield.png
mobile/android/base/resources/drawable-xhdpi/shield_doorhanger.png
mobile/android/base/resources/drawable-xhdpi/warning.png
mobile/android/base/resources/drawable-xhdpi/warning_doorhanger.png
mobile/android/base/resources/drawable/handle_end_level.xml
mobile/android/base/resources/drawable/handle_start_level.xml
mobile/android/base/tests/robocop_article.html
mobile/android/base/tests/testTitleBar.java
mobile/android/base/widget/ThemedEditText.java.in
mobile/android/base/widget/ThemedImageButton.java.in
mobile/android/base/widget/ThemedImageView.java.in
mobile/android/base/widget/ThemedLinearLayout.java.in
mobile/android/base/widget/ThemedRelativeLayout.java.in
mobile/android/base/widget/ThemedTextSwitcher.java.in
mobile/android/base/widget/ThemedTextView.java.in
mobile/android/base/widget/ThemedView.java.in
mobile/android/chrome/content/JSDOMParser.js
mobile/android/chrome/content/Readability.js
mobile/android/chrome/content/aboutReader.html
mobile/android/chrome/content/aboutReader.js
mobile/android/chrome/content/downloads.js
mobile/android/chrome/content/readerWorker.js
mobile/android/components/DownloadManagerUI.js
mobile/android/config/proguard.cfg
mobile/android/gradle/Makefile.in
mobile/android/gradle/moz.build
mobile/android/locales/en-US/chrome/aboutReader.properties
mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/cellscanner/CellScannerNoWCDMA.java
mobile/android/thirdparty/build.gradle
mobile/android/thirdparty/gradle_AndroidManifest.xml
netwerk/protocol/http/SpdyPush3.cpp
netwerk/protocol/http/SpdyPush3.h
netwerk/protocol/http/SpdySession3.cpp
netwerk/protocol/http/SpdySession3.h
netwerk/protocol/http/SpdyStream3.cpp
netwerk/protocol/http/SpdyStream3.h
netwerk/test/httpserver/jar.mn
python/codegen/makeutils.py
python/mozbuild/mozbuild/test/backend/data/variable_passthru/bar.c
python/mozbuild/mozbuild/test/backend/data/variable_passthru/bar.cpp
python/mozbuild/mozbuild/test/backend/data/variable_passthru/bar.mm
python/mozbuild/mozbuild/test/backend/data/variable_passthru/bar.s
python/mozbuild/mozbuild/test/backend/data/variable_passthru/baz.S
python/mozbuild/mozbuild/test/backend/data/variable_passthru/foo.S
python/mozbuild/mozbuild/test/backend/data/variable_passthru/foo.asm
python/mozbuild/mozbuild/test/backend/data/variable_passthru/foo.c
python/mozbuild/mozbuild/test/backend/data/variable_passthru/foo.cpp
python/mozbuild/mozbuild/test/backend/data/variable_passthru/foo.mm
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/fans.S
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/fans.asm
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/fans.c
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/fans.cpp
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/fans.mm
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/tans.c
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/tans.cpp
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/tans.mm
python/mozbuild/mozbuild/test/frontend/data/variable-passthru/tans.s
python/psutil/HISTORY
python/psutil/README
python/psutil/psutil/_error.py
python/psutil/psutil/_psmswindows.py
python/psutil/psutil/_psutil_mswindows.c
python/psutil/psutil/_psutil_mswindows.h
python/psutil/psutil/arch/mswindows/ntextapi.h
python/psutil/psutil/arch/mswindows/process_handles.c
python/psutil/psutil/arch/mswindows/process_handles.h
python/psutil/psutil/arch/mswindows/process_info.c
python/psutil/psutil/arch/mswindows/process_info.h
python/psutil/psutil/arch/mswindows/security.c
python/psutil/psutil/arch/mswindows/security.h
python/psutil/psutil/error.py
python/virtualenv/docs/news.rst
python/virtualenv/docs/virtualenv.rst
python/virtualenv/virtualenv_support/pip-1.5.4-py2.py3-none-any.whl
python/virtualenv/virtualenv_support/setuptools-2.2-py2.py3-none-any.whl
security/manager/boot/src/Makefile.in
security/manager/pki/src/Makefile.in
security/manager/ssl/tests/mochitest/bugs/test_bug484111.html
security/manager/ssl/tests/unit/head_psm.js
security/manager/ssl/tests/unit/test_cert_signatures/ca-dsa.der
security/manager/ssl/tests/unit/test_cert_signatures/dsa-tampered-int-valid-ee.der
security/manager/ssl/tests/unit/test_cert_signatures/dsa-valid-int-tampered-ee.der
security/manager/ssl/tests/unit/test_cert_signatures/dsa-valid.der
security/manager/ssl/tests/unit/test_cert_signatures/int-dsa-tampered.der
security/manager/ssl/tests/unit/test_cert_signatures/int-dsa-valid.der
security/manager/ssl/tests/unit/test_ev_certs/cert8.db
security/manager/ssl/tests/unit/test_ev_certs/int-ev-valid.p12
security/manager/ssl/tests/unit/test_ev_certs/int-non-ev-root.p12
security/manager/ssl/tests/unit/test_ev_certs/key3.db
security/manager/ssl/tests/unit/test_ev_certs/non-evroot-ca.p12
security/manager/ssl/tests/unit/test_ev_certs/secmod.db
security/manager/ssl/tests/unit/test_keysize/dsa-caBad.der
security/manager/ssl/tests/unit/test_keysize/dsa-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeBad-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeOK-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeOK-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeOK-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/dsa-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-caBad.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeBad-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeOK-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeOK-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeOK-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-caBad.der
security/manager/ssl/tests/unit/test_keysize/rsa-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeBad-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeOK-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeOK-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeOK-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/rsa-intOK-caOK.der
security/sandbox/chromium/base/platform_file.h
security/sandbox/chromium/base/strings/string_util_stripped.cc
security/sandbox/chromium/base/win/event_trace_provider.cc
security/sandbox/chromium/base/win/event_trace_provider.h
security/sandbox/chromium/base/win/registry.cc
security/sandbox/chromium/base/win/registry.h
security/sandbox/chromium/sandbox/linux/sandbox_export.h
security/sandbox/linux/LICENSE
security/sandbox/linux/android_arm_ucontext.h
security/sandbox/linux/android_i386_ucontext.h
security/sandbox/linux/android_ucontext.h
security/sandbox/linux/arm_linux_syscalls.h
security/sandbox/linux/linux_seccomp.h
security/sandbox/linux/linux_syscalls.h
security/sandbox/linux/x86_32_linux_syscalls.h
security/sandbox/linux/x86_64_linux_syscalls.h
security/sandbox/win/src/warnonlysandbox/warnOnlySandbox.cpp
security/sandbox/win/src/warnonlysandbox/warnOnlySandbox.h
security/sandbox/win/src/warnonlysandbox/wosCallbacks.h
security/sandbox/win/src/warnonlysandbox/wosTypes.h
testing/android_cppunittest_manifest.txt
testing/b2g_cppunittest_manifest.txt
testing/mach_commands.py
testing/mochitest/mochitest_options.py
testing/mochitest/pywebsocket/mod_pywebsocket/handshake/draft75.py
testing/mochitest/runtests.py
testing/mochitest/tests/SimpleTest/Makefile.in
testing/profiles/Makefile.in
testing/runcppunittests.py
testing/web-platform/meta/IndexedDB/idb_webworkers.htm.ini
testing/web-platform/meta/XMLHttpRequest/send-authentication-basic-repeat-no-args.htm.ini
testing/web-platform/meta/XMLHttpRequest/send-authentication-basic-setrequestheader.htm.ini
testing/web-platform/meta/XMLHttpRequest/xmlhttprequest-timeout-overridesexpires.html.ini
testing/web-platform/meta/custom-elements/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html.ini
testing/web-platform/meta/custom-elements/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html.ini
testing/web-platform/meta/custom-elements/instantiating-custom-elements/custom-element-type-local-name.html.ini
testing/web-platform/meta/custom-elements/instantiating-custom-elements/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html.ini
testing/web-platform/meta/custom-elements/instantiating-custom-elements/extensions-to-document-interface/create-element-type-is-a-local-name.html.ini
testing/web-platform/meta/media-source/mediasource-appendwindow.html.ini
testing/web-platform/meta/media-source/mediasource-endofstream-invaliderror.html.ini
testing/web-platform/meta/media-source/mediasource-multiple-attach.html.ini
testing/web-platform/meta/pointerevents/pointerevent_lostpointercapture_for_disconnected_node.html.ini
testing/web-platform/meta/pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html.ini
testing/web-platform/meta/pointerevents/pointerevent_pointerleave_after_pointerup_nohover.html.ini
testing/web-platform/meta/pointerevents/pointerevent_pointerout_after_pointercancel_touch.html.ini
testing/web-platform/meta/pointerevents/pointerevent_pointerout_after_pointerup_nohover.html.ini
testing/web-platform/meta/pointerevents/pointerevent_pointerout_pen.html.ini
testing/web-platform/meta/pointerevents/pointerevent_setpointercapture_disconnected.html.ini
testing/web-platform/meta/resource-timing/test_resource_timing.html.ini
testing/web-platform/meta/selectors-api/tests/submissions/Opera/level2-baseline.html.ini
testing/web-platform/meta/web-animations/animation-timeline/animation-timeline.html.ini
testing/web-platform/meta/workers/Worker_cross_origin_security_err.htm.ini
testing/web-platform/meta/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null.html.ini
testing/web-platform/tests/DOMEvents/tests/approved/addEventListener.optional.useCapture.html
testing/web-platform/tests/DOMEvents/tests/approved/createEvent.NOT_SUPPORTED_ERR.html
testing/web-platform/tests/DOMEvents/tests/approved/dispatchEvent.return.value.html
testing/web-platform/tests/DOMEvents/tests/submissions/Microsoft/converted/addEventListener.optional.useCapture.html
testing/web-platform/tests/DOMEvents/tests/submissions/Microsoft/converted/createEvent.NOT_SUPPORTED_ERR.html
testing/web-platform/tests/DOMEvents/tests/submissions/Microsoft/converted/dispatchEvent.return.value.html
testing/web-platform/tests/DOMEvents/tests/submissions/Microsoft/createEvent.NOT_SUPPORTED_ERR.html
testing/web-platform/tests/XMLHttpRequest/setrequestheader-invalid-arguments.htm
testing/web-platform/tests/dom/nodes/Document-createProcessingInstruction-literal-1.xhtml
testing/web-platform/tests/dom/nodes/Document-createProcessingInstruction-literal-2.xhtml
testing/web-platform/tests/html/semantics/forms/the-datalist-element/datalistelement.html
testing/web-platform/tests/pointerevents/pointerevent_lostpointercapture_for_disconnected_node.html
testing/web-platform/tests/pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html
testing/web-platform/tests/pointerevents/pointerevent_pointerleave_after_pointerup_nohover.html
testing/web-platform/tests/pointerevents/pointerevent_pointerout_after_pointercancel_touch.html
testing/web-platform/tests/pointerevents/pointerevent_pointerout_after_pointerup_nohover.html
testing/web-platform/tests/pointerevents/pointerevent_pointerout_pen.html
testing/web-platform/tests/pointerevents/pointerevent_setpointercapture_disconnected.html
testing/web-platform/tests/selectors-api/tests/submissions/Opera/level2-baseline.html
testing/web-platform/tests/web-animations/animation-timeline/animation-timeline.html
testing/web-platform/tests/web-animations/animation-timeline/idlharness.html
testing/web-platform/tests/webdriver/webserver.py
testing/xpcshell/node-spdy/lib/spdy/parser.js
testing/xpcshell/node-spdy/lib/spdy/protocol/generic.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v2/dictionary.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v2/framer.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v2/index.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v2/protocol.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v3/dictionary.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v3/framer.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v3/index.js
testing/xpcshell/node-spdy/lib/spdy/protocol/v3/protocol.js
testing/xpcshell/node-spdy/test/unit/framer-test.js
testing/xpcshell/node-spdy/test/unit/parser-test.js
testing/xpcshell/node-spdy/test/unit/server-test.js
testing/xpcshell/runxpcshelltests.py
testing/xpcshell/selftest.py
toolkit/components/places/tests/unit/history/head_history.js
toolkit/components/places/tests/unit/history/test_remove.js
toolkit/components/places/tests/unit/history/xpcshell.ini
toolkit/components/telemetry/Histograms.json
toolkit/crashreporter/nsExceptionHandler.cpp
toolkit/devtools/server/tests/unit/test_breakpointstore.js
toolkit/mozapps/installer/packager.mk
toolkit/mozapps/installer/upload-files.mk
toolkit/mozapps/update/nsUpdateService.js
toolkit/mozapps/update/tests/unit_aus_update/head_update.js
toolkit/themes/shared/in-content/check.png
toolkit/themes/shared/in-content/check@2x.png
toolkit/xre/nsAppRunner.cpp
toolkit/xre/nsUpdateDriver.cpp
toolkit/xre/nsXREDirProvider.cpp
webapprt/test/content/mochitest.ini
widget/android/bindings/mediacodec-classes.txt
widget/android/bindings/surfacetexture-classes.txt
widget/gonk/nativewindow/IGonkGraphicBufferConsumer.cpp
xpcom/build/XPCOMInit.cpp
xpcom/tests/TestArray.cpp
xpcom/tests/TestCRT.cpp
xpcom/tests/TestEncoding.cpp
xpcom/tests/TestExpirationTracker.cpp
xpcom/tests/TestStrings.cpp
--- a/.gitignore
+++ b/.gitignore
@@ -62,8 +62,11 @@ toolkit/devtools/chrome.manifest
 # Tag files generated by GNU Global
 GTAGS
 GRTAGS
 GSYMS
 GPATH
 
 # Git clone directory for updating web-platform-tests
 testing/web-platform/sync/
+
+# Android Gradle artifacts.
+mobile/android/gradle/.gradle
--- a/.hgignore
+++ b/.hgignore
@@ -88,8 +88,11 @@ GPATH
 # Loop legal content build/deploy artifacts
 
 # XXX Once a grunt contrib-clean command has been added (bug 1066491), or
 # once legal has centralized their ToS and PP hosting infrastructure,
 # (expected Q4 2014) the legal doc build stuff for Loop can be removed,
 # including the following three lines
 ^browser/components/loop/standalone/content/legal/styles/.*\.css$
 ^browser/components/loop/standalone/content/legal/terms/en_US\.html$
+
+# Android Gradle artifacts.
+^mobile/android/gradle/.gradle
--- a/.hgtags
+++ b/.hgtags
@@ -100,8 +100,16 @@ 05025f4889a0bf4dc99ce0c244c750adc002f015
 9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE
 ba2cc1eda988a1614d8986ae145d28e1268409b9 FIREFOX_AURORA_29_BASE
 83c9853e136451474dfa6d1aaa60a7fca7d2d83a FIREFOX_AURORA_30_BASE
 cfde3603b0206e119abea76fdd6e134b634348f1 FIREFOX_AURORA_31_BASE
 16f3cac5e8fe471e12f76d6a94a477b14e78df7c FIREFOX_AURORA_32_BASE
 dc23164ba2a289a8b22902e30990c77d9677c214 FIREFOX_AURORA_33_BASE
 c360f3d1c00d73b0c1fb0a2c0da525cb55e58b83 FIREFOX_AURORA_34_BASE
 cec1a116c4f9a3e887d52e9a26e8bbec200fe162 FIREFOX_AURORA_35_BASE
+ca89fe55717059e4e43040d16d260765ffa9dca7 FIREFOX_AURORA_36_BASE
+6047f510fb73c7dbe9866066fb01ddda3c170c9c FIREFOX_AURORA_37_BASE
+ca89fe55717059e4e43040d16d260765ffa9dca7 FIREFOX_AURORA_36_BASE
+0000000000000000000000000000000000000000 FIREFOX_AURORA_36_BASE
+6047f510fb73c7dbe9866066fb01ddda3c170c9c FIREFOX_AURORA_37_BASE
+0000000000000000000000000000000000000000 FIREFOX_AURORA_37_BASE
+0000000000000000000000000000000000000000 FIREFOX_AURORA_36_BASE
+b297a6727acfd21e757ddd38cd61894812666265 FIREFOX_AURORA_36_BASE
deleted file mode 100644
--- a/.reviewboardrc
+++ /dev/null
@@ -1,5 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-REVIEWBOARD_URL = 'https://reviewboard.allizom.org/'
--- a/CLOBBER
+++ b/CLOBBER
@@ -17,9 +17,13 @@
 #
 # 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.
 
+<<<<<<< local
 Bug 973933 - MAR updater cert data
+=======
+Bug 1066383 - Clobber needed due to build system not reliably picking up an IDL removal.
+>>>>>>> other
--- a/accessible/atk/moz.build
+++ b/accessible/atk/moz.build
@@ -46,8 +46,14 @@ FINAL_LIBRARY = 'xul'
 if CONFIG['MOZ_ENABLE_GTK']:
     CFLAGS += CONFIG['TK_CFLAGS']
     CXXFLAGS += CONFIG['TK_CFLAGS']
 
 if CONFIG['MOZ_ENABLE_DBUS']:
     CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS']
 
 include('/ipc/chromium/chromium-config.mozbuild')
+
+if CONFIG['CLANG_CXX']:
+    # Suppress clang warning about unused function from gobject's RTTI macros.
+    CXXFLAGS += ['-Wno-unused-function']
+
+FAIL_ON_WARNINGS = True
--- a/accessible/base/ARIAMap.cpp
+++ b/accessible/base/ARIAMap.cpp
@@ -676,16 +676,17 @@ nsRoleMapEntry aria::gEmptyRoleMap = {
  * whether there is an ARIA role or not:
  */
 static const EStateRule sWAIUnivStateMap[] = {
   eARIABusy,
   eARIADisabled,
   eARIAExpanded,  // Currently under spec review but precedent exists
   eARIAHasPopup,  // Note this is technically a "property"
   eARIAInvalid,
+  eARIAModal,
   eARIARequired,  // XXX not global, Bug 553117
   eARIANone
 };
 
 
 /**
  * ARIA attribute map for attribute characteristics.
  * @note ARIA attributes that don't have any flags are not included here.
@@ -711,16 +712,17 @@ static const AttrCharacteristics gWAIUni
   {&nsGkAtoms::aria_grabbed,                            ATTR_VALTOKEN | ATTR_GLOBAL },
   {&nsGkAtoms::aria_haspopup,          ATTR_BYPASSOBJ | ATTR_VALTOKEN | ATTR_GLOBAL },
   {&nsGkAtoms::aria_hidden,   ATTR_BYPASSOBJ_IF_FALSE | ATTR_VALTOKEN | ATTR_GLOBAL },
   {&nsGkAtoms::aria_invalid,           ATTR_BYPASSOBJ | ATTR_VALTOKEN | ATTR_GLOBAL },
   {&nsGkAtoms::aria_label,             ATTR_BYPASSOBJ                 | ATTR_GLOBAL },
   {&nsGkAtoms::aria_labelledby,        ATTR_BYPASSOBJ                 | ATTR_GLOBAL },
   {&nsGkAtoms::aria_level,             ATTR_BYPASSOBJ                               }, /* handled via groupPosition */
   {&nsGkAtoms::aria_live,                               ATTR_VALTOKEN | ATTR_GLOBAL },
+  {&nsGkAtoms::aria_modal,             ATTR_BYPASSOBJ | ATTR_VALTOKEN | ATTR_GLOBAL },
   {&nsGkAtoms::aria_multiline,         ATTR_BYPASSOBJ | ATTR_VALTOKEN               },
   {&nsGkAtoms::aria_multiselectable,   ATTR_BYPASSOBJ | ATTR_VALTOKEN               },
   {&nsGkAtoms::aria_owns,              ATTR_BYPASSOBJ                 | ATTR_GLOBAL },
   {&nsGkAtoms::aria_orientation,                        ATTR_VALTOKEN               },
   {&nsGkAtoms::aria_posinset,          ATTR_BYPASSOBJ                               }, /* handled via groupPosition */
   {&nsGkAtoms::aria_pressed,           ATTR_BYPASSOBJ | ATTR_VALTOKEN               },
   {&nsGkAtoms::aria_readonly,          ATTR_BYPASSOBJ | ATTR_VALTOKEN               },
   {&nsGkAtoms::aria_relevant,          ATTR_BYPASSOBJ                 | ATTR_GLOBAL },
--- a/accessible/base/ARIAMap.h
+++ b/accessible/base/ARIAMap.h
@@ -223,25 +223,25 @@ uint64_t UniversalStatesFor(mozilla::dom
  *
  * @param aAtom  ARIA attribute
  * @return       A bitflag representing the attribute characteristics
  *               (see above for possible bit masks, prefixed "ATTR_")
  */
 uint8_t AttrCharacteristicsFor(nsIAtom* aAtom);
 
  /**
-  * Represents a simple enumerator for iterating through ARIA attributes 
-  * exposed as object attributes on a given accessible. 
+  * Represents a simple enumerator for iterating through ARIA attributes
+  * exposed as object attributes on a given accessible.
   */
 class AttrIterator
 {
 public:
-  explicit AttrIterator(nsIContent* aContent) : 
-    mContent(aContent), mAttrIdx(0) 
-  { 
+  explicit AttrIterator(nsIContent* aContent) :
+    mContent(aContent), mAttrIdx(0)
+  {
     mAttrCount = mContent->GetAttrCount();
   }
 
   bool Next(nsAString& aAttrName, nsAString& aAttrValue);
 
 private:
   AttrIterator() MOZ_DELETE;
   AttrIterator(const AttrIterator&) MOZ_DELETE;
--- a/accessible/base/ARIAStateMap.cpp
+++ b/accessible/base/ARIAStateMap.cpp
@@ -180,16 +180,26 @@ aria::MapToState(EStateRule aRule, dom::
       static const TokenTypeData data(
         nsGkAtoms::aria_invalid, eBoolType,
         0, states::INVALID);
 
       MapTokenType(aElement, aState, data);
       return true;
     }
 
+    case eARIAModal:
+    {
+      static const TokenTypeData data(
+        nsGkAtoms::aria_modal, eBoolType,
+        0, states::MODAL);
+
+      MapTokenType(aElement, aState, data);
+      return true;
+    }
+
     case eARIAMultiline:
     {
       static const TokenTypeData data(
         nsGkAtoms::aria_multiline, eBoolType | eDefinedIfAbsent,
         0, states::MULTI_LINE, states::SINGLE_LINE);
 
       MapTokenType(aElement, aState, data);
       return true;
--- a/accessible/base/ARIAStateMap.h
+++ b/accessible/base/ARIAStateMap.h
@@ -28,16 +28,17 @@ enum EStateRule
   eARIABusy,
   eARIACheckableBool,
   eARIACheckableMixed,
   eARIACheckedMixed,
   eARIADisabled,
   eARIAExpanded,
   eARIAHasPopup,
   eARIAInvalid,
+  eARIAModal,
   eARIAMultiline,
   eARIAMultiSelectable,
   eARIAOrientation,
   eARIAPressed,
   eARIAReadonly,
   eARIAReadonlyOrEditable,
   eARIAReadonlyOrEditableIfDefined,
   eARIARequired,
--- a/accessible/base/DocManager.cpp
+++ b/accessible/base/DocManager.cpp
@@ -4,17 +4,19 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "DocManager.h"
 
 #include "ApplicationAccessible.h"
 #include "ARIAMap.h"
 #include "DocAccessible-inl.h"
 #include "DocAccessibleChild.h"
+#include "DocAccessibleParent.h"
 #include "nsAccessibilityService.h"
+#include "Platform.h"
 #include "RootAccessibleWrap.h"
 #include "xpcAccessibleDocument.h"
 
 #ifdef A11Y_LOG
 #include "Logging.h"
 #endif
 
 #include "mozilla/EventListenerManager.h"
@@ -31,16 +33,18 @@
 #include "nsCoreUtils.h"
 #include "nsXULAppAPI.h"
 #include "mozilla/dom/ContentChild.h"
 
 using namespace mozilla;
 using namespace mozilla::a11y;
 using namespace mozilla::dom;
 
+StaticAutoPtr<nsTArray<DocAccessibleParent*>> DocManager::sRemoteDocuments;
+
 ////////////////////////////////////////////////////////////////////////////////
 // DocManager
 ////////////////////////////////////////////////////////////////////////////////
 
 DocManager::DocManager()
   : mDocAccessibleCache(2), mXPCDocumentCache(0)
 {
 }
@@ -528,8 +532,22 @@ DocManager::SearchIfDocIsRefreshing(cons
       aDocAccessible->mNotificationController->IsUpdating()) {
     *(static_cast<bool*>(aUserArg)) = true;
     return PL_DHASH_STOP;
   }
 
   return PL_DHASH_NEXT;
 }
 #endif
+
+void
+DocManager::RemoteDocAdded(DocAccessibleParent* aDoc)
+{
+  if (!sRemoteDocuments) {
+    sRemoteDocuments = new nsTArray<DocAccessibleParent*>;
+    ClearOnShutdown(&sRemoteDocuments);
+  }
+
+  MOZ_ASSERT(!sRemoteDocuments->Contains(aDoc),
+      "How did we already have the doc!");
+  sRemoteDocuments->AppendElement(aDoc);
+  ProxyCreated(aDoc);
+}
--- a/accessible/base/DocManager.h
+++ b/accessible/base/DocManager.h
@@ -1,21 +1,23 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_a11_DocManager_h_
 #define mozilla_a11_DocManager_h_
 
+#include "mozilla/ClearOnShutdown.h"
 #include "nsIDocument.h"
 #include "nsIDOMEventListener.h"
 #include "nsRefPtrHashtable.h"
 #include "nsIWebProgressListener.h"
 #include "nsWeakReference.h"
 #include "nsIPresShell.h"
+#include "mozilla/StaticPtr.h"
 
 namespace mozilla {
 namespace a11y {
 
 class Accessible;
 class DocAccessible;
 class xpcAccessibleDocument;
 class DocAccessibleParent;
@@ -69,31 +71,26 @@ public:
    */
   xpcAccessibleDocument* GetXPCDocument(DocAccessible* aDocument);
   xpcAccessibleDocument* GetCachedXPCDocument(DocAccessible* aDocument) const
     { return mXPCDocumentCache.GetWeak(aDocument); }
 
   /*
    * Notification that a top level document in a content process has gone away.
    */
-  void RemoteDocShutdown(DocAccessibleParent* aDoc)
+  static void RemoteDocShutdown(DocAccessibleParent* aDoc)
   {
-    DebugOnly<bool> result = mRemoteDocuments.RemoveElement(aDoc);
+    DebugOnly<bool> result = sRemoteDocuments->RemoveElement(aDoc);
     MOZ_ASSERT(result, "Why didn't we find the document!");
   }
 
   /*
    * Notify of a new top level document in a content process.
    */
-  void RemoteDocAdded(DocAccessibleParent* aDoc)
-  {
-    MOZ_ASSERT(!mRemoteDocuments.Contains(aDoc),
-               "How did we already have the doc!");
-    mRemoteDocuments.AppendElement(aDoc);
-  }
+  static void RemoteDocAdded(DocAccessibleParent* aDoc);
 
 #ifdef DEBUG
   bool IsProcessingRefreshDriverNotification() const;
 #endif
 
 protected:
   DocManager();
   virtual ~DocManager() { }
@@ -171,17 +168,17 @@ private:
 
   typedef nsRefPtrHashtable<nsPtrHashKey<const DocAccessible>, xpcAccessibleDocument>
     XPCDocumentHashtable;
   XPCDocumentHashtable mXPCDocumentCache;
 
   /*
    * The list of remote top level documents.
    */
-  nsTArray<DocAccessibleParent*> mRemoteDocuments;
+  static StaticAutoPtr<nsTArray<DocAccessibleParent*>> sRemoteDocuments;
 };
 
 /**
  * Return the existing document accessible for the document if any.
  * Note this returns the doc accessible for the primary pres shell if there is
  * more than one.
  */
 inline DocAccessible*
--- a/accessible/base/moz.build
+++ b/accessible/base/moz.build
@@ -92,8 +92,10 @@ else:
     ]
 
 FINAL_LIBRARY = 'xul'
 
 if CONFIG['MOZ_ENABLE_GTK']:
     CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
 
 include('/ipc/chromium/chromium-config.mozbuild')
+
+FAIL_ON_WARNINGS = True
--- a/accessible/base/nsAccessibilityService.cpp
+++ b/accessible/base/nsAccessibilityService.cpp
@@ -1475,17 +1475,18 @@ nsAccessibilityService::CreateHTMLAccess
       tag == nsGkAtoms::h1 ||
       tag == nsGkAtoms::h2 ||
       tag == nsGkAtoms::h3 ||
       tag == nsGkAtoms::h4 ||
       tag == nsGkAtoms::h5 ||
       tag == nsGkAtoms::h6 ||
       tag == nsGkAtoms::nav ||
       tag == nsGkAtoms::q ||
-      tag == nsGkAtoms::section) {
+      tag == nsGkAtoms::section ||
+      tag == nsGkAtoms::time) {
     nsRefPtr<Accessible> accessible =
       new HyperTextAccessibleWrap(aContent, document);
     return accessible.forget();
   }
 
   if (tag == nsGkAtoms::label) {
     nsRefPtr<Accessible> accessible =
       new HTMLLabelAccessible(aContent, document);
@@ -1550,16 +1551,19 @@ nsAccessibilityService::CreateAccessible
       break;
     case eHTMLImageMapType:
       newAcc = new HTMLImageMapAccessible(aContent, document);
       break;
     case eHTMLLiType:
       if (aContext->IsList() &&
           aContext->GetContent() == aContent->GetParent()) {
         newAcc = new HTMLLIAccessible(aContent, document);
+      } else {
+        // Otherwise create a generic text accessible to avoid text jamming.
+        newAcc = new HyperTextAccessibleWrap(aContent, document);
       }
       break;
     case eHTMLSelectListType:
       newAcc = new HTMLSelectListAccessible(aContent, document);
       break;
     case eHTMLMediaType:
       newAcc = new EnumRoleAccessible(aContent, document, roles::GROUPING);
       break;
--- a/accessible/generic/Accessible-inl.h
+++ b/accessible/generic/Accessible-inl.h
@@ -62,20 +62,12 @@ Accessible::HasNumericValue() const
 
 inline void
 Accessible::ScrollTo(uint32_t aHow) const
 {
   if (mContent)
     nsCoreUtils::ScrollTo(mDoc->PresShell(), mContent, aHow);
 }
 
-inline bool
-Accessible::UpdateChildren()
-{
-  AutoTreeMutation mut(this);
-  InvalidateChildren();
-  return EnsureChildren();
-}
-
 } // namespace a11y
 } // namespace mozilla
 
 #endif
--- a/accessible/generic/Accessible.cpp
+++ b/accessible/generic/Accessible.cpp
@@ -2007,18 +2007,17 @@ Accessible::Language(nsAString& aLanguag
   }
 }
 
 void
 Accessible::InvalidateChildren()
 {
   int32_t childCount = mChildren.Length();
   for (int32_t childIdx = 0; childIdx < childCount; childIdx++) {
-    Accessible* child = mChildren.ElementAt(childIdx);
-    child->UnbindFromParent();
+    mChildren.ElementAt(childIdx)->UnbindFromParent();
   }
 
   mEmbeddedObjCollector = nullptr;
   mChildren.Clear();
   SetChildrenFlag(eChildrenUninitialized);
 }
 
 bool
@@ -2441,33 +2440,27 @@ Accessible::TestChildCache(Accessible* a
       break;
   }
 
   NS_ASSERTION(child == aCachedChild,
                "[TestChildCache] cached accessible wasn't found. Wrong accessible tree!");
 #endif
 }
 
-// Accessible public
-bool
+void
 Accessible::EnsureChildren()
 {
-  if (IsDefunct()) {
-    SetChildrenFlag(eChildrenUninitialized);
-    return true;
-  }
+  NS_ASSERTION(!IsDefunct(), "Caching children for defunct accessible!");
 
   if (!IsChildrenFlag(eChildrenUninitialized))
-    return false;
+    return;
 
   // State is embedded children until text leaf accessible is appended.
   SetChildrenFlag(eEmbeddedChildren); // Prevent reentry
-
   CacheChildren();
-  return false;
 }
 
 Accessible*
 Accessible::GetSiblingAtOffset(int32_t aOffset, nsresult* aError) const
 {
   if (!mParent || mIndexInParent == -1) {
     if (aError)
       *aError = NS_ERROR_UNEXPECTED;
--- a/accessible/generic/Accessible.h
+++ b/accessible/generic/Accessible.h
@@ -361,24 +361,19 @@ public:
 
   /**
    * Set the ARIA role map entry for a new accessible.
    */
   void SetRoleMapEntry(nsRoleMapEntry* aRoleMapEntry)
     { mRoleMapEntry = aRoleMapEntry; }
 
   /**
-   * Update the children cache.
+   * Cache children if necessary.
    */
-  bool UpdateChildren();
-
-  /**
-   * Cache children if necessary. Return true if the accessible is defunct.
-   */
-  bool EnsureChildren();
+  void EnsureChildren();
 
   /**
    * Set the child count to -1 (unknown) and null out cached child pointers.
    * Should be called when accessible tree is changed because document has
    * transformed. Note, if accessible cares about its parent relation chain
    * itself should override this method to do nothing.
    */
   virtual void InvalidateChildren();
@@ -582,16 +577,17 @@ public:
 
   bool IsDoc() const { return HasGenericType(eDocument); }
   DocAccessible* AsDoc();
 
   bool IsHyperText() const { return HasGenericType(eHyperText); }
   HyperTextAccessible* AsHyperText();
 
   bool IsHTMLBr() const { return mType == eHTMLBRType; }
+  bool IsHTMLCombobox() const { return mType == eHTMLComboboxType; }
   bool IsHTMLFileInput() const { return mType == eHTMLFileInputType; }
 
   bool IsHTMLListItem() const { return mType == eHTMLLiType; }
   HTMLLIAccessible* AsHTMLListItem();
 
   bool IsHTMLOptGroup() const { return mType == eHTMLOptGroupType; }
 
   bool IsHTMLTable() const { return mType == eHTMLTableType; }
@@ -866,16 +862,29 @@ public:
    * DOM UI event, if otherwise then false. For example, HTMLCheckboxAccessible
    * process nsIDocumentObserver::ContentStateChanged instead
    * 'CheckboxStateChange' event.
    */
   bool NeedsDOMUIEvent() const
     { return !(mStateFlags & eIgnoreDOMUIEvent); }
 
   /**
+   * Get/set survivingInUpdate bit on child indicating that parent recollects
+   * its children.
+   */
+  bool IsSurvivingInUpdate() const { return mStateFlags & eSurvivingInUpdate; }
+  void SetSurvivingInUpdate(bool aIsSurviving)
+  {
+    if (aIsSurviving)
+      mStateFlags |= eSurvivingInUpdate;
+    else
+      mStateFlags &= ~eSurvivingInUpdate;
+  }
+
+  /**
    * Return true if this accessible has a parent whose name depends on this
    * accessible.
    */
   bool HasNameDependentParent() const
     { return mContextFlags & eHasNameDependentParent; }
 
 protected:
 
@@ -948,18 +957,19 @@ protected:
     eIsDefunct = 1 << 0, // accessible is defunct
     eIsNotInDocument = 1 << 1, // accessible is not in document
     eSharedNode = 1 << 2, // accessible shares DOM node from another accessible
     eNotNodeMapEntry = 1 << 3, // accessible shouldn't be in document node map
     eHasNumericValue = 1 << 4, // accessible has a numeric value
     eGroupInfoDirty = 1 << 5, // accessible needs to update group info
     eSubtreeMutating = 1 << 6, // subtree is being mutated
     eIgnoreDOMUIEvent = 1 << 7, // don't process DOM UI events for a11y events
+    eSurvivingInUpdate = 1 << 8, // parent drops children to recollect them
 
-    eLastStateFlag = eIgnoreDOMUIEvent
+    eLastStateFlag = eSurvivingInUpdate
   };
 
   /**
    * Flags used for contextual information about the accessible.
    */
   enum ContextFlags {
     eHasNameDependentParent = 1 << 0, // Parent's name depends on this accessible.
 
@@ -1063,17 +1073,17 @@ protected:
   nsCOMPtr<nsIContent> mContent;
   DocAccessible* mDoc;
 
   nsRefPtr<Accessible> mParent;
   nsTArray<nsRefPtr<Accessible> > mChildren;
   int32_t mIndexInParent;
 
   static const uint8_t kChildrenFlagsBits = 2;
-  static const uint8_t kStateFlagsBits = 8;
+  static const uint8_t kStateFlagsBits = 9;
   static const uint8_t kContextFlagsBits = 1;
   static const uint8_t kTypeBits = 6;
   static const uint8_t kGenericTypesBits = 13;
 
   /**
    * Keep in sync with ChildrenFlags, StateFlags, ContextFlags, and AccTypes.
    */
   uint32_t mChildrenFlags : kChildrenFlagsBits;
--- a/accessible/generic/DocAccessible.cpp
+++ b/accessible/generic/DocAccessible.cpp
@@ -1303,29 +1303,20 @@ DocAccessible::RecreateAccessible(nsICon
 void
 DocAccessible::ProcessInvalidationList()
 {
   // Invalidate children of container accessible for each element in
   // invalidation list. Allow invalidation list insertions while container
   // children are recached.
   for (uint32_t idx = 0; idx < mInvalidationList.Length(); idx++) {
     nsIContent* content = mInvalidationList[idx];
-    Accessible* accessible = GetAccessible(content);
-    if (!accessible) {
+    if (!HasAccessible(content)) {
       Accessible* container = GetContainerAccessible(content);
-      if (container) {
-        container->UpdateChildren();
-        accessible = GetAccessible(content);
-      }
-    }
-
-    // Make sure the subtree is created.
-    if (accessible) {
-      AutoTreeMutation mut(accessible);
-      CacheChildrenInSubtree(accessible);
+      if (container)
+        UpdateTreeOnInsertion(container);
     }
   }
 
   mInvalidationList.Clear();
 }
 
 Accessible*
 DocAccessible::GetAccessibleEvenIfNotInMap(nsINode* aNode) const
@@ -1628,138 +1619,101 @@ DocAccessible::UpdateAccessibleOnAttrCha
 void
 DocAccessible::ProcessContentInserted(Accessible* aContainer,
                                       const nsTArray<nsCOMPtr<nsIContent> >* aInsertedContent)
 {
   // Process insertions if the container accessible is still in tree.
   if (!HasAccessible(aContainer->GetNode()))
     return;
 
-  bool containerNotUpdated = true;
-
   for (uint32_t idx = 0; idx < aInsertedContent->Length(); idx++) {
     // The container might be changed, for example, because of the subsequent
     // overlapping content insertion (i.e. other content was inserted between
     // this inserted content and its container or the content was reinserted
     // into different container of unrelated part of tree). To avoid a double
     // processing of the content insertion ignore this insertion notification.
     // Note, the inserted content might be not in tree at all at this point what
     // means there's no container. Ignore the insertion too.
 
-    Accessible* presentContainer =
+    Accessible* container =
       GetContainerAccessible(aInsertedContent->ElementAt(idx));
-    if (presentContainer != aContainer)
+    if (container != aContainer)
       continue;
 
-    if (containerNotUpdated) {
-      containerNotUpdated = false;
-
-      if (aContainer == this) {
-        // If new root content has been inserted then update it.
-        nsIContent* rootContent = nsCoreUtils::GetRoleContent(mDocumentNode);
-        if (rootContent != mContent) {
-          mContent = rootContent;
-          SetRoleMapEntry(aria::GetRoleMap(mContent));
-        }
-
-        // Continue to update the tree even if we don't have root content.
-        // For example, elements may be inserted under the document element while
-        // there is no HTML body element.
+    if (container == this) {
+      // If new root content has been inserted then update it.
+      nsIContent* rootContent = nsCoreUtils::GetRoleContent(mDocumentNode);
+      if (rootContent != mContent) {
+        mContent = rootContent;
+        SetRoleMapEntry(aria::GetRoleMap(mContent));
       }
 
-      // XXX: Invalidate parent-child relations for container accessible and its
-      // children because there's no good way to find insertion point of new child
-      // accessibles into accessible tree. We need to invalidate children even
-      // there's no inserted accessibles in the end because accessible children
-      // are created while parent recaches child accessibles.
-      // XXX Group invalidation here may be redundant with invalidation in
-      // UpdateTree.
-      AutoTreeMutation mut(aContainer);
-      aContainer->InvalidateChildren();
-      CacheChildrenInSubtree(aContainer);
+      // Continue to update the tree even if we don't have root content.
+      // For example, elements may be inserted under the document element while
+      // there is no HTML body element.
     }
 
-    UpdateTree(aContainer, aInsertedContent->ElementAt(idx), true);
+    // HTML comboboxes have no-content list accessible as an intermidiate
+    // containing all options.
+    if (container->IsHTMLCombobox())
+      container = container->FirstChild();
+
+    // We have a DOM/layout change under the container accessible, and its tree
+    // might need an update. Since DOM/layout change of the element may affect
+    // on the accessibleness of adjacent elements (for example, insertion of
+    // extra HTML:body make the old body accessible) then we have to recache
+    // children of the container, and then fire show/hide events for a change.
+    UpdateTreeOnInsertion(container);
+    break;
   }
 }
 
 void
-DocAccessible::UpdateTree(Accessible* aContainer, nsIContent* aChildNode,
-                          bool aIsInsert)
+DocAccessible::UpdateTreeOnInsertion(Accessible* aContainer)
 {
-  uint32_t updateFlags = eNoAccessible;
+  for (uint32_t idx = 0; idx < aContainer->ContentChildCount(); idx++) {
+    Accessible* child = aContainer->ContentChildAt(idx);
+    child->SetSurvivingInUpdate(true);
+   }
 
-  // If child node is not accessible then look for its accessible children.
-  Accessible* child = GetAccessible(aChildNode);
-#ifdef A11Y_LOG
-  if (logging::IsEnabled(logging::eTree)) {
-    logging::MsgBegin("TREE", "process content %s",
-                      (aIsInsert ? "insertion" : "removal"));
-    logging::Node("container", aContainer->GetNode());
-    logging::Node("child", aChildNode);
-    if (child)
-      logging::Address("child", child);
-    else
-      logging::MsgEntry("child accessible: null");
-
-    logging::MsgEnd();
-  }
-#endif
+  AutoTreeMutation mut(aContainer);
+  aContainer->InvalidateChildren();
+  aContainer->EnsureChildren();
 
   nsRefPtr<AccReorderEvent> reorderEvent = new AccReorderEvent(aContainer);
-  AutoTreeMutation mut(aContainer);
 
-  if (child) {
-    updateFlags |= UpdateTreeInternal(child, aIsInsert, reorderEvent);
-  } else {
-    if (aIsInsert) {
-      TreeWalker walker(aContainer, aChildNode, TreeWalker::eWalkCache);
+  uint32_t updateFlags = eNoAccessible;
+  for (uint32_t idx = 0; idx < aContainer->ContentChildCount(); idx++) {
+    Accessible* child = aContainer->ContentChildAt(idx);
+    if (child->IsSurvivingInUpdate()) {
+      child->SetSurvivingInUpdate(false);
+      continue;
+    }
 
-      while ((child = walker.NextChild()))
-        updateFlags |= UpdateTreeInternal(child, aIsInsert, reorderEvent);
-    } else {
-      // aChildNode may not coorespond to a particular accessible, to handle
-      // this we go through all the children of aContainer.  Then if a child
-      // has aChildNode as an ancestor, or does not have the node for
-      // aContainer as an ancestor remove that child of aContainer.  Note that
-      // when we are called aChildNode may already have been removed
-      // from the DOM so we can't expect it to have a parent or what was it's
-      // parent to have it as a child.
-      nsINode* containerNode = aContainer->GetNode();
-      for (uint32_t idx = 0; idx < aContainer->ContentChildCount();) {
-        Accessible* child = aContainer->ContentChildAt(idx);
+    // A new child has been created, update its tree.
+#ifdef A11Y_LOG
+    if (logging::IsEnabled(logging::eTree)) {
+      logging::MsgBegin("TREE", "process content insertion");
+      logging::Node("container", aContainer->GetNode());
+      logging::Node("child", child->GetContent());
+      logging::Address("child", child);
+      logging::MsgEnd();
+    }
+#endif
 
-        // If accessible doesn't have its own content then we assume parent
-        // will handle its update.  If child is DocAccessible then we don't
-        // handle updating it here either.
-        if (!child->HasOwnContent() || child->IsDoc()) {
-          idx++;
-          continue;
-        }
-
-        nsINode* childNode = child->GetContent();
-        while (childNode != aChildNode && childNode != containerNode &&
-               (childNode = childNode->GetParentNode()));
-
-        if (childNode != containerNode) {
-          updateFlags |= UpdateTreeInternal(child, false, reorderEvent);
-        } else {
-          idx++;
-        }
-      }
-    }
+    updateFlags |= UpdateTreeInternal(child, true, reorderEvent);
   }
 
   // Content insertion/removal is not cause of accessible tree change.
   if (updateFlags == eNoAccessible)
     return;
 
   // Check to see if change occurred inside an alert, and fire an EVENT_ALERT
   // if it did.
-  if (aIsInsert && !(updateFlags & eAlertAccessible)) {
+  if (!(updateFlags & eAlertAccessible)) {
     // XXX: tree traversal is perf issue, accessible should know if they are
     // children of alert accessible to avoid this.
     Accessible* ancestor = aContainer;
     while (ancestor) {
       if (ancestor->ARIARole() == roles::ALERT) {
         FireDelayedEvent(nsIAccessibleEvent::EVENT_ALERT, ancestor);
         break;
       }
@@ -1768,19 +1722,81 @@ DocAccessible::UpdateTree(Accessible* aC
       if (ancestor == this)
         break;
 
       ancestor = ancestor->Parent();
     }
   }
 
   MaybeNotifyOfValueChange(aContainer);
+  FireDelayedEvent(reorderEvent);
+}
 
-  // Fire reorder event so the MSAA clients know the children have changed. Also
-  // the event is used internally by MSAA layer.
+void
+DocAccessible::UpdateTreeOnRemoval(Accessible* aContainer, nsIContent* aChildNode)
+{
+  // If child node is not accessible then look for its accessible children.
+  Accessible* child = GetAccessible(aChildNode);
+#ifdef A11Y_LOG
+  if (logging::IsEnabled(logging::eTree)) {
+    logging::MsgBegin("TREE", "process content removal");
+    logging::Node("container", aContainer->GetNode());
+    logging::Node("child", aChildNode);
+    if (child)
+      logging::Address("child", child);
+    else
+      logging::MsgEntry("child accessible: null");
+
+    logging::MsgEnd();
+  }
+#endif
+
+  uint32_t updateFlags = eNoAccessible;
+  nsRefPtr<AccReorderEvent> reorderEvent = new AccReorderEvent(aContainer);
+  AutoTreeMutation mut(aContainer);
+
+  if (child) {
+    updateFlags |= UpdateTreeInternal(child, false, reorderEvent);
+  } else {
+    // aChildNode may not coorespond to a particular accessible, to handle
+    // this we go through all the children of aContainer.  Then if a child
+    // has aChildNode as an ancestor, or does not have the node for
+    // aContainer as an ancestor remove that child of aContainer.  Note that
+    // when we are called aChildNode may already have been removed from the DOM
+    // so we can't expect it to have a parent or what was it's parent to have
+    // it as a child.
+    nsINode* containerNode = aContainer->GetNode();
+    for (uint32_t idx = 0; idx < aContainer->ContentChildCount();) {
+      Accessible* child = aContainer->ContentChildAt(idx);
+
+      // If accessible doesn't have its own content then we assume parent
+      // will handle its update.  If child is DocAccessible then we don't
+      // handle updating it here either.
+      if (!child->HasOwnContent() || child->IsDoc()) {
+        idx++;
+        continue;
+      }
+
+      nsINode* childNode = child->GetContent();
+      while (childNode != aChildNode && childNode != containerNode &&
+             (childNode = childNode->GetParentNode()));
+
+      if (childNode != containerNode) {
+        updateFlags |= UpdateTreeInternal(child, false, reorderEvent);
+      } else {
+        idx++;
+      }
+    }
+  }
+
+  // Content insertion/removal is not cause of accessible tree change.
+  if (updateFlags == eNoAccessible)
+    return;
+
+  MaybeNotifyOfValueChange(aContainer);
   FireDelayedEvent(reorderEvent);
 }
 
 uint32_t
 DocAccessible::UpdateTreeInternal(Accessible* aChild, bool aIsInsert,
                                   AccReorderEvent* aReorderEvent)
 {
   uint32_t updateFlags = eAccessible;
--- a/accessible/generic/DocAccessible.h
+++ b/accessible/generic/DocAccessible.h
@@ -316,17 +316,17 @@ public:
 
   /**
    * Notify the document accessible that content was removed.
    */
   void ContentRemoved(Accessible* aContainer, nsIContent* aChildNode)
   {
     // Update the whole tree of this document accessible when the container is
     // null (document element is removed).
-    UpdateTree((aContainer ? aContainer : this), aChildNode, false);
+    UpdateTreeOnRemoval((aContainer ? aContainer : this), aChildNode);
   }
   void ContentRemoved(nsIContent* aContainerNode, nsIContent* aChildNode)
   {
     ContentRemoved(GetAccessibleOrContainer(aContainerNode), aChildNode);
   }
 
   /**
    * Updates accessible tree when rendered text is changed.
@@ -460,23 +460,27 @@ protected:
    *
    * While children are cached we may encounter the case there's no accessible
    * for referred content by related accessible. Store these related nodes to
    * invalidate their containers later.
    */
   void ProcessInvalidationList();
 
   /**
-   * Update the accessible tree for content insertion or removal.
+   * Update the tree on content insertion.
    */
-  void UpdateTree(Accessible* aContainer, nsIContent* aChildNode,
-                  bool aIsInsert);
+  void UpdateTreeOnInsertion(Accessible* aContainer);
 
   /**
-   * Helper for UpdateTree() method. Go down to DOM subtree and updates
+   * Update the accessible tree for content removal.
+   */
+  void UpdateTreeOnRemoval(Accessible* aContainer, nsIContent* aChildNode);
+
+  /**
+   * Helper for UpdateTreeOn methods. Go down to DOM subtree and updates
    * accessible tree. Return one of these flags.
    */
   enum EUpdateTreeFlags {
     eNoAccessible = 0,
     eAccessible = 1,
     eAlertAccessible = 2
   };
 
--- a/accessible/generic/HyperTextAccessible.cpp
+++ b/accessible/generic/HyperTextAccessible.cpp
@@ -503,17 +503,17 @@ HyperTextAccessible::FindOffset(uint32_t
                                             &unusedOffsetInFrame,
                                             &frameAtOffset);
 
   const bool kIsJumpLinesOk = true; // okay to jump lines
   const bool kIsScrollViewAStop = false; // do not stop at scroll views
   const bool kIsKeyboardSelect = true; // is keyboard selection
   const bool kIsVisualBidi = false; // use visual order for bidi text
   nsPeekOffsetStruct pos(aAmount, aDirection, innerContentOffset,
-                         0, kIsJumpLinesOk, kIsScrollViewAStop,
+                         nsPoint(0, 0), kIsJumpLinesOk, kIsScrollViewAStop,
                          kIsKeyboardSelect, kIsVisualBidi,
                          aWordMovementType);
   nsresult rv = frameAtOffset->PeekOffset(&pos);
 
   // PeekOffset fails on last/first lines of the text in certain cases.
   if (NS_FAILED(rv) && aAmount == eSelectLine) {
     pos.mAmount = (aDirection == eDirNext) ? eSelectEndLine : eSelectBeginLine;
     frameAtOffset->PeekOffset(&pos);
@@ -977,16 +977,25 @@ HyperTextAccessible::NativeAttributes()
     nsAccUtils::SetAccAttr(attributes, nsGkAtoms::xmlroles,
                            NS_LITERAL_STRING("complementary"));
   } else if (tag == nsGkAtoms::article) {
     nsAccUtils::SetAccAttr(attributes, nsGkAtoms::xmlroles,
                            NS_LITERAL_STRING("article"));
   } else if (tag == nsGkAtoms::main) {
     nsAccUtils::SetAccAttr(attributes, nsGkAtoms::xmlroles,
                            NS_LITERAL_STRING("main"));
+  } else if (tag == nsGkAtoms::time) {
+    nsAccUtils::SetAccAttr(attributes, nsGkAtoms::xmlroles,
+                           NS_LITERAL_STRING("time"));
+
+    if (mContent->HasAttr(kNameSpaceID_None, nsGkAtoms::datetime)) {
+      nsAutoString datetime;
+      mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::datetime, datetime);
+      nsAccUtils::SetAccAttr(attributes, nsGkAtoms::datetime, datetime);
+    }
   }
 
   return attributes.forget();
 }
 
 int32_t
 HyperTextAccessible::OffsetAtPoint(int32_t aX, int32_t aY, uint32_t aCoordType)
 {
--- a/accessible/generic/moz.build
+++ b/accessible/generic/moz.build
@@ -52,8 +52,10 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
 else:
     LOCAL_INCLUDES += [
         '/accessible/other',
     ]
 
 FINAL_LIBRARY = 'xul'
 
 include('/ipc/chromium/chromium-config.mozbuild')
+
+FAIL_ON_WARNINGS = True
--- a/accessible/html/HTMLSelectAccessible.cpp
+++ b/accessible/html/HTMLSelectAccessible.cpp
@@ -354,16 +354,17 @@ HTMLSelectOptGroupAccessible::DoAction(u
 ////////////////////////////////////////////////////////////////////////////////
 // HTMLComboboxAccessible
 ////////////////////////////////////////////////////////////////////////////////
 
 HTMLComboboxAccessible::
   HTMLComboboxAccessible(nsIContent* aContent, DocAccessible* aDoc) :
   AccessibleWrap(aContent, aDoc)
 {
+  mType = eHTMLComboboxType;
   mGenericTypes |= eCombobox;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // HTMLComboboxAccessible: Accessible
 
 role
 HTMLComboboxAccessible::NativeRole()
--- a/accessible/html/moz.build
+++ b/accessible/html/moz.build
@@ -38,8 +38,10 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
         '/accessible/mac',
     ]
 else:
     LOCAL_INCLUDES += [
         '/accessible/other',
     ]
 
 FINAL_LIBRARY = 'xul'
+
+FAIL_ON_WARNINGS = True
--- a/accessible/ipc/DocAccessibleParent.cpp
+++ b/accessible/ipc/DocAccessibleParent.cpp
@@ -125,10 +125,44 @@ DocAccessibleParent::RecvEvent(const uin
   if (!e) {
     NS_ERROR("no proxy for event!");
     return true;
   }
 
   ProxyEvent(e->mProxy, aEventType);
   return true;
 }
+bool
+DocAccessibleParent::AddChildDoc(DocAccessibleParent* aChildDoc,
+                                 uint64_t aParentID)
+{
+  ProxyAccessible* outerDoc = mAccessibles.GetEntry(aParentID)->mProxy;
+  if (!outerDoc)
+    return false;
+
+  aChildDoc->mParent = outerDoc;
+  outerDoc->SetChildDoc(aChildDoc);
+  mChildDocs.AppendElement(aChildDoc);
+  aChildDoc->mParentDoc = this;
+  ProxyCreated(aChildDoc);
+  return true;
+}
+
+PLDHashOperator
+DocAccessibleParent::ShutdownAccessibles(ProxyEntry* entry, void*)
+{
+  ProxyDestroyed(entry->mProxy);
+  return PL_DHASH_NEXT;
+}
+
+void
+DocAccessibleParent::ActorDestroy(ActorDestroyReason aWhy)
+{
+  MOZ_ASSERT(mChildDocs.IsEmpty(),
+      "why wheren't the child docs destroyed already?");
+
+  mAccessibles.EnumerateEntries(ShutdownAccessibles, nullptr);
+  ProxyDestroyed(this);
+  mParentDoc ? mParentDoc->RemoveChildDoc(this)
+    : GetAccService()->RemoteDocShutdown(this);
 }
 }
+}
--- a/accessible/ipc/DocAccessibleParent.h
+++ b/accessible/ipc/DocAccessibleParent.h
@@ -21,17 +21,17 @@ 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() :
-    mParentDoc(nullptr)
+    ProxyAccessible(this), mParentDoc(nullptr)
   { MOZ_COUNT_CTOR_INHERITED(DocAccessibleParent, ProxyAccessible); }
   ~DocAccessibleParent()
   {
     MOZ_COUNT_DTOR_INHERITED(DocAccessibleParent, ProxyAccessible);
     MOZ_ASSERT(mChildDocs.Length() == 0);
     MOZ_ASSERT(!mParentDoc);
   }
 
@@ -40,46 +40,29 @@ public:
    * process it is firing an event.
    */
   virtual bool RecvEvent(const uint64_t& aID, const uint32_t& aType)
     MOZ_OVERRIDE;
 
   virtual bool RecvShowEvent(const ShowEventData& aData) MOZ_OVERRIDE;
   virtual bool RecvHideEvent(const uint64_t& aRootID) MOZ_OVERRIDE;
 
-  virtual void ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE
-  {
-    MOZ_ASSERT(mChildDocs.IsEmpty(),
-               "why wheren't the child docs destroyed already?");
-    mParentDoc ? mParentDoc->RemoveChildDoc(this)
-      : GetAccService()->RemoteDocShutdown(this);
-  }
+  virtual void ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
 
   /*
    * Return the main processes representation of the parent document (if any)
    * of the document this object represents.
    */
   DocAccessibleParent* Parent() const { return mParentDoc; }
 
   /*
    * Called when a document in a content process notifies the main process of a
    * new child document.
    */
-  bool AddChildDoc(DocAccessibleParent* aChildDoc, uint64_t aParentID)
-  {
-    ProxyAccessible* outerDoc = mAccessibles.GetEntry(aParentID)->mProxy;
-    if (!outerDoc)
-      return false;
-
-    aChildDoc->mParent = outerDoc;
-    outerDoc->SetChildDoc(aChildDoc);
-    mChildDocs.AppendElement(aChildDoc);
-    aChildDoc->mParentDoc = this;
-    return true;
-  }
+  bool AddChildDoc(DocAccessibleParent* aChildDoc, uint64_t aParentID);
 
   /*
    * Called when the document in the content process this object represents
    * notifies the main process a child document has been removed.
    */
   void RemoveChildDoc(DocAccessibleParent* aChildDoc)
   {
     aChildDoc->mParent->SetChildDoc(nullptr);
@@ -117,16 +100,17 @@ private:
     enum { ALLOW_MEMMOVE = true };
 
     ProxyAccessible* mProxy;
   };
 
   uint32_t AddSubtree(ProxyAccessible* aParent,
                       const nsTArray<AccessibleData>& aNewTree, uint32_t aIdx,
                       uint32_t aIdxInParent);
+  static PLDHashOperator ShutdownAccessibles(ProxyEntry* entry, void* unused);
 
   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.
    */
--- a/accessible/ipc/ProxyAccessible.cpp
+++ b/accessible/ipc/ProxyAccessible.cpp
@@ -12,19 +12,23 @@
 namespace mozilla {
 namespace a11y {
 
 void
 ProxyAccessible::Shutdown()
 {
   MOZ_ASSERT(!mOuterDoc);
 
-  uint32_t childCount = mChildren.Length();
-  for (uint32_t idx = 0; idx < childCount; idx++)
-    mChildren[idx]->Shutdown();
+  // XXX Ideally  this wouldn't be necessary, but it seems OuterDoc accessibles
+  // can be destroyed before the doc they own.
+  if (!mOuterDoc) {
+    uint32_t childCount = mChildren.Length();
+    for (uint32_t idx = 0; idx < childCount; idx++)
+      mChildren[idx]->Shutdown();
+  }
 
   mChildren.Clear();
   ProxyDestroyed(this);
   mDoc->RemoveAccessible(this);
 }
 
 void
 ProxyAccessible::SetChildDoc(DocAccessibleParent* aParent)
--- a/accessible/ipc/ProxyAccessible.h
+++ b/accessible/ipc/ProxyAccessible.h
@@ -18,21 +18,26 @@ class Attribute;
 class DocAccessibleParent;
 
 class ProxyAccessible
 {
 public:
 
   ProxyAccessible(uint64_t aID, ProxyAccessible* aParent,
                   DocAccessibleParent* aDoc, role aRole) :
-     mParent(aParent), mDoc(aDoc), mID(aID), mRole(aRole), mOuterDoc(false)
+     mParent(aParent), mDoc(aDoc), mWrapper(0), mID(aID), mRole(aRole),
+     mOuterDoc(false)
   {
     MOZ_COUNT_CTOR(ProxyAccessible);
   }
-  ~ProxyAccessible() { MOZ_COUNT_DTOR(ProxyAccessible); }
+  ~ProxyAccessible()
+  {
+    MOZ_COUNT_DTOR(ProxyAccessible);
+    MOZ_ASSERT(!mWrapper);
+  }
 
   void AddChildAt(uint32_t aIdx, ProxyAccessible* aChild)
   { mChildren.InsertElementAt(aIdx, aChild); }
 
   uint32_t ChildrenCount() const { return mChildren.Length(); }
 
   void Shutdown();
 
@@ -81,18 +86,19 @@ public:
   void SetWrapper(uintptr_t aWrapper) { mWrapper = aWrapper; }
 
   /*
    * Return the ID of the accessible being proxied.
    */
   uint64_t ID() const { return mID; }
 
 protected:
-  ProxyAccessible() :
-    mParent(nullptr), mDoc(nullptr), mWrapper(0), mID(0)
+  explicit ProxyAccessible(DocAccessibleParent* aThisAsDoc) :
+    mParent(nullptr), mDoc(aThisAsDoc), mWrapper(0), mID(0),
+    mRole(roles::DOCUMENT)
   { MOZ_COUNT_CTOR(ProxyAccessible); }
 
 protected:
   ProxyAccessible* mParent;
 
 private:
   nsTArray<ProxyAccessible*> mChildren;
   DocAccessibleParent* mDoc;
--- a/accessible/ipc/moz.build
+++ b/accessible/ipc/moz.build
@@ -24,8 +24,10 @@ if CONFIG['ACCESSIBILITY']:
     LOCAL_INCLUDES += [
         '../base',
         '../generic',
     ]
 
     FINAL_LIBRARY = 'xul'
 
 include('/ipc/chromium/chromium-config.mozbuild')
+
+FAIL_ON_WARNINGS = True
--- a/accessible/jsat/Presentation.jsm
+++ b/accessible/jsat/Presentation.jsm
@@ -446,16 +446,28 @@ AndroidPresenter.prototype.announce =
 
 AndroidPresenter.prototype.liveRegion =
   function AndroidPresenter_liveRegion(aContext, aIsPolite,
     aIsHide, aModifiedText) {
     return this.announce(
       UtteranceGenerator.genForLiveRegion(aContext, aIsHide, aModifiedText));
   };
 
+AndroidPresenter.prototype.noMove =
+  function AndroidPresenter_noMove(aMoveMethod) {
+    return {
+      type: this.type,
+      details: [
+      { eventType: this.ANDROID_VIEW_ACCESSIBILITY_FOCUSED,
+        exitView: aMoveMethod,
+        text: ['']
+      }]
+    };
+  };
+
 /**
  * A B2G presenter for Gaia.
  */
 function B2GPresenter() {}
 
 B2GPresenter.prototype = Object.create(Presenter.prototype);
 
 B2GPresenter.prototype.type = 'B2G';
@@ -490,17 +502,18 @@ B2GPresenter.prototype.pivotChanged =
       type: this.type,
       details: {
         eventType: 'vc-change',
         data: UtteranceGenerator.genForContext(aContext),
         options: {
           pattern: this.PIVOT_CHANGE_HAPTIC_PATTERN,
           isKey: Utils.isActivatableOnFingerUp(aContext.accessible),
           reason: this.pivotChangedReasons[aReason],
-          isUserInput: aIsUserInput
+          isUserInput: aIsUserInput,
+          hints: aContext.interactionHints
         }
       }
     };
   };
 
 B2GPresenter.prototype.valueChanged =
   function B2GPresenter_valueChanged(aAccessible) {
 
--- a/accessible/jsat/Utils.jsm
+++ b/accessible/jsat/Utils.jsm
@@ -155,41 +155,48 @@ this.Utils = { // jshint ignore:line
   },
 
   get CurrentContentDoc() {
     let browser = this.CurrentBrowser;
     return browser ? browser.contentDocument : null;
   },
 
   get AllMessageManagers() {
-    let messageManagers = [];
+    let messageManagers = new Set();
 
     function collectLeafMessageManagers(mm) {
       for (let i = 0; i < mm.childCount; i++) {
         let childMM = mm.getChildAt(i);
 
         if ('sendAsyncMessage' in childMM) {
-          messageManagers.push(childMM);
+          messageManagers.add(childMM);
         } else {
           collectLeafMessageManagers(childMM);
         }
       }
     }
 
     collectLeafMessageManagers(this.win.messageManager);
 
     let document = this.CurrentContentDoc;
 
     if (document) {
+      if (document.location.host === 'b2g') {
+        // The document is a b2g app chrome (ie. Mulet).
+        let contentBrowser = this.win.content.shell.contentBrowser;
+        messageManagers.add(this.getMessageManager(contentBrowser));
+        document = contentBrowser.contentDocument;
+      }
+
       let remoteframes = document.querySelectorAll('iframe');
 
       for (let i = 0; i < remoteframes.length; ++i) {
         let mm = this.getMessageManager(remoteframes[i]);
         if (mm) {
-          messageManagers.push(mm);
+          messageManagers.add(mm);
         }
       }
 
     }
 
     return messageManagers;
   },
 
@@ -452,19 +459,20 @@ this.Utils = { // jshint ignore:line
 
   dispatchChromeEvent: function dispatchChromeEvent(aType, aDetails) {
     let details = {
       type: aType,
       details: JSON.stringify(
         typeof aDetails === 'string' ? { eventType : aDetails } : aDetails)
     };
     let window = this.win;
-    if (window.shell) {
+    let shell = window.shell || window.content.shell;
+    if (shell) {
       // On B2G device.
-      window.shell.sendChromeEvent(details);
+      shell.sendChromeEvent(details);
     } else {
       // Dispatch custom event to have support for desktop and screen reader
       // emulator add-on.
       window.dispatchEvent(new window.CustomEvent(aType, {
         bubbles: true,
         cancelable: true,
         detail: details
       }));
@@ -823,16 +831,35 @@ PivotContext.prototype = {
           [yield node for (node of this._traverse(child, aPreorder, aStop))]; // jshint ignore:line
           yield child;
         }
       }
       child = child.nextSibling;
     }
   },
 
+  /**
+   * Get interaction hints for the context ancestry.
+   * @return {Array} Array of interaction hints.
+   */
+  get interactionHints() {
+    let hints = [];
+    this.newAncestry.concat(this.accessible).reverse().forEach(aAccessible => {
+      let hint = Utils.getAttributes(aAccessible)['moz-hint'];
+      if (hint) {
+        hints.push(hint);
+      } else if (aAccessible.actionCount > 0) {
+        hints.push({
+          string: Utils.AccRetrieval.getStringRole(aAccessible.role) + '-hint'
+        });
+      }
+    });
+    return hints;
+  },
+
   /*
    * A subtree generator function, used to generate a flattened
    * list of the accessible's subtree in pre or post order.
    * It only includes the accessible's visible chidren.
    * @param {boolean} aPreorder A flag for traversal order. If true, traverse
    * in preorder; if false, traverse in postorder.
    * @param {function} aStop An optional function, indicating whether subtree
    * traversal should stop.
--- a/accessible/jsat/content-script.js
+++ b/accessible/jsat/content-script.js
@@ -18,17 +18,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
   'resource://gre/modules/accessibility/EventManager.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'ContentControl',
   'resource://gre/modules/accessibility/ContentControl.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'Roles',
   'resource://gre/modules/accessibility/Constants.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'States',
   'resource://gre/modules/accessibility/Constants.jsm');
 
-Logger.debug('content-script.js');
+Logger.info('content-script.js', content.document.location);
 
 let eventManager = null;
 let contentControl = null;
 
 function forwardToParent(aMessage) {
   // XXX: This is a silly way to make a deep copy
   let newJSON = JSON.parse(JSON.stringify(aMessage.json));
   newJSON.origin = 'child';
--- a/accessible/mac/moz.build
+++ b/accessible/mac/moz.build
@@ -33,8 +33,10 @@ LOCAL_INCLUDES += [
     '/accessible/xul',
     '/layout/generic',
     '/layout/xul',
     '/widget',
     '/widget/cocoa',
 ]
 
 FINAL_LIBRARY = 'xul'
+
+FAIL_ON_WARNINGS = True
--- a/accessible/other/moz.build
+++ b/accessible/other/moz.build
@@ -17,8 +17,10 @@ SOURCES += [
 LOCAL_INCLUDES += [
     '/accessible/base',
     '/accessible/generic',
     '/accessible/html',
     '/accessible/xul',
 ]
 
 FINAL_LIBRARY = 'xul'
+
+FAIL_ON_WARNINGS = True
--- a/accessible/tests/mochitest/actions/test_link.html
+++ b/accessible/tests/mochitest/actions/test_link.html
@@ -17,18 +17,27 @@
           src="../actions.js"></script>
 
   <script type="application/javascript">
     function getAnchorTargetDocumentAcc()
     {
       var thisTabDocAcc = getTabDocAccessible();
       var thisDocTabPanelAcc = thisTabDocAcc.parent.parent;
       var tabPanelsAcc = thisDocTabPanelAcc.parent;
-      var newDocTabPanelAcc = tabPanelsAcc.lastChild.firstChild;
-      return newDocTabPanelAcc.firstChild;
+      var newDocTabPanelAcc = tabPanelsAcc.firstChild;
+      var nextAcc = newDocTabPanelAcc;
+
+      while (nextAcc = nextAcc.nextSibling) {
+        // Find the last accessible for a browser with about:mozilla loaded.
+        if (nextAcc.firstChild.DOMNode.currentURI.spec == "about:mozilla") {
+          newDocTabPanelAcc = nextAcc;
+        }
+      }
+
+      return newDocTabPanelAcc.firstChild.firstChild;
     }
 
     function linkChecker(aID)
     {
       this.type = EVENT_DOCUMENT_LOAD_COMPLETE;
       this.__defineGetter__("target", getAnchorTargetDocumentAcc);
 
       this.check = function linkChecker_check()
--- a/accessible/tests/mochitest/attributes/test_obj.html
+++ b/accessible/tests/mochitest/attributes/test_obj.html
@@ -23,26 +23,28 @@ https://bugzilla.mozilla.org/show_bug.cg
     {
       // aria
       testAttrs("atomic", {"atomic" : "true", "container-atomic" : "true"}, true);
       testAttrs(getNode("atomic").firstChild, {"container-atomic" : "true"}, true);
       testAbsentAttrs("atomic_false", {"atomic" : "false", "container-atomic" : "false"});
       testAbsentAttrs(getNode("atomic_false").firstChild, {"container-atomic" : "false"});
 
       testAttrs("autocomplete", {"autocomplete" : "true"}, true);
-      testAttrs("checkbox", {"checkable" : "true"}, true); 
-      testAttrs("checkedCheckbox", {"checkable" : "true"}, true); 
-      testAttrs("checkedMenuitem", {"checkable" : "true"}, true); 
-      testAttrs("checkedOption", {"checkable" : "true"}, true); 
-      testAttrs("checkedRadio", {"checkable" : "true"}, true); 
-      testAttrs("checkedTreeitem", {"checkable" : "true"}, true); 
+      testAttrs("checkbox", {"checkable" : "true"}, true);
+      testAttrs("checkedCheckbox", {"checkable" : "true"}, true);
+      testAttrs("checkedMenuitem", {"checkable" : "true"}, true);
+      testAttrs("checkedOption", {"checkable" : "true"}, true);
+      testAttrs("checkedRadio", {"checkable" : "true"}, true);
+      testAttrs("checkedTreeitem", {"checkable" : "true"}, true);
       testAttrs("dropeffect", {"dropeffect" : "copy"}, true);
       testAttrs("grabbed", {"grabbed" : "true"}, true);
+      testAbsentAttrs("haspopup", { "haspopup": "false" });
       testAttrs("hidden", {"hidden" : "true"}, true);
       testAbsentAttrs("hidden_false", { "hidden": "false" });
+      testAbsentAttrs("modal", {"modal" : "true"});
       testAttrs("sortAscending", {"sort" : "ascending"}, true);
       testAttrs("sortDescending", {"sort" : "descending"}, true);
       testAttrs("sortNone", {"sort" : "none"}, true);
       testAttrs("sortOther", {"sort" : "other"}, true);
 
       // inherited attributes by subdocuments
       var subdoc = getAccessible("iframe").firstChild;
       testAttrs(subdoc, {"busy" : "true"}, true);
@@ -193,18 +195,20 @@ https://bugzilla.mozilla.org/show_bug.cg
   <div id="checkbox" role="checkbox"></div>
   <div id="checkedCheckbox" role="checkbox" aria-checked="true"></div>
   <div id="checkedMenuitem" role="menuitem" aria-checked="true"></div>
   <div id="checkedOption" role="option" aria-checked="true"></div>
   <div id="checkedRadio" role="radio" aria-checked="true"></div>
   <div id="checkedTreeitem" role="treeitem" aria-checked="true"></div>
   <div id="dropeffect" aria-dropeffect="copy"></div>
   <div id="grabbed" aria-grabbed="true"></div>
+  <div id="haspopup" aria-haspopup="true"></div>
   <div id="hidden" aria-hidden="true"></div>
   <div id="hidden_false" aria-hidden="false"></div>
+  <div id="modal" aria-modal="true"></div>
   <div id="sortAscending" role="columnheader" aria-sort="ascending"></div>
   <div id="sortDescending" role="columnheader" aria-sort="descending"></div>
   <div id="sortNone" role="columnheader" aria-sort="none"></div>
   <div id="sortOther" role="columnheader" aria-sort="other"></div>
 
   <!-- inherited from iframe -->
   <iframe id="iframe" src="data:text/html,<html><body></body></html>"
           aria-busy="true"></iframe>
--- a/accessible/tests/mochitest/elm/test_HTMLSpec.html
+++ b/accessible/tests/mochitest/elm/test_HTMLSpec.html
@@ -1227,17 +1227,22 @@
         actions: "activate",
         interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ]
       };
       testElm("textarea", obj);
 
       //////////////////////////////////////////////////////////////////////////
       // HTML:time
 
-      ok(!isAccessible("time"), "time element is not accessible");
+      obj = {
+        role: ROLE_TEXT_CONTAINER,
+        attributes: { "xml-roles": "time", "datetime": "2001-05-15 19:00" },
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+      };
+      testElm("time", obj);
 
       //////////////////////////////////////////////////////////////////////////
       // HTML:u contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
--- a/accessible/tests/mochitest/events/test_docload.html
+++ b/accessible/tests/mochitest/events/test_docload.html
@@ -10,35 +10,16 @@
           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
 
   <script type="application/javascript"
           src="../common.js"></script>
   <script type="application/javascript"
           src="../role.js"></script>
   <script type="application/javascript"
           src="../states.js"></script>
-
-  <script type="application/javascript">
-    // Front end stuff sometimes likes to stuff things in the hidden window(s)
-    // in which case there's accessibles for that content.
-    Components.utils.import("resource://gre/modules/Services.jsm");
-
-    // Force the creation of an accessible for the hidden window's document.
-    var doc = Services.appShell.hiddenDOMWindow.document;
-    gAccRetrieval.getAccessibleFor(doc);
-
-    // The private hidden window will be lazily created that's why we need to do
-    // it here *before* loading '../events.js' or else we'll have a duplicate
-    // reorder event.
-    var privateDoc = Services.appShell.hiddenPrivateDOMWindow.document;
-
-    // Force the creation of an accessible for the private hidden window's doc.
-    gAccRetrieval.getAccessibleFor(privateDoc);
-  </script>
-
   <script type="application/javascript"
           src="../events.js"></script>
 
   <script type="application/javascript">
     ////////////////////////////////////////////////////////////////////////////
     // Invokers
 
     function changeIframeSrc(aIdentifier, aURL)
@@ -193,22 +174,16 @@
         var accTree = {
           role: ROLE_APP_ROOT,
           children: [
             {
               role: ROLE_CHROME_WINDOW
             },
             {
               role: ROLE_CHROME_WINDOW
-            },
-            {
-              role: ROLE_CHROME_WINDOW
-            },
-            {
-              role: ROLE_CHROME_WINDOW
             }
           ]
         };
 
         testAccessibleTree(this.mRootAcc, accTree);
 
         var dlgDoc = this.mDialog.document;
         ok(isAccessibleInCache(dlgDoc),
--- a/accessible/tests/mochitest/events/test_mutation.html
+++ b/accessible/tests/mochitest/events/test_mutation.html
@@ -331,23 +331,49 @@
       }
 
       this.getID = function test3_getID()
       {
         return "fuzzy test #3: content insertion (flush layout) and removal";
       }
     }
 
+    function insertReferredElm(aContainerID)
+    {
+      this.containerNode = getNode(aContainerID);
+
+      this.eventSeq = [
+        new invokerChecker(EVENT_SHOW, function(aNode) { return aNode.lastChild; }, this.containerNode),
+        new invokerChecker(EVENT_SHOW, function(aNode) { return aNode.firstChild; }, this.containerNode),
+        new invokerChecker(EVENT_REORDER, this.containerNode)
+      ];
+
+      this.invoke = function insertReferredElm_invoke()
+      {
+        this.containerNode.innerHTML =
+          "<span id='insertReferredElms_span'></span><input aria-labelledby='insertReferredElms_span'>";
+      }
+
+      this.getID = function insertReferredElm_getID()
+      {
+        return "insert inaccessible element and then insert referring element to make it accessible";
+      }
+    }
+
     /**
      * Target getters.
      */
     function getFirstChild(aNode)
     {
       return [aNode.firstChild];
     }
+    function getLastChild(aNode)
+    {
+      return [aNode.lastChild];
+    }
 
     function getNEnsureFirstChild(aNode)
     {
       var node = aNode.firstChild;
       getAccessible(node);
       return [node];
     }
 
@@ -452,16 +478,17 @@
       gQueue.push(new changeClass("container3", "link8", "", kShowEvents));
       gQueue.push(new changeClass("container3", "link8", "visibilityHidden",
                                   kHideEvents));
 
       gQueue.push(new test1("testContainer"));
       gQueue.push(new test2("testContainer", "testContainer2"));
       gQueue.push(new test2("testContainer", "testNestedContainer"));
       gQueue.push(new test3("testContainer"));
+      gQueue.push(new insertReferredElm("testContainer3"));
 
       gQueue.invoke(); // Will call SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTests);
   </script>
 </head>
@@ -511,10 +538,11 @@
 
     <a id="link6" href="http://www.google.com">Link #6</a>
 
     <div id="container2" class="displayNone"><a id="link7">Link #7</a></div>
     <div id="container3" class="visibilityHidden"><a id="link8">Link #8</a></div>
     <div id="testNestedContainer"></div>
   </div>
   <div id="testContainer2"></div>
+  <div id="testContainer3"></div>
 </body>
 </html>
--- a/accessible/tests/mochitest/jsat/a11y.ini
+++ b/accessible/tests/mochitest/jsat/a11y.ini
@@ -10,15 +10,16 @@ support-files =
 
 [test_alive.html]
 [test_content_integration.html]
 skip-if = buildapp == 'mulet'
 [test_content_text.html]
 skip-if = buildapp == 'mulet'
 [test_explicit_names.html]
 [test_gesture_tracker.html]
+[test_hints.html]
 [test_landmarks.html]
 [test_live_regions.html]
 [test_output.html]
 [test_quicknav_modes.html]
 [test_tables.html]
 [test_pointer_relay.html]
 [test_traversal.html]
--- a/accessible/tests/mochitest/jsat/output.js
+++ b/accessible/tests/mochitest/jsat/output.js
@@ -94,8 +94,21 @@ function testOutput(expected, aAccOrElmO
   testContextOutput(expected, aAccOrElmOrID, aOldAccOrElmOrID, generator);
   // Just need to test object output for individual
   // accOrElmOrID.
   if (aOldAccOrElmOrID) {
     return;
   }
   testObjectOutput(aAccOrElmOrID, generator);
 }
+
+function testHints(expected, aAccOrElmOrID, aOldAccOrElmOrID) {
+  var accessible = getAccessible(aAccOrElmOrID);
+  var oldAccessible = aOldAccOrElmOrID !== null ?
+  getAccessible(aOldAccOrElmOrID || 'root') : null;
+  var context = new PivotContext(accessible, oldAccessible);
+  var hints = context.interactionHints;
+
+  isDeeply(hints, expected,
+           "Context hitns are correct for " + aAccOrElmOrID +
+           " (hints: " + JSON.stringify(hints) + ") ==" +
+           " (expected: " + JSON.stringify(expected) + ")");
+}
new file mode 100644
--- /dev/null
+++ b/accessible/tests/mochitest/jsat/test_hints.html
@@ -0,0 +1,85 @@
+<html>
+<head>
+  <title> [AccessFu] Interaction Hints </title>
+
+  <link rel="stylesheet" type="text/css"
+        href="chrome://mochikit/content/tests/SimpleTest/test.css" />
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="application/javascript"
+          src="../common.js"></script>
+  <script type="application/javascript"
+          src="output.js"></script>
+  <script type="application/javascript">
+
+    function doTest() {
+      var tests = [{
+        accOrElmOrID: 'can_wheel',
+        expectedHints: ['Swipe with two fingers to move between pages']
+      }, {
+        accOrElmOrID: 'nested_link',
+        expectedHints: [{string: 'link-hint'},
+          'Swipe with two fingers to move between pages']
+      }, {
+        accOrElmOrID: 'nested_link',
+        oldAccOrElmOrID: 'can_wheel',
+        expectedHints: [{string: 'link-hint'}]
+      }, {
+        accOrElmOrID: 'link_with_default_hint',
+        expectedHints: [{string: 'link-hint'}]
+      }, {
+        accOrElmOrID: 'link_with_hint_override',
+        expectedHints: ['Tap and hold to get to menu']
+      }, {
+        accOrElmOrID: 'button_with_default_hint',
+        expectedHints: [{string: 'pushbutton-hint'}]
+      }, {
+        accOrElmOrID: 'button_with_hint_override',
+        expectedHints: ['Tap and hold to activate']
+      }, {
+        accOrElmOrID: 'nested_link2',
+        expectedHints: [{string: 'link-hint'}]
+      }, {
+        accOrElmOrID: 'nested_link3',
+        expectedHints: [{string: 'link-hint'}, {string: 'pushbutton-hint'},
+          "Double tap and hold to activate"]
+      }];
+
+      // Test hints.
+      tests.forEach(function run(test) {
+        testHints(test.expectedHints, test.accOrElmOrID, test.oldAccOrElmOrID);
+      });
+
+      SimpleTest.finish();
+    }
+
+    SimpleTest.waitForExplicitFinish();
+    addA11yLoadEvent(doTest);
+  </script>
+</head>
+<body>
+  <div id="root">
+    <a target="_blank"
+       href="https://bugzilla.mozilla.org/show_bug.cgi?id=1069574"
+       title="[AccessFu] Interaction Hints">
+       Mozilla Bug 1069574
+       </a>
+    <p id="display"></p>
+    <div id="content" style="display: none"></div>
+    <pre id="test"></pre>
+      <span role="region" id="can_wheel" aria-moz-hint="Swipe with two fingers to move between pages">
+        <a href="#" id="nested_link">I can be clicked</a>
+      </span>
+      <span role="region" aria-moz-hint="">
+        <a><a href="#" id="nested_link2">I can be clicked</a></a>
+      </span>
+      <span role="region" aria-moz-hint="Double tap and hold to activate">
+        <button><a href="#" id="nested_link3">I can be clicked</a></button>
+      </span>
+      <a href="#" id="link_with_default_hint">I can be clicked</a>
+      <a href="#" id="link_with_hint_override" aria-moz-hint="Tap and hold to get to menu">I am a special link</a>
+      <button id="button_with_default_hint">Toggle</button>
+      <button id="button_with_hint_override" aria-moz-hint="Tap and hold to activate">Special</button>
+  </div>
+</body>
+</html>
--- a/accessible/tests/mochitest/states.js
+++ b/accessible/tests/mochitest/states.js
@@ -37,16 +37,17 @@ const STATE_TRAVERSED = nsIAccessibleSta
 const STATE_UNAVAILABLE = nsIAccessibleStates.STATE_UNAVAILABLE;
 
 const EXT_STATE_ACTIVE = nsIAccessibleStates.EXT_STATE_ACTIVE;
 const EXT_STATE_DEFUNCT = nsIAccessibleStates.EXT_STATE_DEFUNCT;
 const EXT_STATE_EDITABLE = nsIAccessibleStates.EXT_STATE_EDITABLE;
 const EXT_STATE_ENABLED = nsIAccessibleStates.EXT_STATE_ENABLED;
 const EXT_STATE_EXPANDABLE = nsIAccessibleStates.EXT_STATE_EXPANDABLE;
 const EXT_STATE_HORIZONTAL = nsIAccessibleStates.EXT_STATE_HORIZONTAL;
+const EXT_STATE_MODAL = nsIAccessibleStates.EXT_STATE_MODAL;
 const EXT_STATE_MULTI_LINE = nsIAccessibleStates.EXT_STATE_MULTI_LINE;
 const EXT_STATE_PINNED = nsIAccessibleStates.EXT_STATE_PINNED;
 const EXT_STATE_SENSITIVE = nsIAccessibleStates.EXT_STATE_SENSITIVE;
 const EXT_STATE_SINGLE_LINE = nsIAccessibleStates.EXT_STATE_SINGLE_LINE;
 const EXT_STATE_STALE = nsIAccessibleStates.EXT_STATE_STALE;
 const EXT_STATE_SUPPORTS_AUTOCOMPLETION =
   nsIAccessibleStates.EXT_STATE_SUPPORTS_AUTOCOMPLETION;
 const EXT_STATE_VERTICAL = nsIAccessibleStates.EXT_STATE_VERTICAL;
--- a/accessible/tests/mochitest/states/test_aria.html
+++ b/accessible/tests/mochitest/states/test_aria.html
@@ -92,16 +92,20 @@
       // aria-checked
       testStates("aria_checked_checkbox", STATE_CHECKED);
       testStates("aria_mixed_checkbox", STATE_MIXED);
 
       // test disabled group and all its descendants to see if they are
       // disabled, too. See bug 429285.
       testAriaDisabledTree("group");
 
+      // aria-modal
+      testStates("aria_modal", 0, EXT_STATE_MODAL);
+      testStates("aria_modal_false", 0, 0, 0, EXT_STATE_MODAL);
+
       // aria-multiline
       testStates("aria_multiline_textbox", 0, EXT_STATE_MULTI_LINE);
 
       // aria-multiselectable
       testStates("aria_multiselectable_listbox",
                  STATE_MULTISELECTABLE | STATE_EXTSELECTABLE);
 
       // aria-pressed
@@ -374,16 +378,18 @@
 
   <div id="aria_checked_checkbox" role="checkbox" aria-checked="true">
     I agree
   </div>
 
   <div id="aria_mixed_checkbox" role="checkbox" aria-checked="mixed">
     I might agree
   </div>
+  <div id="aria_modal" aria-modal="true">modal stuff</div>
+  <div id="aria_modal_false" aria-modal="false">non modal stuff</div>div>
   <div id="aria_multiline_textbox" role="textbox" aria-multiline="true"></div>
   <div id="aria_multiselectable_listbox" role="listbox" aria-multiselectable="true"></div>
   <div id="aria_pressed_button" role="button" aria-pressed="true">Button</div>
   <button id="aria_pressed_native_button" aria-pressed="true">Button</button>
 
   <div id="aria_readonly_textbox"
        role="textbox" aria-readonly="true">This text should be readonly</div>
 
--- a/accessible/tests/mochitest/textattrs/test_general.html
+++ b/accessible/tests/mochitest/textattrs/test_general.html
@@ -704,22 +704,22 @@
     <span style="font-family: monospace;">text</span>text
     <span style="font-family: serif;">text</span>text
     <span style="font-family: BodoniThatDoesntExist;">text</span>text
     <span style="font-family: Comic Sans MS, cursive;">text</span>text
     <span style="font-family: sans-serif, fantasy;">text</span>text
   </p>
 
   <p id="area17">
-    <span style="-moz-text-decoration-line: underline;">underline
-    </span><span style="text-decoration: underline; -moz-text-decoration-color: blue;">blue
-    </span><span style="text-decoration: underline; -moz-text-decoration-style: dotted;">dotted
-    </span><span style="-moz-text-decoration-line: line-through;">linethrough
-    </span><span style="text-decoration: line-through; -moz-text-decoration-color: blue;">blue
-    </span><span style="text-decoration: line-through; -moz-text-decoration-style: wavy;">wavy
+    <span style="text-decoration-line: underline;">underline
+    </span><span style="text-decoration: underline; text-decoration-color: blue;">blue
+    </span><span style="text-decoration: underline; text-decoration-style: dotted;">dotted
+    </span><span style="text-decoration-line: line-through;">linethrough
+    </span><span style="text-decoration: line-through; text-decoration-color: blue;">blue
+    </span><span style="text-decoration: line-through; text-decoration-style: wavy;">wavy
     </span>
   </p>
 
   <ul>
     <li id="area18" class="gencontent">item</li>
   </ul>
 
   <p id="area19">uncolored
--- a/accessible/tests/mochitest/tree/test_aria_list.html
+++ b/accessible/tests/mochitest/tree/test_aria_list.html
@@ -29,20 +29,25 @@
       testAccessibleTree("list", accTree);
 
       //////////////////////////////////////////////////////////////////////////
       // crazy list (mad mix of ARIA and HTML)
 
       accTree = { // div@role="list"
         role: ROLE_LIST,
         children: [
-          { // li text leaf
-             role: ROLE_TEXT_LEAF,
-             name: "item1",
-             children: [ ]
+          { // li
+            role: ROLE_PARAGRAPH,
+            children: [
+              { // li text leaf
+                role: ROLE_TEXT_LEAF,
+                name: "item1",
+                children: [ ]
+              }
+            ]
           },
           { // li@role="listitem"
             role: ROLE_LISTITEM,
             children: [
               { // text leaf
                 role: ROLE_TEXT_LEAF,
                 name: "item2",
                 children: [ ]
--- a/accessible/tests/mochitest/tree/test_aria_presentation.html
+++ b/accessible/tests/mochitest/tree/test_aria_presentation.html
@@ -51,16 +51,25 @@
             { CELL: [ //td
               { TEXT_LEAF: [ ] }
             ] }
           ] }
         ] }
       ] };
     testAccessibleTree("tblfocusable_cnt", tree);
 
+    // Presentation list, expose generic accesisble for list items.
+    tree =
+      { SECTION: [ // container
+        { PARAGRAPH: [ // li generic accessible
+          { TEXT_LEAF: [ ] } // li text
+        ] }
+      ] };
+    testAccessibleTree("list_cnt", tree);
+
     // Has ARIA globals or referred by ARIA relationship.
     tree =
       { SECTION: [ // container
         { LABEL: [ // label, has aria-owns
           { TEXT_LEAF: [ ] }
         ] },
         { TEXT_LEAF: [ ] },
         { LABEL: [ // label, referenced by aria-owns
@@ -108,15 +117,21 @@
   <div id="tblfocusable_cnt">
     <table role="presentation" tabindex="0">
       <tr>
         <td>cell</td>
       </tr>
     </table>
   </div>
 
+  <div id="list_cnt">
+    <ul role="presentation">
+      <li>item</li>
+    </ul>
+  </div>
+
   <div id="airaglobalprop_cnt">
     <label role="presentation" aria-owns="ariaowned">has aria-owns</label>
     <label role="presentation" id="ariaowned">referred by aria-owns</label>
   </div>
 
 </body>
 </html>
--- a/accessible/tests/mochitest/tree/test_brokencontext.html
+++ b/accessible/tests/mochitest/tree/test_brokencontext.html
@@ -75,25 +75,25 @@
     checkIfNotAccessible("tr_in_block_table");
     checkIfTDGeneric("td_in_block_table");
 
     ////////////////////////////////////////////////////////////////////////////
     // HTML list elements outside list context.
 
     ok(!isAccessible("presentation_ul"),
                      "presentational ul shouldn't be accessible");
-    ok(!isAccessible("item_in_presentation_ul"),
-                     "li in presentational ul shouldn't be accessible");
-    ok(!isAccessible("styleditem_in_presentation_ul"),
-                     "list styled span in presentational ul shouldn't be accessible");
+    ok(isAccessible("item_in_presentation_ul"),
+                    "li in presentational ul should have generic accessible");
+    ok(isAccessible("styleditem_in_presentation_ul"),
+                    "list styled span in presentational ul should have generic accessible");
 
     ok(!isAccessible("presentation_ol"),
                      "presentational ol shouldn't be accessible");
-    ok(!isAccessible("item_in_presentation_ol"),
-                     "li in presentational ol shouldn't be accessible");
+    ok(isAccessible("item_in_presentation_ol"),
+                    "li in presentational ol should have generic accessible");
 
     ok(!isAccessible("presentation_dl"),
                      "presentational dl shouldn't be accessible");
     ok(!isAccessible("dt_in_presentation_dl"),
                      "dt in presentational dl shouldn't be accessible");
     ok(!isAccessible("dd_in_presentation_dl"),
                      "dd in presentational dl shouldn't be accessible");
 
--- a/accessible/tests/mochitest/tree/test_combobox.xul
+++ b/accessible/tests/mochitest/tree/test_combobox.xul
@@ -19,40 +19,45 @@
     ////////////////////////////////////////////////////////////////////////////
     // Test
 
     function doTest()
     {
       //////////////////////////////////////////////////////////////////////////
       // menulist
 
+      var selectedOptionChildren = [];
+      if (MAC) {
+        // checkmark is part of the Mac menu styling
+        selectedOptionChildren = [{
+          role: ROLE_STATICTEXT,
+          children: []
+        }];
+      }
+
       var accTree = {
         role: ROLE_COMBOBOX,
         children: [
           {
             role: ROLE_COMBOBOX_LIST,
             children: [
               {
                 role: ROLE_COMBOBOX_OPTION,
-                children: []
+                children: selectedOptionChildren
               },
               {
                 role: ROLE_COMBOBOX_OPTION,
                 children: []
               }
             ]
           }
         ]
       };
 
-      if (!MAC) {
-        testAccessibleTree("menulist", accTree);
-      } else {
-        todo(false, "Make this test pass on OSX (bug 650366)");
-      }
+      testAccessibleTree("menulist", accTree);
 
       //////////////////////////////////////////////////////////////////////////
       // editable menulist
 
       accTree = {
         role: ROLE_COMBOBOX,
         children: [
           {
--- a/accessible/tests/mochitest/tree/test_dochierarchy.html
+++ b/accessible/tests/mochitest/tree/test_dochierarchy.html
@@ -26,20 +26,25 @@
       getAccessible(window.parent.document, [nsIAccessibleDocument]) :
       getAccessible(document, [nsIAccessibleDocument]);
     var testDoc = getAccessible(document, [nsIAccessibleDocument]);
     var iframeDoc = getAccessible("iframe").firstChild.
       QueryInterface(nsIAccessibleDocument);
 
     is(root.parentDocument, null,
        "Wrong parent document of root accessible");
-    is(root.childDocumentCount, 1,
+    ok(root.childDocumentCount >= 1,
        "Wrong child document count of root accessible");
-    is(root.getChildDocumentAt(0), tabDoc,
-       "Wrong child document at index 0 of root accessible");
+
+    var tabDocumentFound = false;
+    for (var i = 0; i < root.childDocumentCount && !tabDocumentFound; i++) {
+      tabDocumentFound = root.getChildDocumentAt(i) == tabDoc;
+    }
+    ok(tabDocumentFound,
+       "Tab document not found in children of the root accessible");
 
     is(tabDoc.parentDocument, root,
        "Wrong parent document of tab document");
     is(tabDoc.childDocumentCount, 1,
        "Wrong child document count of tab document");
     is(tabDoc.getChildDocumentAt(0), (tabDoc == testDoc ? iframeDoc : testDoc),
        "Wrong child document at index 0 of tab document");
 
--- a/accessible/tests/mochitest/tree/test_select.html
+++ b/accessible/tests/mochitest/tree/test_select.html
@@ -81,17 +81,17 @@
                     role: ROLE_COMBOBOX_OPTION,
                     children: [
                       {
                         role: ROLE_TEXT_LEAF
                       }
                     ]
                   },
                 ]
-},
+              },
               {
                 role: ROLE_COMBOBOX_OPTION,
                 children: [
                   {
                     role: ROLE_TEXT_LEAF
                   }
                 ]
               }
--- a/accessible/tests/mochitest/tree/test_tabbrowser.xul
+++ b/accessible/tests/mochitest/tree/test_tabbrowser.xul
@@ -164,16 +164,33 @@
                     {
                       // #document ("about:mozilla")
                       role: ROLE_DOCUMENT
                       // children: [ ... ] // Ignore document content.
                     }
                   ]
                 }
               ]
+            },
+            {
+              // notificationbox
+              role: ROLE_PROPERTYPAGE,
+              children: [
+                {
+                  // browser
+                  role: ROLE_INTERNAL_FRAME,
+                  children: [
+                    {
+                      // #document ("about:newtab" preloaded)
+                      role: ROLE_APPLICATION
+                      // children: [ ... ] // Ignore document content.
+                    }
+                  ]
+                }
+              ]
             }
           ]
         };
 
         testAccessibleTree(tabBrowser().mTabBox.tabpanels, tabboxAccTree);
       }
 
       this.getID = function testTabHierarchy_getID()
--- a/accessible/tests/mochitest/treeupdate/test_optgroup.html
+++ b/accessible/tests/mochitest/treeupdate/test_optgroup.html
@@ -16,16 +16,17 @@
           src="../events.js"></script>
 
   <script type="application/javascript">
 
     function addOptGroup(aID)
     {
       this.selectNode = getNode(aID);
       this.select = getAccessible(this.selectNode);
+      this.selectList = this.select.firstChild;
 
       this.invoke = function addOptGroup_invoke()
       {
         var optGroup = document.createElement("optgroup");
         for (i = 0; i < 2; i++) {
           var opt = document.createElement("option");
           opt.value = i;
           opt.text = "Option: Value " + i;
@@ -34,17 +35,17 @@
         }
 
         this.selectNode.add(optGroup, null);
         var option = document.createElement("option");
         this.selectNode.add(option, null);
       }
 
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, this.select)
+        new invokerChecker(EVENT_REORDER, this.selectList)
       ];
 
       this.finalCheck = function addOptGroup_finalCheck()
       {
         var tree =
           { COMBOBOX: [
             { COMBOBOX_LIST: [
               { GROUPING: [
--- a/accessible/tests/mochitest/treeupdate/test_select.html
+++ b/accessible/tests/mochitest/treeupdate/test_select.html
@@ -16,30 +16,31 @@
           src="../events.js"></script>
 
   <script type="application/javascript">
 
     function addOptions(aID)
     {
       this.selectNode = getNode(aID);
       this.select = getAccessible(this.selectNode);
+      this.selectList = this.select.firstChild;
 
       this.invoke = function addOptions_invoke()
       {
         for (i = 0; i < 2; i++) {
           var opt = document.createElement("option");
           opt.value = i;
           opt.text = "Option: Value " + i;
 
           this.selectNode.add(opt, null);
         }
       }
 
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, this.select)
+        new invokerChecker(EVENT_REORDER, this.selectList)
       ];
 
       this.finalCheck = function addOptions_finalCheck()
       {
         var tree =
           { COMBOBOX: [
             { COMBOBOX_LIST: [
               { COMBOBOX_OPTION: [
--- a/accessible/windows/ia2/moz.build
+++ b/accessible/windows/ia2/moz.build
@@ -45,8 +45,10 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
 
 # The midl generated code include Windows headers which defines min and max
 # macros which conflicts with std::min/max.  Suppress the macros:
 if CONFIG['OS_ARCH'] == 'WINNT':
     DEFINES['NOMINMAX'] = True
+
+FAIL_ON_WARNINGS = True
--- a/accessible/windows/msaa/moz.build
+++ b/accessible/windows/msaa/moz.build
@@ -54,8 +54,10 @@ LOCAL_INCLUDES += [
     '/accessible/xpcom',
     '/accessible/xul',
     '/dom/base',
 ]
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+FAIL_ON_WARNINGS = True
--- a/accessible/windows/sdn/moz.build
+++ b/accessible/windows/sdn/moz.build
@@ -19,8 +19,10 @@ LOCAL_INCLUDES += [
     '/accessible/xul',
 ]
 
 # The midl generated code include Windows headers which defines min and max
 # macros which conflicts with std::min/max.  Suppress the macros:
 DEFINES['NOMINMAX'] = True
 
 FINAL_LIBRARY = 'xul'
+
+FAIL_ON_WARNINGS = True
--- a/accessible/windows/uia/moz.build
+++ b/accessible/windows/uia/moz.build
@@ -18,8 +18,10 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
 
 # The midl generated code include Windows headers which defines min and max
 # macros which conflicts with std::min/max.  Suppress the macros:
 if CONFIG['OS_ARCH'] == 'WINNT':
     DEFINES['NOMINMAX'] = True
+
+FAIL_ON_WARNINGS = True
--- a/accessible/xpcom/AccEventGen.py
+++ b/accessible/xpcom/AccEventGen.py
@@ -1,35 +1,36 @@
 #!/usr/bin/env python
 #
 # 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 sys, os, xpidl, makeutils
+import sys, os, xpidl
+
+from mozbuild.makeutil import write_dep_makefile
+from mozbuild.util import FileAvoidWrite
 
 def findIDL(includePath, interfaceFileName):
     for d in includePath:
         # Not os.path.join: we need a forward slash even on Windows because
         # this filename ends up in makedepend output.
         path = d + '/' + interfaceFileName
         if os.path.exists(path):
             return path
     raise BaseException("No IDL file found for interface %s "
                         "in include path %r"
                         % (interfaceFileName, includePath))
 
 def loadEventIDL(parser, includePath, eventname):
     eventidl = ("nsIAccessible%s.idl" % eventname)
     idlFile = findIDL(includePath, eventidl)
-    if not idlFile in makeutils.dependencies:
-        makeutils.dependencies.append(idlFile)
     idl = p.parse(open(idlFile).read(), idlFile)
     idl.resolve(includePath, p)
-    return idl
+    return idl, idlFile
 
 class Configuration:
     def __init__(self, filename):
         config = {}
         execfile(filename, config)
         self.simple_events = config.get('simple_events', [])
 
 def readConfigFile(filename):
@@ -37,27 +38,30 @@ def readConfigFile(filename):
 
 def firstCap(str):
     return str[0].upper() + str[1:]
 
 def writeAttributeParams(a):
     return ("%s a%s" % (a.realtype.nativeType('in'), firstCap(a.name)))
 
 def print_header_file(fd, conf):
+    idl_paths = set()
+
     fd.write("/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */\n")
     fd.write("#ifndef _mozilla_a11y_generated_AccEvents_h_\n"
              "#define _mozilla_a11y_generated_AccEvents_h_\n\n")
     fd.write("#include \"nscore.h\"\n")
     fd.write("#include \"nsCOMPtr.h\"\n")
     fd.write("#include \"nsCycleCollectionParticipant.h\"\n")
     fd.write("#include \"nsString.h\"\n")
     for e in conf.simple_events:
         fd.write("#include \"nsIAccessible%s.h\"\n" % e)
     for e in conf.simple_events:
-        idl = loadEventIDL(p, options.incdirs, e)
+        idl, idl_path = loadEventIDL(p, options.incdirs, e)
+        idl_paths.add(idl_path)
         for iface in filter(lambda p: p.kind == "interface", idl.productions):
             classname = ("xpcAcc%s" % e)
             baseinterfaces = interfaces(iface)
 
             fd.write("\nclass %s MOZ_FINAL : public %s\n" % (classname, iface.name))
             fd.write("{\n")
             fd.write("public:\n")
 
@@ -78,50 +82,58 @@ def print_header_file(fd, conf):
             fd.write("\nprivate:\n")
             fd.write("  ~%s() {}\n\n" % classname)
             for a in attributes:
                 fd.write("  %s\n" % attributeVariableTypeAndName(a))
             fd.write("};\n\n")
 
     fd.write("#endif\n")
 
+    return idl_paths
+
 def interfaceAttributeTypes(idl):
     ifaces = filter(lambda p: p.kind == "interface", idl.productions)
     attributes = []
     for i in ifaces:
         ifaceAttributes = allAttributes(i)
         attributes.extend(ifaceAttributes)
     ifaceAttrs = filter(lambda a: a.realtype.nativeType("in").endswith("*"), attributes)
     return map(lambda a: a.realtype.nativeType("in").strip(" *"), ifaceAttrs)
 
 def print_cpp(idl, fd, conf, eventname):
     for p in idl.productions:
         if p.kind == 'interface':
             write_cpp(eventname, p, fd)
 
 def print_cpp_file(fd, conf):
+    idl_paths = set()
     fd.write("/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */\n\n")
     fd.write('#include "xpcAccEvents.h"\n')
 
     includes = []
     for e in conf.simple_events:
         if not e in includes:
             includes.append(("nsIAccessible%s" % e))
 
     types = []
     for e in conf.simple_events:
-        idl = loadEventIDL(p, options.incdirs, e)
+        idl, idl_path = loadEventIDL(p, options.incdirs, e)
+        idl_paths.add(idl_path)
         types.extend(interfaceAttributeTypes(idl))
 
     for c in types:
         fd.write("#include \"%s.h\"\n" % c)
 
     fd.write("\n")
     for e in conf.simple_events:
-        print_cpp(loadEventIDL(p, options.incdirs, e), fd, conf, e)
+        idl, idl_path = loadEventIDL(p, options.incdirs, e)
+        idl_paths.add(idl_path)
+        print_cpp(idl, fd, conf, e)
+
+    return idl_paths
 
 def attributeVariableTypeAndName(a):
     if a.realtype.nativeType('in').endswith('*'):
         l = ["nsCOMPtr<%s> m%s;" % (a.realtype.nativeType('in').strip('* '),
                    firstCap(a.name))]
     elif a.realtype.nativeType('in').count("nsAString"):
         l = ["nsString m%s;" % firstCap(a.name)]
     elif a.realtype.nativeType('in').count("nsACString"):
@@ -189,52 +201,38 @@ def write_cpp(eventname, iface, fd):
         fd.write("  NS_INTERFACE_MAP_ENTRY(%s)\n" % baseiface.name)
     fd.write("NS_INTERFACE_MAP_END\n\n")
 
     for a in attributes:
         writeAttributeGetter(fd, classname, a)
 
 
 def main():
-    from optparse import OptionParser
-    o = OptionParser(usage="usage: %prog [options] configfile")
-    o.add_option('-I', action='append', dest='incdirs', default=['.'],
+    from argparse import ArgumentParser
+    o = ArgumentParser()
+    o.add_argument('-I', action='append', dest='incdirs', default=['.'],
                  help="Directory to search for imported files")
-    o.add_option('-o', "--stub-output",
-                 type='string', dest='stub_output', default=None,
-                 help="C++ source output file", metavar="FILE")
-    o.add_option('--header-output', type='string', default=None,
-                 help="Quick stub header output file", metavar="FILE")
-    o.add_option('--makedepend-output', type='string', default=None,
-                 help="gnumake dependencies output file", metavar="FILE")
-    o.add_option('--cachedir', dest='cachedir', default=None,
-                 help="Directory in which to cache lex/parse tables.")
+    o.add_argument('config',
+                 help='Config file to load')
+    o.add_argument('header_output', metavar='FILE',
+                 help="Quick stub header output file")
+    o.add_argument('stub_output', metavar='FILE',
+                 help="C++ source output file")
+    o.add_argument('makedepend_output', metavar='FILE',
+                 help="gnumake dependencies output file")
     global options
-    (options, filenames) = o.parse_args()
-    if len(filenames) != 1:
-        o.error("Exactly one config filename is needed.")
-    filename = filenames[0]
-
-    if options.cachedir is not None:
-        if not os.path.isdir(options.cachedir):
-            os.mkdir(options.cachedir)
-        sys.path.append(options.cachedir)
+    options = o.parse_args()
 
     # Instantiate the parser.
     global p
-    p = xpidl.IDLParser(outputdir=options.cachedir)
+    p = xpidl.IDLParser()
 
-    conf = readConfigFile(filename)
+    conf = readConfigFile(options.config)
 
-    if options.stub_output is not None:
-        makeutils.targets.append(options.stub_output)
-        outfd = open(options.stub_output, 'w')
-        print_cpp_file(outfd, conf)
-        outfd.close()
-        if options.makedepend_output is not None:
-            makeutils.writeMakeDependOutput(options.makedepend_output)
-    if options.header_output is not None:
-        outfd = open(options.header_output, 'w')
-        print_header_file(outfd, conf)
-        outfd.close()
+    with FileAvoidWrite(options.header_output) as fh:
+        idl_paths = print_header_file(fh, conf)
+    with FileAvoidWrite(options.stub_output) as fh:
+        idl_paths |= print_cpp_file(fh, conf)
+    with FileAvoidWrite(options.makedepend_output) as fh:
+        write_dep_makefile(fh, options.stub_output, idl_paths)
 
 if __name__ == '__main__':
     main()
--- a/accessible/xpcom/Makefile.in
+++ b/accessible/xpcom/Makefile.in
@@ -14,19 +14,19 @@ include $(topsrcdir)/config/rules.mk
 xpcAccEvents.cpp: $(srcdir)/AccEvents.conf \
                      $(srcdir)/AccEventGen.py \
                      $(LIBXUL_DIST)/sdk/bin/header.py \
                      $(LIBXUL_DIST)/sdk/bin/xpidl.py
 	$(PYTHON) $(topsrcdir)/config/pythonpath.py \
 	  -I$(LIBXUL_DIST)/sdk/bin \
 	  $(srcdir)/AccEventGen.py \
 	  -I $(DEPTH)/dist/idl \
-	  --header-output xpcAccEvents.h \
-	  --stub-output xpcAccEvents.cpp \
-	  --makedepend-output $(MDDEPDIR)/xpcAccEvents.pp \
-	  $(srcdir)/AccEvents.conf
+	  $(srcdir)/AccEvents.conf \
+	  xpcAccEvents.h \
+	  xpcAccEvents.cpp \
+	  $(MDDEPDIR)/xpcAccEvents.pp
 
 xpcAccEvents.h: xpcAccEvents.cpp
 
 GARBAGE += \
   xpcAccEvents.cpp \
   xpcAccEvents.h \
   $(null)
--- a/accessible/xpcom/moz.build
+++ b/accessible/xpcom/moz.build
@@ -42,8 +42,11 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
         '/accessible/mac',
     ]
 else:
     LOCAL_INCLUDES += [
         '/accessible/other',
     ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    FAIL_ON_WARNINGS = True
--- a/accessible/xpcom/xpcAccessible.cpp
+++ b/accessible/xpcom/xpcAccessible.cpp
@@ -18,16 +18,17 @@
 #include "nsIPersistentProperties2.h"
 
 using namespace mozilla::a11y;
 
 NS_IMETHODIMP
 xpcAccessible::GetParent(nsIAccessible** aParent)
 {
   NS_ENSURE_ARG_POINTER(aParent);
+  *aParent = nullptr;
   if (!Intl())
     return NS_ERROR_FAILURE;
 
   NS_IF_ADDREF(*aParent = ToXPC(Intl()->Parent()));
   return NS_OK;
 }
 
 NS_IMETHODIMP
@@ -141,47 +142,62 @@ xpcAccessible::GetChildren(nsIArray** aC
   NS_ADDREF(*aChildren = children);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 xpcAccessible::GetIndexInParent(int32_t* aIndexInParent)
 {
   NS_ENSURE_ARG_POINTER(aIndexInParent);
+  *aIndexInParent = -1;
+
+  if (!Intl())
+    return NS_ERROR_FAILURE;
 
   *aIndexInParent = Intl()->IndexInParent();
   return *aIndexInParent != -1 ? NS_OK : NS_ERROR_FAILURE;
 }
 
 NS_IMETHODIMP
 xpcAccessible::GetDOMNode(nsIDOMNode** aDOMNode)
 {
   NS_ENSURE_ARG_POINTER(aDOMNode);
   *aDOMNode = nullptr;
 
+  if (!Intl())
+    return NS_ERROR_FAILURE;
+
   nsINode* node = Intl()->GetNode();
   if (node)
     CallQueryInterface(node, aDOMNode);
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 xpcAccessible::GetDocument(nsIAccessibleDocument** aDocument)
 {
   NS_ENSURE_ARG_POINTER(aDocument);
+  *aDocument = nullptr;
+
+  if (!Intl())
+    return NS_ERROR_FAILURE;
 
   NS_IF_ADDREF(*aDocument = ToXPCDocument(Intl()->Document()));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 xpcAccessible::GetRootDocument(nsIAccessibleDocument** aRootDocument)
 {
   NS_ENSURE_ARG_POINTER(aRootDocument);
+  *aRootDocument = nullptr;
+
+  if (!Intl())
+    return NS_ERROR_FAILURE;
 
   NS_IF_ADDREF(*aRootDocument = ToXPCDocument(Intl()->RootAccessible()));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 xpcAccessible::GetRole(uint32_t* aRole)
 {
@@ -194,17 +210,17 @@ xpcAccessible::GetRole(uint32_t* aRole)
   *aRole = Intl()->Role();
   return NS_OK;
 }
 
 NS_IMETHODIMP
 xpcAccessible::GetState(uint32_t* aState, uint32_t* aExtraState)
 {
   NS_ENSURE_ARG_POINTER(aState);
-  
+
   if (!Intl())
     nsAccUtils::To32States(states::DEFUNCT, aState, aExtraState);
   else
     nsAccUtils::To32States(Intl()->State(), aState, aExtraState);
 
   return NS_OK;
 }
 
--- a/accessible/xul/moz.build
+++ b/accessible/xul/moz.build
@@ -43,8 +43,10 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
         '/accessible/mac',
     ]
 else:
     LOCAL_INCLUDES += [
         '/accessible/other',
     ]
 
 FINAL_LIBRARY = 'xul'
+
+FAIL_ON_WARNINGS = True
--- a/addon-sdk/Makefile.in
+++ b/addon-sdk/Makefile.in
@@ -7,16 +7,17 @@ ADDONSRC = $(srcdir)/$(TESTADDONS)
 TESTROOT = $(CURDIR)/$(DEPTH)/_tests/testing/mochitest/jetpack-addon/$(relativesrcdir)/$(TESTADDONS)
 
 # Build a list of the test add-ons
 ADDONS = $(patsubst $(ADDONSRC)/%/package.json,$(TESTADDONS)/%.xpi,$(wildcard $(ADDONSRC)/*/package.json))
 
 INSTALL_TARGETS += test_addons
 test_addons_FILES = $(ADDONS)
 test_addons_DEST = $(TESTROOT)
+test_addons_TARGET := misc
 
 sinclude $(topsrcdir)/config/rules.mk
 
 # This can switch to just zipping the files when native jetpacks land
 $(TESTADDONS)/%.xpi: FORCE $(call mkdir_deps,$(CURDIR)/$(TESTADDONS)) $(ADDONSRC)/%
 	$(PYTHON) $(srcdir)/source/bin/cfx xpi --pkgdir=$(lastword $^) --output-file=$@
 
 #libs:: $(ADDONS)
--- a/addon-sdk/moz.build
+++ b/addon-sdk/moz.build
@@ -4,16 +4,18 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # 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/.
 
+HAS_MISC_RULE = True
+
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
 JETPACK_PACKAGE_MANIFESTS += ['source/test/jetpack-package.ini']
 JETPACK_ADDON_MANIFESTS += ['source/test/addons/jetpack-addon.ini']
 
 EXTRA_JS_MODULES.sdk += [
     'source/app-extension/bootstrap.js',
 ]
 
@@ -166,16 +168,17 @@ EXTRA_JS_MODULES.commonjs.diffpatcher.te
     'source/lib/diffpatcher/test/common.js',
     'source/lib/diffpatcher/test/diff.js',
     'source/lib/diffpatcher/test/index.js',
     'source/lib/diffpatcher/test/patch.js',
     'source/lib/diffpatcher/test/tap.js',
 ]
 
 EXTRA_JS_MODULES.commonjs.framescript += [
+    'source/lib/framescript/contextmenu-events.js',
     'source/lib/framescript/FrameScriptManager.jsm',
     'source/lib/framescript/LoaderHelper.jsm',
     'source/lib/framescript/tab-events.js',
 ]
 
 EXTRA_JS_MODULES.commonjs.method += [
     'source/lib/method/core.js',
 ]
@@ -230,16 +233,17 @@ EXTRA_JS_MODULES.commonjs.sdk.browser +=
 EXTRA_JS_MODULES.commonjs.sdk.console += [
     'source/lib/sdk/console/plain-text.js',
     'source/lib/sdk/console/traceback.js',
 ]
 
 EXTRA_JS_MODULES.commonjs.sdk.content += [
     'source/lib/sdk/content/content-worker.js',
     'source/lib/sdk/content/content.js',
+    'source/lib/sdk/content/context-menu.js',
     'source/lib/sdk/content/events.js',
     'source/lib/sdk/content/loader.js',
     'source/lib/sdk/content/mod.js',
     'source/lib/sdk/content/sandbox.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-parent.js',
--- a/addon-sdk/source/lib/framescript/FrameScriptManager.jsm
+++ b/addon-sdk/source/lib/framescript/FrameScriptManager.jsm
@@ -10,16 +10,26 @@ const globalMM = Components.classes["@mo
 // Since this JSM will be loaded using require(), PATH will be
 // overridden while running tests, just like any other module.
 const PATH = __URI__.replace('FrameScriptManager.jsm', '');
 
 // ensure frame scripts are loaded only once
 let loadedTabEvents = false;
 
 function enableTabEvents() {
-  if (loadedTabEvents) 
+  if (loadedTabEvents)
     return;
 
   loadedTabEvents = true;
   globalMM.loadFrameScript(PATH + 'tab-events.js', true);
 }
 
-const EXPORTED_SYMBOLS = ['enableTabEvents'];
+let loadedCMEvents = false;
+
+function enableCMEvents() {
+  if (loadedCMEvents)
+    return;
+
+  loadedCMEvents = true;
+  globalMM.loadFrameScript(PATH + 'contextmenu-events.js', true);
+}
+
+const EXPORTED_SYMBOLS = ['enableTabEvents', 'enableCMEvents'];
new file mode 100644
--- /dev/null
+++ b/addon-sdk/source/lib/framescript/contextmenu-events.js
@@ -0,0 +1,63 @@
+/* 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";
+
+const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
+
+const { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
+
+// Holds remote items for this frame.
+let keepAlive = new Map();
+
+// Called to create remote proxies for items. If they already exist we destroy
+// and recreate. This cna happen if the item changes in some way or in odd
+// timing cases where the frame script is create around the same time as the
+// item is created in the main process
+addMessageListener('sdk/contextmenu/createitems', ({ data: { items, addon }}) => {<