author | Sebastian Hengst <archaeopteryx@coole-files.de> |
Thu, 19 Oct 2017 11:26:22 +0200 | |
changeset 387105 | 87e3813e79396f88e63fc6cfd7f07c3dbb415195 |
parent 387085 | 6d0f18e0387602d534a03c2cae10cf6b814ea9fd (current diff) |
parent 387104 | c5ee99a2c4c83edf6d19294618102b763b96c4a5 (diff) |
child 387106 | 31af3ee0436093bfd3300e9002f1118df0420309 |
child 387132 | d8419bebcb8df8fd93a5276ac474ae02b6eb76e0 |
child 387144 | 3a9c3676fed7d54e802176ce27d86ebc391cbc58 |
push id | 32709 |
push user | archaeopteryx@coole-files.de |
push date | Thu, 19 Oct 2017 09:27:00 +0000 |
treeherder | mozilla-central@87e3813e7939 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | merge, merge |
milestone | 58.0a1 |
first release with | nightly linux32
87e3813e7939
/
58.0a1
/
20171019100107
/
files
nightly linux64
87e3813e7939
/
58.0a1
/
20171019100107
/
files
nightly mac
87e3813e7939
/
58.0a1
/
20171019100107
/
files
nightly win32
87e3813e7939
/
58.0a1
/
20171019100107
/
files
nightly win64
87e3813e7939
/
58.0a1
/
20171019100107
/
files
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
releases | nightly linux32
58.0a1
/
20171019100107
/
pushlog to previous
nightly linux64
58.0a1
/
20171019100107
/
pushlog to previous
nightly mac
58.0a1
/
20171019100107
/
pushlog to previous
nightly win32
58.0a1
/
20171019100107
/
pushlog to previous
nightly win64
58.0a1
/
20171019100107
/
pushlog to previous
|
--- a/browser/base/content/browser-fullScreenAndPointerLock.js +++ b/browser/base/content/browser-fullScreenAndPointerLock.js @@ -251,16 +251,18 @@ var FullScreen = { "DOMFullscreen:NewOrigin", "DOMFullscreen:Exit", "DOMFullscreen:Painted", ], init() { // called when we go into full screen, even if initiated by a web page script window.addEventListener("fullscreen", this, true); + window.addEventListener("willenterfullscreen", this, true); + window.addEventListener("willexitfullscreen", this, true); window.addEventListener("MozDOMFullscreen:Entered", this, /* useCapture */ true, /* wantsUntrusted */ false); window.addEventListener("MozDOMFullscreen:Exited", this, /* useCapture */ true, /* wantsUntrusted */ false); for (let type of this._MESSAGES) { window.messageManager.addMessageListener(type, this); @@ -272,16 +274,24 @@ var FullScreen = { uninit() { for (let type of this._MESSAGES) { window.messageManager.removeMessageListener(type, this); } this.cleanup(); }, + willToggle(aWillEnterFullscreen) { + if (aWillEnterFullscreen) { + document.documentElement.setAttribute("inFullscreen", true); + } else { + document.documentElement.removeAttribute("inFullscreen"); + } + }, + toggle() { var enterFS = window.fullScreen; // Toggle the View:FullScreen command, which controls elements like the // fullscreen menuitem, and menubars. let fullscreenCommand = document.getElementById("View:FullScreen"); if (enterFS) { fullscreenCommand.setAttribute("checked", enterFS); @@ -343,16 +353,22 @@ var FullScreen = { }, exitDomFullScreen() { document.exitFullscreen(); }, handleEvent(event) { switch (event.type) { + case "willenterfullscreen": + this.willToggle(true); + break; + case "willexitfullscreen": + this.willToggle(false); + break; case "fullscreen": this.toggle(); break; case "MozDOMFullscreen:Entered": { // The event target is the element which requested the DOM // fullscreen. If we were entering DOM fullscreen for a remote // browser, the target would be `gBrowser` and the original // target would be the browser which was the parameter of
--- a/caps/nsScriptSecurityManager.cpp +++ b/caps/nsScriptSecurityManager.cpp @@ -160,29 +160,27 @@ inline void SetPendingException(JSContex } // Helper class to get stuff from the ClassInfo and not waste extra time with // virtual method calls for things it has already gotten class ClassInfoData { public: ClassInfoData(nsIClassInfo *aClassInfo, const char *aName) - : mClassInfo(aClassInfo), - mFlags(0), - mName(const_cast<char *>(aName)), - mDidGetFlags(false), - mMustFreeName(false) + : mClassInfo(aClassInfo), + mFlags(0), + mName(aName), + mDidGetFlags(false) { + if (!aName) { + mName.SetIsVoid(true); + } } - ~ClassInfoData() - { - if (mMustFreeName) - free(mName); - } + ~ClassInfoData() = default; uint32_t GetFlags() { if (!mDidGetFlags) { if (mClassInfo) { nsresult rv = mClassInfo->GetFlags(&mFlags); if (NS_FAILED(rv)) { mFlags = 0; @@ -197,39 +195,36 @@ public: return mFlags; } bool IsDOMClass() { return !!(GetFlags() & nsIClassInfo::DOM_OBJECT); } - const char* GetName() + void GetName(nsACString& aName) { - if (!mName) { + if (mName.IsVoid()) { if (mClassInfo) { - mClassInfo->GetClassDescription(&mName); + mClassInfo->GetClassDescription(mName); } - if (mName) { - mMustFreeName = true; - } else { - mName = const_cast<char *>("UnnamedClass"); + if (mName.IsVoid()) { + mName.AssignLiteral("UnnamedClass"); } } - return mName; + aName = mName; } private: nsIClassInfo *mClassInfo; // WEAK uint32_t mFlags; - char *mName; + nsCString mName; bool mDidGetFlags; - bool mMustFreeName; }; /* static */ bool nsScriptSecurityManager::SecurityCompareURIs(nsIURI* aSourceURI, nsIURI* aTargetURI) { return NS_SecurityCompareURIs(aSourceURI, aTargetURI, sStrictFileOriginPolicy); @@ -1310,32 +1305,34 @@ nsScriptSecurityManager::CanCreateWrappe nsCOMPtr<nsITreeSelection> treeSelection = do_QueryInterface(aObj); if (treeSelection) { return NS_OK; } } //-- Access denied, report an error - nsAutoCString origin; + nsAutoCString originUTF8; nsIPrincipal* subjectPrincipal = nsContentUtils::SubjectPrincipal(); - GetPrincipalDomainOrigin(subjectPrincipal, origin); - NS_ConvertUTF8toUTF16 originUnicode(origin); - NS_ConvertUTF8toUTF16 classInfoName(objClassInfo.GetName()); + GetPrincipalDomainOrigin(subjectPrincipal, originUTF8); + NS_ConvertUTF8toUTF16 originUTF16(originUTF8); + nsAutoCString classInfoNameUTF8; + objClassInfo.GetName(classInfoNameUTF8); + NS_ConvertUTF8toUTF16 classInfoUTF16(classInfoNameUTF8); nsresult rv; nsAutoString errorMsg; - if (originUnicode.IsEmpty()) { - const char16_t* formatStrings[] = { classInfoName.get() }; + if (originUTF16.IsEmpty()) { + const char16_t* formatStrings[] = { classInfoUTF16.get() }; rv = sStrBundle->FormatStringFromName("CreateWrapperDenied", formatStrings, 1, errorMsg); } else { - const char16_t* formatStrings[] = { classInfoName.get(), - originUnicode.get() }; + const char16_t* formatStrings[] = { classInfoUTF16.get(), + originUTF16.get() }; rv = sStrBundle->FormatStringFromName("CreateWrapperDeniedForOrigin", formatStrings, 2, errorMsg); } NS_ENSURE_SUCCESS(rv, rv); SetPendingException(cx, errorMsg.get());
--- a/dom/base/FragmentOrElement.cpp +++ b/dom/base/FragmentOrElement.cpp @@ -120,16 +120,17 @@ #include "nsCycleCollector.h" #include "xpcpublic.h" #include "nsIScriptError.h" #include "mozilla/Telemetry.h" #include "mozilla/CORSMode.h" #include "mozilla/dom/ShadowRoot.h" +#include "mozilla/dom/HTMLSlotElement.h" #include "mozilla/dom/HTMLTemplateElement.h" #include "mozilla/dom/SVGUseElement.h" #include "nsStyledElement.h" #include "nsIContentInlines.h" #include "nsChildContentList.h" using namespace mozilla; @@ -693,16 +694,19 @@ FragmentOrElement::nsDOMSlots::Traverse( cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*,mExtendedSlots-> mLabelsList)); NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mShadowRoot"); cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mShadowRoot)); NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mContainingShadow"); cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mContainingShadow)); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mAssignedSlot"); + cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mAssignedSlot.get())); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mXBLBinding"); cb.NoteNativeChild(mExtendedSlots->mXBLBinding, NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding)); NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mXBLInsertionParent"); cb.NoteXPCOMChild(mExtendedSlots->mXBLInsertionParent.get()); if (mExtendedSlots->mCustomElementData) { @@ -740,16 +744,17 @@ FragmentOrElement::nsDOMSlots::Unlink() return; } mExtendedSlots->mSMILOverrideStyle = nullptr; mExtendedSlots->mControllers = nullptr; mExtendedSlots->mLabelsList = nullptr; mExtendedSlots->mShadowRoot = nullptr; mExtendedSlots->mContainingShadow = nullptr; + mExtendedSlots->mAssignedSlot = nullptr; MOZ_ASSERT(!(mExtendedSlots->mXBLBinding)); mExtendedSlots->mXBLInsertionParent = nullptr; if (mExtendedSlots->mCustomElementData) { if (mExtendedSlots->mCustomElementData->mCustomElementDefinition) { mExtendedSlots->mCustomElementData->mCustomElementDefinition = nullptr; } mExtendedSlots->mCustomElementData = nullptr; } @@ -1210,16 +1215,30 @@ FragmentOrElement::GetExistingDestInsert { nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); if (slots) { return &slots->mDestInsertionPoints; } return nullptr; } +HTMLSlotElement* +FragmentOrElement::GetAssignedSlot() const +{ + nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots(); + return slots ? slots->mAssignedSlot.get() : nullptr; +} + +void +FragmentOrElement::SetAssignedSlot(HTMLSlotElement* aSlot) +{ + nsExtendedDOMSlots* slots = ExtendedDOMSlots(); + slots->mAssignedSlot = aSlot; +} + void FragmentOrElement::SetXBLInsertionParent(nsIContent* aContent) { nsCOMPtr<nsIContent> oldInsertionParent = nullptr; if (aContent) { nsExtendedDOMSlots* slots = ExtendedDOMSlots(); SetFlags(NODE_MAY_BE_IN_BINDING_MNGR); oldInsertionParent = slots->mXBLInsertionParent.forget();
--- a/dom/base/FragmentOrElement.h +++ b/dom/base/FragmentOrElement.h @@ -150,16 +150,18 @@ public: virtual nsIContent *GetBindingParent() const override; virtual nsXBLBinding *GetXBLBinding() const override; virtual void SetXBLBinding(nsXBLBinding* aBinding, nsBindingManager* aOldBindingManager = nullptr) override; virtual ShadowRoot *GetContainingShadow() const override; virtual nsTArray<nsIContent*> &DestInsertionPoints() override; virtual nsTArray<nsIContent*> *GetExistingDestInsertionPoints() const override; virtual void SetShadowRoot(ShadowRoot* aBinding) override; + virtual mozilla::dom::HTMLSlotElement* GetAssignedSlot() const override; + virtual void SetAssignedSlot(mozilla::dom::HTMLSlotElement* aSlot) override; virtual nsIContent *GetXBLInsertionParent() const override; virtual void SetXBLInsertionParent(nsIContent* aContent) override; virtual bool IsLink(nsIURI** aURI) const override; virtual void DestroyContent() override; virtual void SaveSubtreeState() override; NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) override; @@ -293,16 +295,21 @@ public: /** * An array of web component insertion points to which this element * is distributed. */ nsTArray<nsIContent*> mDestInsertionPoints; /** + * The assigned slot associated with this element. + */ + RefPtr<mozilla::dom::HTMLSlotElement> mAssignedSlot; + + /** * XBL binding installed on the element. */ RefPtr<nsXBLBinding> mXBLBinding; /** * XBL binding installed on the lement. */ nsCOMPtr<nsIContent> mXBLInsertionParent;
--- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -557,25 +557,24 @@ NS_IMETHODIMP nsDOMClassInfo::GetScriptableHelper(nsIXPCScriptable **_retval) { nsCOMPtr<nsIXPCScriptable> rval = this; rval.forget(_retval); return NS_OK; } NS_IMETHODIMP -nsDOMClassInfo::GetContractID(char **aContractID) +nsDOMClassInfo::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; - + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsDOMClassInfo::GetClassDescription(char **aClassDescription) +nsDOMClassInfo::GetClassDescription(nsACString& aClassDescription) { return GetClassName(aClassDescription); } NS_IMETHODIMP nsDOMClassInfo::GetClassID(nsCID **aClassID) { *aClassID = nullptr; @@ -594,20 +593,19 @@ nsDOMClassInfo::GetFlags(uint32_t *aFlag *aFlags = DOMCLASSINFO_STANDARD_FLAGS; return NS_OK; } // nsIXPCScriptable NS_IMETHODIMP -nsDOMClassInfo::GetClassName(char **aClassName) +nsDOMClassInfo::GetClassName(nsACString& aClassName) { - *aClassName = NS_strdup(mData->mClass.name); - + aClassName.Assign(mData->mClass.name); return NS_OK; } // virtual uint32_t nsDOMClassInfo::GetScriptableFlags() { return mData->mScriptableFlags;
--- a/dom/base/nsGenericDOMDataNode.cpp +++ b/dom/base/nsGenericDOMDataNode.cpp @@ -10,16 +10,17 @@ */ #include "mozilla/DebugOnly.h" #include "nsGenericDOMDataNode.h" #include "mozilla/AsyncEventDispatcher.h" #include "mozilla/MemoryReporting.h" #include "mozilla/dom/Element.h" +#include "mozilla/dom/HTMLSlotElement.h" #include "mozilla/dom/ShadowRoot.h" #include "nsIDocument.h" #include "nsIDOMDocument.h" #include "nsReadableUtils.h" #include "mozilla/InternalMutationEvent.h" #include "nsIURI.h" #include "nsIDOMEvent.h" #include "nsIDOMText.h" @@ -734,16 +735,30 @@ nsGenericDOMDataNode::GetExistingDestIns { nsDataSlots *slots = GetExistingDataSlots(); if (slots) { return &slots->mDestInsertionPoints; } return nullptr; } +HTMLSlotElement* +nsGenericDOMDataNode::GetAssignedSlot() const +{ + nsDataSlots *slots = GetExistingDataSlots(); + return slots ? slots->mAssignedSlot.get() : nullptr; +} + +void +nsGenericDOMDataNode::SetAssignedSlot(HTMLSlotElement* aSlot) +{ + nsDataSlots *slots = DataSlots(); + slots->mAssignedSlot = aSlot; +} + nsXBLBinding * nsGenericDOMDataNode::GetXBLBinding() const { return nullptr; } void nsGenericDOMDataNode::SetXBLBinding(nsXBLBinding* aBinding, @@ -824,23 +839,27 @@ nsGenericDOMDataNode::nsDataSlots::nsDat void nsGenericDOMDataNode::nsDataSlots::Traverse(nsCycleCollectionTraversalCallback &cb) { NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mXBLInsertionParent"); cb.NoteXPCOMChild(mXBLInsertionParent.get()); NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mContainingShadow"); cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mContainingShadow)); + + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mAssignedSlot"); + cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mAssignedSlot.get())); } void nsGenericDOMDataNode::nsDataSlots::Unlink() { mXBLInsertionParent = nullptr; mContainingShadow = nullptr; + mAssignedSlot = nullptr; } //---------------------------------------------------------------------- // Implementation of the nsIDOMText interface nsresult nsGenericDOMDataNode::SplitData(uint32_t aOffset, nsIContent** aReturn,
--- a/dom/base/nsGenericDOMDataNode.h +++ b/dom/base/nsGenericDOMDataNode.h @@ -21,16 +21,22 @@ #include "nsCycleCollectionParticipant.h" #include "nsISMILAttr.h" #include "mozilla/dom/ShadowRoot.h" class nsIDocument; class nsIDOMText; +namespace mozilla { +namespace dom { +class HTMLSlotElement; +} // namespace dom +} // namespace mozilla + #define DATA_NODE_FLAG_BIT(n_) NODE_FLAG_BIT(NODE_TYPE_SPECIFIC_BITS_OFFSET + (n_)) // Data node specific flags enum { // This bit is set to indicate that if the text node changes to // non-whitespace, we may need to create a frame for it. This bit must // not be set on nodes that already have a frame. NS_CREATE_FRAME_IF_NON_WHITESPACE = DATA_NODE_FLAG_BIT(0), @@ -165,16 +171,18 @@ public: virtual nsIContent *GetBindingParent() const override; virtual nsXBLBinding *GetXBLBinding() const override; virtual void SetXBLBinding(nsXBLBinding* aBinding, nsBindingManager* aOldBindingManager = nullptr) override; virtual mozilla::dom::ShadowRoot *GetContainingShadow() const override; virtual nsTArray<nsIContent*> &DestInsertionPoints() override; virtual nsTArray<nsIContent*> *GetExistingDestInsertionPoints() const override; virtual void SetShadowRoot(mozilla::dom::ShadowRoot* aShadowRoot) override; + virtual mozilla::dom::HTMLSlotElement* GetAssignedSlot() const override; + virtual void SetAssignedSlot(mozilla::dom::HTMLSlotElement* aSlot) override; virtual nsIContent *GetXBLInsertionParent() const override; virtual void SetXBLInsertionParent(nsIContent* aContent) override; virtual bool IsNodeOfType(uint32_t aFlags) const override; virtual bool IsLink(nsIURI** aURI) const override; NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) override; NS_IMETHOD_(bool) IsAttributeMapped(const nsAtom* aAttribute) const; virtual nsChangeHint GetAttributeChangeHint(const nsAtom* aAttribute, @@ -278,16 +286,21 @@ protected: * @see nsIContent::GetContainingShadow */ RefPtr<mozilla::dom::ShadowRoot> mContainingShadow; /** * @see nsIContent::GetDestInsertionPoints */ nsTArray<nsIContent*> mDestInsertionPoints; + + /** + * @see nsIContent::GetAssignedSlot + */ + RefPtr<mozilla::dom::HTMLSlotElement> mAssignedSlot; }; // Override from nsINode virtual nsINode::nsSlots* CreateSlots() override; nsDataSlots* DataSlots() { return static_cast<nsDataSlots*>(Slots());
--- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -7304,16 +7304,26 @@ nsGlobalWindow::SetWidgetFullscreen(Full // If we enter fullscreen for fullscreen mode, we want // the native system behavior. aWidget->MakeFullScreenWithNativeTransition(aIsFullscreen, aScreen) : aWidget->MakeFullScreen(aIsFullscreen, aScreen); return NS_SUCCEEDED(rv); } /* virtual */ void +nsGlobalWindow::FullscreenWillChange(bool aIsFullscreen) +{ + if (aIsFullscreen) { + DispatchCustomEvent(NS_LITERAL_STRING("willenterfullscreen")); + } else { + DispatchCustomEvent(NS_LITERAL_STRING("willexitfullscreen")); + } +} + +/* virtual */ void nsGlobalWindow::FinishFullscreenChange(bool aIsFullscreen) { MOZ_ASSERT(IsOuterWindow()); if (aIsFullscreen != mFullScreen) { NS_WARNING("Failed to toggle fullscreen state of the widget"); // We failed to make the widget enter fullscreen. // Stop further changes and restore the state.
--- a/dom/base/nsGlobalWindow.h +++ b/dom/base/nsGlobalWindow.h @@ -447,16 +447,17 @@ public: void RefreshCompartmentPrincipal(); // For accessing protected field mFullScreen friend class FullscreenTransitionTask; // Outer windows only. virtual nsresult SetFullscreenInternal( FullscreenReason aReason, bool aIsFullscreen) override final; + virtual void FullscreenWillChange(bool aIsFullscreen) override final; virtual void FinishFullscreenChange(bool aIsFullscreen) override final; bool SetWidgetFullscreen(FullscreenReason aReason, bool aIsFullscreen, nsIWidget* aWidget, nsIScreen* aScreen); bool FullScreen() const; // Inner windows only. virtual void SetHasGamepadEventListener(bool aHasGamepad = true) override; void NotifyVREventListenerAdded();
--- a/dom/base/nsIContent.h +++ b/dom/base/nsIContent.h @@ -23,16 +23,17 @@ class nsIFrame; class nsXBLBinding; class nsITextControlElement; namespace mozilla { class EventChainPreVisitor; struct URLExtraData; namespace dom { class ShadowRoot; +class HTMLSlotElement; } // namespace dom namespace widget { struct IMEState; } // namespace widget } // namespace mozilla enum nsLinkState { eLinkState_Unvisited = 1, @@ -739,16 +740,30 @@ public: /** * Same as DestInsertionPoints except that this method will return * null if the array of destination insertion points does not already * exist. */ virtual nsTArray<nsIContent*> *GetExistingDestInsertionPoints() const = 0; /** + * Gets the assigned slot associated with this content. + * + * @return The assigned slot element or null. + */ + virtual mozilla::dom::HTMLSlotElement* GetAssignedSlot() const = 0; + + /** + * Sets the assigned slot associated with this content. + * + * @param aSlot The assigned slot. + */ + virtual void SetAssignedSlot(mozilla::dom::HTMLSlotElement* aSlot) = 0; + + /** * Gets the insertion parent element of the XBL binding. * The insertion parent is our one true parent in the transformed DOM. * * @return the insertion parent element. */ virtual nsIContent *GetXBLInsertionParent() const = 0; /**
--- a/dom/base/nsPIDOMWindow.h +++ b/dom/base/nsPIDOMWindow.h @@ -383,16 +383,17 @@ public: * Moves the top-level window into fullscreen mode if aIsFullScreen is true, * otherwise exits fullscreen. * * Outer windows only. */ virtual nsresult SetFullscreenInternal( FullscreenReason aReason, bool aIsFullscreen) = 0; + virtual void FullscreenWillChange(bool aIsFullscreen) = 0; /** * This function should be called when the fullscreen state is flipped. * If no widget is involved the fullscreen change, this method is called * by SetFullscreenInternal, otherwise, it is called when the widget * finishes its change to or from fullscreen. * * @param aIsFullscreen indicates whether the widget is in fullscreen. *
--- a/dom/file/nsHostObjectURI.cpp +++ b/dom/file/nsHostObjectURI.cpp @@ -239,28 +239,28 @@ nsHostObjectURI::GetInterfaces(uint32_t NS_IMETHODIMP nsHostObjectURI::GetScriptableHelper(nsIXPCScriptable **_retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsHostObjectURI::GetContractID(char * *aContractID) +nsHostObjectURI::GetContractID(nsACString& aContractID) { // Make sure to modify any subclasses as needed if this ever // changes. - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsHostObjectURI::GetClassDescription(char * *aClassDescription) +nsHostObjectURI::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsHostObjectURI::GetClassID(nsCID * *aClassID) { // Make sure to modify any subclasses as needed if this ever // changes to not call the virtual GetClassIDNoAlloc.
--- a/dom/media/CubebUtils.cpp +++ b/dom/media/CubebUtils.cpp @@ -43,16 +43,20 @@ #define MASK_3F1_LFE (MASK_3F1 | (1 << AudioConfig::CHANNEL_LFE)) #define MASK_2F2 (MASK_STEREO | (1 << AudioConfig::CHANNEL_LS) | (1 << AudioConfig::CHANNEL_RS)) #define MASK_2F2_LFE (MASK_2F2 | (1 << AudioConfig::CHANNEL_LFE)) #define MASK_3F2 (MASK_3F | (1 << AudioConfig::CHANNEL_LS) | (1 << AudioConfig::CHANNEL_RS)) #define MASK_3F2_LFE (MASK_3F2 | (1 << AudioConfig::CHANNEL_LFE)) #define MASK_3F3R_LFE (MASK_3F2_LFE | (1 << AudioConfig::CHANNEL_RCENTER)) #define MASK_3F4_LFE (MASK_3F2_LFE | (1 << AudioConfig::CHANNEL_RLS) | (1 << AudioConfig::CHANNEL_RRS)) +#if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID) +#define MOZ_CUBEB_REMOTING +#endif + extern "C" { // These functions are provided by audioipc-server crate extern void* audioipc_server_start(); extern void audioipc_server_stop(void*); // These functions are provided by audioipc-client crate extern int audioipc_client_init(cubeb**, const char*); }
--- a/dom/media/MediaPrefs.h +++ b/dom/media/MediaPrefs.h @@ -201,19 +201,18 @@ private: // Error/warning handling, Decoder Doctor DECL_MEDIA_PREF("media.playback.warnings-as-errors", MediaWarningsAsErrors, bool, false); DECL_MEDIA_PREF("media.playback.warnings-as-errors.stagefright-vs-rust", MediaWarningsAsErrorsStageFrightVsRust, bool, false); // resume background video decoding when the cursor is hovering over the tab. DECL_MEDIA_PREF("media.resume-bkgnd-video-on-tabhover", ResumeVideoDecodingOnTabHover, bool, false); -#ifdef MOZ_CUBEB_REMOTING + // Enable sandboxing support for cubeb DECL_MEDIA_PREF("media.cubeb.sandbox", CubebSandbox, bool, false); -#endif // MOZ_CUBEB_REMOTING DECL_MEDIA_PREF("media.videocontrols.lock-video-orientation", VideoOrientationLockEnabled, bool, false); public: // Manage the singleton: static MediaPrefs& GetSingleton(); static bool SingletonExists(); private:
--- a/dom/webidl/Element.webidl +++ b/dom/webidl/Element.webidl @@ -238,16 +238,18 @@ partial interface Element { // http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-element-interface partial interface Element { [Throws,Pref="dom.webcomponents.enabled"] ShadowRoot createShadowRoot(); [Pref="dom.webcomponents.enabled"] NodeList getDestinationInsertionPoints(); [Pref="dom.webcomponents.enabled"] readonly attribute ShadowRoot? shadowRoot; + [Pref="dom.webcomponents.enabled"] + readonly attribute HTMLSlotElement? assignedSlot; }; Element implements ChildNode; Element implements NonDocumentTypeChildNode; Element implements ParentNode; Element implements Animatable; Element implements GeometryUtils;
--- a/dom/webidl/Text.webidl +++ b/dom/webidl/Text.webidl @@ -13,9 +13,14 @@ [Constructor(optional DOMString data = "")] interface Text : CharacterData { [Throws] Text splitText(unsigned long offset); [Throws] readonly attribute DOMString wholeText; }; +partial interface Text { + [Pref="dom.webcomponents.enabled"] + readonly attribute HTMLSlotElement? assignedSlot; +}; + Text implements GeometryUtils;
--- a/gfx/layers/ipc/CrossProcessCompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CrossProcessCompositorBridgeParent.cpp @@ -207,28 +207,31 @@ CrossProcessCompositorBridgeParent::Allo NS_ERROR("Unexpected layers id in AllocPAPZCTreeManagerParent; dropping message..."); return nullptr; } MonitorAutoLock lock(*sIndirectLayerTreesLock); MOZ_ASSERT(sIndirectLayerTrees.find(layersId) != sIndirectLayerTrees.end()); MOZ_ASSERT(sIndirectLayerTrees[layersId].mWrBridge == nullptr); WebRenderBridgeParent* parent = nullptr; + WebRenderBridgeParent* root = nullptr; CompositorBridgeParent* cbp = sIndirectLayerTrees[layersId].mParent; - if (!cbp) { + if (cbp) { + root = sIndirectLayerTrees[cbp->RootLayerTreeId()].mWrBridge.get(); + } + if (!root) { // This could happen when this function is called after CompositorBridgeParent destruction. // This was observed during Tab move between different windows. NS_WARNING("Created child without a matching parent?"); parent = WebRenderBridgeParent::CreateDestroyed(aPipelineId); parent->AddRef(); // IPDL reference *aIdNamespace = parent->GetIdNamespace(); *aTextureFactoryIdentifier = TextureFactoryIdentifier(LayersBackend::LAYERS_NONE); return parent; } - WebRenderBridgeParent* root = sIndirectLayerTrees[cbp->RootLayerTreeId()].mWrBridge.get(); RefPtr<wr::WebRenderAPI> api = root->GetWebRenderAPI()->Clone(); RefPtr<AsyncImagePipelineManager> holder = root->AsyncImageManager(); RefPtr<CompositorAnimationStorage> animStorage = cbp->GetAnimationStorage(); parent = new WebRenderBridgeParent(this, aPipelineId, nullptr, root->CompositorScheduler(), Move(api), Move(holder), Move(animStorage)); parent->AddRef(); // IPDL reference sIndirectLayerTrees[layersId].mCrossProcessParent = this;
--- a/gfx/layers/wr/WebRenderBridgeChild.cpp +++ b/gfx/layers/wr/WebRenderBridgeChild.cpp @@ -8,58 +8,62 @@ #include "gfxPlatform.h" #include "mozilla/layers/CompositableClient.h" #include "mozilla/layers/CompositorBridgeChild.h" #include "mozilla/layers/ImageDataSerializer.h" #include "mozilla/layers/IpcResourceUpdateQueue.h" #include "mozilla/layers/StackingContextHelper.h" #include "mozilla/layers/PTextureChild.h" +#include "mozilla/layers/WebRenderLayerManager.h" #include "mozilla/webrender/WebRenderAPI.h" namespace mozilla { namespace layers { using namespace mozilla::gfx; WebRenderBridgeChild::WebRenderBridgeChild(const wr::PipelineId& aPipelineId) : mReadLockSequenceNumber(0) , mIsInTransaction(false) , mIsInClearCachedResources(false) , mIdNamespace{0} , mResourceId(0) , mPipelineId(aPipelineId) + , mManager(nullptr) , mIPCOpen(false) , mDestroyed(false) , mFontKeysDeleted(0) , mFontInstanceKeysDeleted(0) { } void WebRenderBridgeChild::Destroy(bool aIsSync) { if (!IPCOpen()) { return; } // mDestroyed is used to prevent calling Send__delete__() twice. // When this function is called from CompositorBridgeChild::Destroy(). mDestroyed = true; + mManager = nullptr; if (aIsSync) { SendShutdownSync(); } else { SendShutdown(); } } void WebRenderBridgeChild::ActorDestroy(ActorDestroyReason why) { mDestroyed = true; + mManager = nullptr; } void WebRenderBridgeChild::AddWebRenderParentCommand(const WebRenderParentCommand& aCmd) { MOZ_ASSERT(mIsInTransaction || mIsInClearCachedResources); mParentCommands.AppendElement(aCmd); } @@ -521,23 +525,25 @@ bool WebRenderBridgeChild::InForwarderThread() { return NS_IsMainThread(); } mozilla::ipc::IPCResult WebRenderBridgeChild::RecvWrUpdated(const wr::IdNamespace& aNewIdNamespace) { + if (mManager) { + mManager->WrUpdated(); + } // Update mIdNamespace to identify obsolete keys and messages by WebRenderBridgeParent. // Since usage of invalid keys could cause crash in webrender. mIdNamespace = aNewIdNamespace; // Just clear FontInstaceKeys/FontKeys, they are removed during WebRenderAPI destruction. mFontInstanceKeys.Clear(); mFontKeys.Clear(); - GetCompositorBridgeChild()->RecvInvalidateLayers(wr::AsUint64(mPipelineId)); return IPC_OK(); } void WebRenderBridgeChild::BeginClearCachedResources() { mIsInClearCachedResources = true; } @@ -549,16 +555,23 @@ WebRenderBridgeChild::EndClearCachedReso mIsInClearCachedResources = false; return; } ProcessWebRenderParentCommands(); SendClearCachedResources(); mIsInClearCachedResources = false; } +void +WebRenderBridgeChild::SetWebRenderLayerManager(WebRenderLayerManager* aManager) +{ + MOZ_ASSERT(aManager); + mManager = aManager; +} + ipc::IShmemAllocator* WebRenderBridgeChild::GetShmemAllocator() { return static_cast<CompositorBridgeChild*>(Manager()); } } // namespace layers } // namespace mozilla
--- a/gfx/layers/wr/WebRenderBridgeChild.h +++ b/gfx/layers/wr/WebRenderBridgeChild.h @@ -23,16 +23,17 @@ class IpcResourceUpdateQueue; } namespace layers { class CompositableClient; class CompositorBridgeChild; class StackingContextHelper; class TextureForwarder; +class WebRenderLayerManager; template<class T> class ThreadSafeWeakPtrHashKey : public PLDHashEntryHdr { public: typedef RefPtr<T> KeyType; typedef const T* KeyTypePointer; @@ -136,16 +137,18 @@ public: wr::FontInstanceKey GetFontKeyForScaledFont(gfx::ScaledFont* aScaledFont); void RemoveExpiredFontKeys(); void ClearReadLocks(); void BeginClearCachedResources(); void EndClearCachedResources(); + void SetWebRenderLayerManager(WebRenderLayerManager* aManager); + ipc::IShmemAllocator* GetShmemAllocator(); private: friend class CompositorBridgeChild; ~WebRenderBridgeChild() {} wr::ExternalImageId GetNextExternalImageId(); @@ -194,16 +197,17 @@ private: nsDataHashtable<nsUint64HashKey, CompositableClient*> mCompositables; nsTArray<nsTArray<ReadLockInit>> mReadLocks; uint64_t mReadLockSequenceNumber; bool mIsInTransaction; bool mIsInClearCachedResources; wr::IdNamespace mIdNamespace; uint32_t mResourceId; wr::PipelineId mPipelineId; + WebRenderLayerManager* mManager; bool mIPCOpen; bool mDestroyed; uint32_t mFontKeysDeleted; nsDataHashtable<UnscaledFontHashKey, wr::FontKey> mFontKeys; uint32_t mFontInstanceKeysDeleted;
--- a/gfx/layers/wr/WebRenderCommandBuilder.cpp +++ b/gfx/layers/wr/WebRenderCommandBuilder.cpp @@ -485,17 +485,17 @@ WebRenderCommandBuilder::GenerateFallbac if (!lastBounds.IsEqualInterior(clippedBounds)) { invalidRegion.OrWith(lastBounds); invalidRegion.OrWith(clippedBounds); } } needPaint = !invalidRegion.IsEmpty(); } - if (needPaint) { + if (needPaint || !fallbackData->GetKey()) { gfx::SurfaceFormat format = aItem->GetType() == DisplayItemType::TYPE_MASK ? gfx::SurfaceFormat::A8 : gfx::SurfaceFormat::B8G8R8A8; if (gfxPrefs::WebRenderBlobImages()) { bool snapped; bool isOpaque = aItem->GetOpaqueRegion(aDisplayListBuilder, &snapped).Contains(clippedBounds); RefPtr<gfx::DrawEventRecorderMemory> recorder = MakeAndAddRef<gfx::DrawEventRecorderMemory>(); RefPtr<gfx::DrawTarget> dummyDt = @@ -631,10 +631,19 @@ WebRenderCommandBuilder::RemoveUnusedAnd iter.Remove(); continue; } data->SetUsed(false); } } +void +WebRenderCommandBuilder::ClearCachedResources() +{ + for (auto iter = mWebRenderUserDatas.Iter(); !iter.Done(); iter.Next()) { + WebRenderUserData* data = iter.Get()->GetKey(); + data->ClearCachedResources(); + } +} + } // namespace layers } // namespace mozilla
--- a/gfx/layers/wr/WebRenderCommandBuilder.h +++ b/gfx/layers/wr/WebRenderCommandBuilder.h @@ -89,16 +89,17 @@ public: already_AddRefed<WebRenderFallbackData> GenerateFallbackData(nsDisplayItem* aItem, wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, const StackingContextHelper& aSc, nsDisplayListBuilder* aDisplayListBuilder, LayoutDeviceRect& aImageRect); void RemoveUnusedAndResetWebRenderUserData(); + void ClearCachedResources(); // Those are data that we kept between transactions. We used to cache some // data in the layer. But in layers free mode, we don't have layer which // means we need some other place to cached the data between transaction. // We store the data in frame's property. template<class T> already_AddRefed<T> CreateOrRecycleWebRenderUserData(nsDisplayItem* aItem, bool* aOutIsRecycled = nullptr)
--- a/gfx/layers/wr/WebRenderLayerManager.cpp +++ b/gfx/layers/wr/WebRenderLayerManager.cpp @@ -65,16 +65,17 @@ WebRenderLayerManager::Initialize(PCompo // permission for, or more likely, the GPU process crashed again during // reinitialization. We can expect to be notified again to reinitialize // (which may or may not be using WebRender). gfxCriticalNote << "Failed to create WebRenderBridgeChild."; return false; } mWrChild = static_cast<WebRenderBridgeChild*>(bridge); + WrBridge()->SetWebRenderLayerManager(this); WrBridge()->SendCreate(size.ToUnknownSize()); WrBridge()->IdentifyTextureHost(textureFactoryIdentifier); WrBridge()->SetNamespace(id_namespace); *aTextureFactoryIdentifier = textureFactoryIdentifier; return true; } void @@ -496,17 +497,19 @@ WebRenderLayerManager::DidComposite(uint nsIWidgetListener *listener = mWidget->GetWidgetListener(); if (listener) { listener->DidCompositeWindow(aTransactionId, aCompositeStart, aCompositeEnd); } listener = mWidget->GetAttachedWidgetListener(); if (listener) { listener->DidCompositeWindow(aTransactionId, aCompositeStart, aCompositeEnd); } - mTransactionIdAllocator->NotifyTransactionCompleted(aTransactionId); + if (mTransactionIdAllocator) { + mTransactionIdAllocator->NotifyTransactionCompleted(aTransactionId); + } } // These observers fire whether or not we were in a transaction. for (size_t i = 0; i < mDidCompositeObservers.Length(); i++) { mDidCompositeObservers[i]->DidComposite(); } } @@ -530,16 +533,23 @@ void WebRenderLayerManager::ClearCachedResources(Layer* aSubtree) { WrBridge()->BeginClearCachedResources(); DiscardImages(); WrBridge()->EndClearCachedResources(); } void +WebRenderLayerManager::WrUpdated() +{ + mWebRenderCommandBuilder.ClearCachedResources(); + DiscardLocalImages(); +} + +void WebRenderLayerManager::UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier, uint64_t aDeviceResetSeqNo) { WrBridge()->IdentifyTextureHost(aNewIdentifier); } TextureFactoryIdentifier WebRenderLayerManager::GetTextureFactoryIdentifier()
--- a/gfx/layers/wr/WebRenderLayerManager.h +++ b/gfx/layers/wr/WebRenderLayerManager.h @@ -150,16 +150,18 @@ public: bool SetPendingScrollUpdateForNextTransaction(FrameMetrics::ViewID aScrollId, const ScrollUpdateInfo& aUpdateInfo) override; WebRenderCommandBuilder& CommandBuilder() { return mWebRenderCommandBuilder; } WebRenderUserDataRefTable* GetWebRenderUserDataTable() { return mWebRenderCommandBuilder.GetWebRenderUserDataTable(); } WebRenderScrollData& GetScrollData() { return mScrollData; } + void WrUpdated(); + private: /** * Take a snapshot of the parent context, and copy * it into mTarget. */ void MakeSnapshotIfRequired(LayoutDeviceIntSize aSize); void ClearLayer(Layer* aLayer);
--- a/gfx/layers/wr/WebRenderUserData.cpp +++ b/gfx/layers/wr/WebRenderUserData.cpp @@ -49,26 +49,35 @@ WebRenderUserData::WrBridge() const WebRenderImageData::WebRenderImageData(WebRenderLayerManager* aWRManager, nsDisplayItem* aItem) : WebRenderUserData(aWRManager, aItem) { } WebRenderImageData::~WebRenderImageData() { + ClearCachedResources(); +} + +void +WebRenderImageData::ClearCachedResources() +{ if (mKey) { mWRManager->AddImageKeyForDiscard(mKey.value()); + mKey.reset(); } if (mExternalImageId) { WrBridge()->DeallocExternalImageId(mExternalImageId.ref()); + mExternalImageId.reset(); } if (mPipelineId) { WrBridge()->RemovePipelineIdForCompositable(mPipelineId.ref()); + mPipelineId.reset(); } } Maybe<wr::ImageKey> WebRenderImageData::UpdateImageKey(ImageContainer* aContainer, wr::IpcResourceUpdateQueue& aResources, bool aForceUpdate) { @@ -230,16 +239,25 @@ WebRenderAnimationData::~WebRenderAnimat WebRenderCanvasData::WebRenderCanvasData(WebRenderLayerManager* aWRManager, nsDisplayItem* aItem) : WebRenderUserData(aWRManager, aItem) { } WebRenderCanvasData::~WebRenderCanvasData() { + ClearCachedResources(); +} + +void +WebRenderCanvasData::ClearCachedResources() +{ + if (mCanvasRenderer) { + mCanvasRenderer->ClearCachedResources(); + } } WebRenderCanvasRendererAsync* WebRenderCanvasData::GetCanvasRenderer() { if (!mCanvasRenderer) { mCanvasRenderer = MakeUnique<WebRenderCanvasRendererAsync>(mWRManager); }
--- a/gfx/layers/wr/WebRenderUserData.h +++ b/gfx/layers/wr/WebRenderUserData.h @@ -51,17 +51,17 @@ public: virtual UserDataType GetType() = 0; bool IsDataValid(WebRenderLayerManager* aManager); bool IsUsed() { return mUsed; } void SetUsed(bool aUsed) { mUsed = aUsed; } nsIFrame* GetFrame() { return mFrame; } uint32_t GetDisplayItemKey() { return mDisplayItemKey; } void RemoveFromTable(); - + virtual void ClearCachedResources() {}; protected: virtual ~WebRenderUserData(); WebRenderBridgeChild* WrBridge() const; RefPtr<WebRenderLayerManager> mWRManager; nsIFrame* mFrame; uint32_t mDisplayItemKey; @@ -93,17 +93,17 @@ public: const LayoutDeviceRect& aSCBounds, const gfx::Matrix4x4& aSCTransform, const gfx::MaybeIntSize& aScaleToSize, const wr::ImageRendering& aFilter, const wr::MixBlendMode& aMixBlendMode, bool aIsBackfaceVisible); void CreateImageClientIfNeeded(); - + void ClearCachedResources() override; protected: void CreateExternalImageIfNeeded(); wr::MaybeExternalImageId mExternalImageId; Maybe<wr::ImageKey> mKey; RefPtr<ImageClient> mImageClient; Maybe<wr::PipelineId> mPipelineId; RefPtr<ImageContainer> mContainer; @@ -155,17 +155,17 @@ public: explicit WebRenderCanvasData(WebRenderLayerManager* aWRManager, nsDisplayItem* aItem); virtual ~WebRenderCanvasData(); virtual WebRenderCanvasData* AsCanvasData() override { return this; } virtual UserDataType GetType() override { return UserDataType::eCanvas; } static UserDataType Type() { return UserDataType::eCanvas; } WebRenderCanvasRendererAsync* GetCanvasRenderer(); - + void ClearCachedResources() override; protected: UniquePtr<WebRenderCanvasRendererAsync> mCanvasRenderer; }; } // namespace layers } // namespace mozilla #endif /* GFX_WEBRENDERUSERDATA_H */
--- a/gfx/webrender_bindings/RenderD3D11TextureHostOGL.cpp +++ b/gfx/webrender_bindings/RenderD3D11TextureHostOGL.cpp @@ -60,16 +60,17 @@ RenderDXGITextureHostOGL::~RenderDXGITex void RenderDXGITextureHostOGL::SetGLContext(gl::GLContext* aContext) { if (mGL.get() != aContext) { // Release the texture handle in the previous gl context. DeleteTextureHandle(); mGL = aContext; + mGL->MakeCurrent(); } } bool RenderDXGITextureHostOGL::EnsureLockable() { if (mTextureHandle[0]) { return true; @@ -286,16 +287,17 @@ RenderDXGIYCbCrTextureHostOGL::~RenderDX void RenderDXGIYCbCrTextureHostOGL::SetGLContext(gl::GLContext* aContext) { if (mGL.get() != aContext) { // Release the texture handle in the previous gl context. DeleteTextureHandle(); mGL = aContext; + mGL->MakeCurrent(); } } bool RenderDXGIYCbCrTextureHostOGL::EnsureLockable() { if (mTextureHandles[0]) { return true;
--- a/gfx/webrender_bindings/RenderMacIOSurfaceTextureHostOGL.cpp +++ b/gfx/webrender_bindings/RenderMacIOSurfaceTextureHostOGL.cpp @@ -100,16 +100,17 @@ RenderMacIOSurfaceTextureHostOGL::Unlock void RenderMacIOSurfaceTextureHostOGL::SetGLContext(gl::GLContext* aContext) { if (mGL.get() != aContext) { // release the texture handle in the previous gl context DeleteTextureHandle(); mGL = aContext; + mGL->MakeCurrent(); } } void RenderMacIOSurfaceTextureHostOGL::DeleteTextureHandle() { if (mTextureHandles[0] != 0 && mGL && mGL->MakeCurrent()) { // Calling glDeleteTextures on 0 isn't an error. So, just make them a single
--- a/js/src/irregexp/RegExpParser.cpp +++ b/js/src/irregexp/RegExpParser.cpp @@ -323,16 +323,17 @@ template <typename CharT> void RegExpParser<CharT>::Advance() { if (next_pos_ < end_) { current_ = *next_pos_; next_pos_++; } else { current_ = kEndMarker; + next_pos_ = end_ + 1; has_more_ = false; } } // Returns the value (0 .. 15) of a hexadecimal character c. // If c is not a legal hexadecimal character, returns a value < 0. inline int HexValue(uint32_t c)
new file mode 100644 --- /dev/null +++ b/js/src/tests/test262/local/incomplete_hex_unicode_escape.js @@ -0,0 +1,20 @@ +// Copyright (C) 2015 Zirak. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: An incomplete HexEscape or UnicodeEscape should be treated as an Identity Escape +info: > + An incomplete HexEscape (e.g. /\x/) or UnicodeEscape (/\u/) should fall + through to IdentityEscape +esid: prod-AtomEscape +---*/ + +// Hex escape +assert(/\x/.test("x"), "/\\x/"); +assert(/\xa/.test("xa"), "/\\xa/"); + +// Unicode escape +assert(/\u/.test("u"), "/\\u/"); +assert(/\ua/.test("ua"), "/\\ua/"); + +reportCompare(0, 0);
--- a/js/xpconnect/idl/nsIXPCScriptable.idl +++ b/js/xpconnect/idl/nsIXPCScriptable.idl @@ -61,17 +61,17 @@ interface nsIXPConnectWrappedNative; * Note: This is not really an XPCOM interface. For example, callers must * guarantee that they set the *_retval of the various methods that return a * boolean to PR_TRUE before making the call. Implementations may skip writing * to *_retval unless they want to return PR_FALSE. */ [uuid(19b70b26-7c3f-437f-a04a-2a8f9e28b617)] interface nsIXPCScriptable : nsISupports { - readonly attribute string className; + readonly attribute AUTF8String className; [notxpcom,nostdcall] uint32_t getScriptableFlags(); [notxpcom,nostdcall] jsClassPtr getClass(); [notxpcom,nostdcall] JSClassPtr getJSClass(); void preCreate(in nsISupports nativeObj, in JSContextPtr cx, in JSObjectPtr globalObj, out JSObjectPtr parentObj); boolean enumerate(in nsIXPConnectWrappedNative wrapper,
--- a/js/xpconnect/public/xpc_map_end.h +++ b/js/xpconnect/public/xpc_map_end.h @@ -18,19 +18,19 @@ #ifndef XPC_MAP_FLAGS #error "Must #define XPC_MAP_FLAGS before #including xpc_map_end.h" #endif #include "js/Id.h" /**************************************************************/ -NS_IMETHODIMP XPC_MAP_CLASSNAME::GetClassName(char * *aClassName) +NS_IMETHODIMP XPC_MAP_CLASSNAME::GetClassName(nsACString& aClassName) { - *aClassName = moz_xstrdup(XPC_MAP_QUOTED_CLASSNAME); + aClassName.AssignLiteral(XPC_MAP_QUOTED_CLASSNAME); return NS_OK; } /**************************************************************/ // virtual uint32_t XPC_MAP_CLASSNAME::GetScriptableFlags()
--- a/js/xpconnect/src/XPCComponents.cpp +++ b/js/xpconnect/src/XPCComponents.cpp @@ -135,26 +135,26 @@ nsXPCComponents_Interfaces::GetInterface NS_IMETHODIMP nsXPCComponents_Interfaces::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_Interfaces::GetContractID(char * *aContractID) +nsXPCComponents_Interfaces::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_Interfaces::GetClassDescription(char * *aClassDescription) +nsXPCComponents_Interfaces::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_Interfaces"); + aClassDescription.AssignLiteral("XPCComponents_Interfaces"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_Interfaces::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -339,26 +339,27 @@ nsXPCComponents_InterfacesByID::GetInter NS_IMETHODIMP nsXPCComponents_InterfacesByID::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_InterfacesByID::GetContractID(char * *aContractID) +nsXPCComponents_InterfacesByID::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_InterfacesByID::GetClassDescription(char * *aClassDescription) +nsXPCComponents_InterfacesByID::GetClassDescription( + nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_InterfacesByID"); + aClassDescription.AssignLiteral("XPCComponents_InterfacesByID"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_InterfacesByID::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -545,26 +546,26 @@ nsXPCComponents_Classes::GetInterfaces(u NS_IMETHODIMP nsXPCComponents_Classes::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_Classes::GetContractID(char * *aContractID) +nsXPCComponents_Classes::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_Classes::GetClassDescription(char * *aClassDescription) +nsXPCComponents_Classes::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_Classes"); + aClassDescription.AssignLiteral("XPCComponents_Classes"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_Classes::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -739,26 +740,26 @@ nsXPCComponents_ClassesByID::GetInterfac NS_IMETHODIMP nsXPCComponents_ClassesByID::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_ClassesByID::GetContractID(char * *aContractID) +nsXPCComponents_ClassesByID::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_ClassesByID::GetClassDescription(char * *aClassDescription) +nsXPCComponents_ClassesByID::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_ClassesByID"); + aClassDescription.AssignLiteral("XPCComponents_ClassesByID"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_ClassesByID::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -948,26 +949,26 @@ nsXPCComponents_Results::GetInterfaces(u NS_IMETHODIMP nsXPCComponents_Results::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_Results::GetContractID(char * *aContractID) +nsXPCComponents_Results::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_Results::GetClassDescription(char * *aClassDescription) +nsXPCComponents_Results::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_Results"); + aClassDescription.AssignLiteral("XPCComponents_Results"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_Results::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -1117,26 +1118,26 @@ nsXPCComponents_ID::GetInterfaces(uint32 NS_IMETHODIMP nsXPCComponents_ID::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_ID::GetContractID(char * *aContractID) +nsXPCComponents_ID::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_ID::GetClassDescription(char * *aClassDescription) +nsXPCComponents_ID::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_ID"); + aClassDescription.AssignLiteral("XPCComponents_ID"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_ID::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -1293,26 +1294,26 @@ nsXPCComponents_Exception::GetInterfaces NS_IMETHODIMP nsXPCComponents_Exception::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_Exception::GetContractID(char * *aContractID) +nsXPCComponents_Exception::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_Exception::GetClassDescription(char * *aClassDescription) +nsXPCComponents_Exception::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_Exception"); + aClassDescription.AssignLiteral("XPCComponents_Exception"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_Exception::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -1636,26 +1637,26 @@ nsXPCConstructor::GetInterfaces(uint32_t NS_IMETHODIMP nsXPCConstructor::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCConstructor::GetContractID(char * *aContractID) +nsXPCConstructor::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCConstructor::GetClassDescription(char * *aClassDescription) +nsXPCConstructor::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCConstructor"); + aClassDescription.AssignLiteral("XPCConstructor"); return NS_OK; } NS_IMETHODIMP nsXPCConstructor::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK; @@ -1837,26 +1838,26 @@ nsXPCComponents_Constructor::GetInterfac NS_IMETHODIMP nsXPCComponents_Constructor::GetScriptableHelper(nsIXPCScriptable** retval) { *retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsXPCComponents_Constructor::GetContractID(char * *aContractID) +nsXPCComponents_Constructor::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -nsXPCComponents_Constructor::GetClassDescription(char * *aClassDescription) +nsXPCComponents_Constructor::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("XPCComponents_Constructor"); + aClassDescription.AssignLiteral("XPCComponents_Constructor"); return NS_OK; } NS_IMETHODIMP nsXPCComponents_Constructor::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK;
--- a/js/xpconnect/src/XPCRuntimeService.cpp +++ b/js/xpconnect/src/XPCRuntimeService.cpp @@ -93,26 +93,26 @@ NS_IMETHODIMP BackstagePass::GetScriptableHelper(nsIXPCScriptable** retval) { nsCOMPtr<nsIXPCScriptable> scriptable = this; scriptable.forget(retval); return NS_OK; } NS_IMETHODIMP -BackstagePass::GetContractID(char * *aContractID) +BackstagePass::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_AVAILABLE; } NS_IMETHODIMP -BackstagePass::GetClassDescription(char * *aClassDescription) +BackstagePass::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = moz_xstrdup("BackstagePass"); + aClassDescription.AssignLiteral("BackstagePass"); return NS_OK; } NS_IMETHODIMP BackstagePass::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK;
--- a/layout/generic/BlockReflowInput.cpp +++ b/layout/generic/BlockReflowInput.cpp @@ -711,16 +711,18 @@ FloatMarginISize(const ReflowInput& aCBR ConvertTo(cbwm, wm).ISize(cbwm) + aFloatOffsetState.ComputedLogicalBorderPadding().Size(wm). ConvertTo(cbwm, wm).ISize(cbwm); } bool BlockReflowInput::FlowAndPlaceFloat(nsIFrame* aFloat) { + MOZ_ASSERT(aFloat->GetParent() == mBlock); + WritingMode wm = mReflowInput.GetWritingMode(); // Save away the Y coordinate before placing the float. We will // restore mBCoord at the end after placing the float. This is // necessary because any adjustments to mBCoord during the float // placement are for the float only, not for any non-floating // content. AutoRestore<nscoord> restoreBCoord(mBCoord);
--- a/layout/generic/nsInlineFrame.cpp +++ b/layout/generic/nsInlineFrame.cpp @@ -323,18 +323,16 @@ nsInlineFrame::Reflow(nsPresContext* return; } if (IsFrameTreeTooDeep(aReflowInput, aMetrics, aStatus)) { return; } bool lazilySetParentPointer = false; - nsIFrame* lineContainer = aReflowInput.mLineLayout->LineContainerFrame(); - // Check for an overflow list with our prev-in-flow nsInlineFrame* prevInFlow = (nsInlineFrame*)GetPrevInFlow(); if (prevInFlow) { AutoFrameListPtr prevOverflowFrames(aPresContext, prevInFlow->StealOverflowFrames()); if (prevOverflowFrames) { // When pushing and pulling frames we need to check for whether any // views need to be reparented. @@ -350,22 +348,16 @@ nsInlineFrame::Reflow(nsPresContext* !GetNextInFlow()) { // If our child list is empty, just put the new frames into it. // Note that we don't set the parent pointer for the new frames. Instead wait // to do this until we actually reflow the frame. If the overflow list contains // thousands of frames this is a big performance issue (see bug #5588) mFrames.SetFrames(*prevOverflowFrames); lazilySetParentPointer = true; } else { - // Assign all floats to our block if necessary - if (lineContainer && lineContainer->GetPrevContinuation()) { - ReparentFloatsForInlineChild(lineContainer, - prevOverflowFrames->FirstChild(), - true); - } // Insert the new frames at the beginning of the child list // and set their parent pointer const nsFrameList::Slice& newFrames = mFrames.InsertFrames(this, nullptr, *prevOverflowFrames); // If our prev in flow was under the first continuation of a first-line // frame then we need to reparent the style contexts to remove the // the special first-line styling. In the lazilySetParentPointer case // we reparent the style contexts when we set their parents in @@ -389,24 +381,23 @@ nsInlineFrame::Reflow(nsPresContext* } #endif if (!(GetStateBits() & NS_FRAME_FIRST_REFLOW)) { DrainFlags flags = lazilySetParentPointer ? eDontReparentFrames : DrainFlags(0); if (aReflowInput.mLineLayout->GetInFirstLine()) { flags = DrainFlags(flags | eInFirstLine); } - DrainSelfOverflowListInternal(flags, lineContainer); + DrainSelfOverflowListInternal(flags); } - // Set our own reflow state (additional state above and beyond - // aReflowInput) + // Set our own reflow state (additional state above and beyond aReflowInput). InlineReflowInput irs; irs.mPrevFrame = nullptr; - irs.mLineContainer = lineContainer; + irs.mLineContainer = aReflowInput.mLineLayout->LineContainerFrame(); irs.mLineLayout = aReflowInput.mLineLayout; irs.mNextInFlow = (nsInlineFrame*) GetNextInFlow(); irs.mSetParentPointer = lazilySetParentPointer; if (mFrames.IsEmpty()) { // Try to pull over one frame before starting so that we know // whether we have an anonymous block or not. bool complete; @@ -441,29 +432,25 @@ nsInlineFrame::AttributeChanged(int32_t f->HandleAttributeChangeInDescendant(mContent->AsElement(), aNameSpaceID, aAttribute); } return NS_OK; } bool -nsInlineFrame::DrainSelfOverflowListInternal(DrainFlags aFlags, - nsIFrame* aLineContainer) +nsInlineFrame::DrainSelfOverflowListInternal(DrainFlags aFlags) { AutoFrameListPtr overflowFrames(PresContext(), StealOverflowFrames()); if (overflowFrames) { // The frames on our own overflowlist may have been pushed by a // previous lazilySetParentPointer Reflow so we need to ensure the // correct parent pointer. This is sometimes skipped by Reflow. if (!(aFlags & eDontReparentFrames)) { nsIFrame* firstChild = overflowFrames->FirstChild(); - if (aLineContainer && aLineContainer->GetPrevContinuation()) { - ReparentFloatsForInlineChild(aLineContainer, firstChild, true); - } const bool doReparentSC = (aFlags & eInFirstLine); RestyleManager* restyleManager = PresContext()->RestyleManager(); for (nsIFrame* f = firstChild; f; f = f->GetNextSibling()) { f->SetParent(this); if (doReparentSC) { restyleManager->ReparentStyleContext(f); nsLayoutUtils::MarkDescendantsDirty(f); } @@ -484,17 +471,17 @@ nsInlineFrame::DrainSelfOverflowList() // No need to look further than the nearest line container though. DrainFlags flags = DrainFlags(0); for (nsIFrame* p = GetParent(); p != lineContainer; p = p->GetParent()) { if (p->IsLineFrame()) { flags = DrainFlags(flags | eInFirstLine); break; } } - return DrainSelfOverflowListInternal(flags, lineContainer); + return DrainSelfOverflowListInternal(flags); } /* virtual */ bool nsInlineFrame::CanContinueTextRun() const { // We can continue a text run through an inline frame return true; } @@ -553,33 +540,18 @@ nsInlineFrame::ReflowFrames(nsPresContex startEdge + availableISize, &mBaseline); // First reflow our principal children. nsIFrame* frame = mFrames.FirstChild(); bool done = false; while (frame) { // Check if we should lazily set the child frame's parent pointer. if (irs.mSetParentPointer) { - bool havePrevBlock = - irs.mLineContainer && irs.mLineContainer->GetPrevContinuation(); nsIFrame* child = frame; do { - // If our block is the first in flow, then any floats under the pulled - // frame must already belong to our block. - if (havePrevBlock) { - // This has to happen before we update frame's parent; we need to - // know frame's ancestry under its old block. - // The blockChildren.ContainsFrame check performed by - // ReparentFloatsForInlineChild here may be slow, but we can't - // easily avoid it because we don't know where 'frame' originally - // came from. If we really really have to optimize this we could - // cache whether frame->GetParent() is under its containing blocks - // overflowList or not. - ReparentFloatsForInlineChild(irs.mLineContainer, child, false); - } child->SetParent(this); if (inFirstLine) { restyleManager->ReparentStyleContext(child); nsLayoutUtils::MarkDescendantsDirty(child); } // We also need to do the same for |frame|'s next-in-flows that are in // the sibling list. Otherwise, if we reflow |frame| and it's complete // we'll crash when trying to delete its next-in-flow. @@ -1096,44 +1068,36 @@ nsFirstLineFrame::Reflow(nsPresContext* { MarkInReflow(); MOZ_ASSERT(aStatus.IsEmpty(), "Caller should pass a fresh reflow status!"); if (nullptr == aReflowInput.mLineLayout) { return; // XXX does this happen? why? } - nsIFrame* lineContainer = aReflowInput.mLineLayout->LineContainerFrame(); - // Check for an overflow list with our prev-in-flow nsFirstLineFrame* prevInFlow = (nsFirstLineFrame*)GetPrevInFlow(); if (prevInFlow) { AutoFrameListPtr prevOverflowFrames(aPresContext, prevInFlow->StealOverflowFrames()); if (prevOverflowFrames) { - // Assign all floats to our block if necessary - if (lineContainer && lineContainer->GetPrevContinuation()) { - ReparentFloatsForInlineChild(lineContainer, - prevOverflowFrames->FirstChild(), - true); - } + // Reparent the new frames and their style contexts. const nsFrameList::Slice& newFrames = mFrames.InsertFrames(this, nullptr, *prevOverflowFrames); ReparentChildListStyle(aPresContext, newFrames, this); } } // It's also possible that we have an overflow list for ourselves. DrainSelfOverflowList(); - // Set our own reflow state (additional state above and beyond - // aReflowInput) + // Set our own reflow state (additional state above and beyond aReflowInput). InlineReflowInput irs; irs.mPrevFrame = nullptr; - irs.mLineContainer = lineContainer; + irs.mLineContainer = aReflowInput.mLineLayout->LineContainerFrame(); irs.mLineLayout = aReflowInput.mLineLayout; irs.mNextInFlow = (nsInlineFrame*) GetNextInFlow(); bool wasEmpty = mFrames.IsEmpty(); if (wasEmpty) { // Try to pull over one frame before starting so that we know // whether we have an anonymous block or not. bool complete;
--- a/layout/generic/nsInlineFrame.h +++ b/layout/generic/nsInlineFrame.h @@ -176,21 +176,19 @@ private: // (which we only do for nsInlineFrame, not nsFirstLineFrame). enum DrainFlags { eDontReparentFrames = 1, // skip reparenting the overflow list frames eInFirstLine = 2, // the request is for an inline descendant of a nsFirstLineFrame }; /** * Move any frames on our overflow list to the end of our principal list. * @param aFlags one or more of the above DrainFlags - * @param aLineContainer the nearest line container ancestor * @return true if there were any overflow frames */ - bool DrainSelfOverflowListInternal(DrainFlags aFlags, - nsIFrame* aLineContainer); + bool DrainSelfOverflowListInternal(DrainFlags aFlags); protected: nscoord mBaseline; }; //---------------------------------------------------------------------- /** * Variation on inline-frame used to manage lines for line layout in
--- a/media/audioipc/audioipc/Cargo.toml +++ b/media/audioipc/audioipc/Cargo.toml @@ -6,16 +6,19 @@ authors = [ "Dan Glastonbury <dan.glastonbury@gmail.com>" ] description = "Remote Cubeb IPC" [dependencies] cubeb-core = { path = "../../cubeb-rs/cubeb-core" } bincode = "0.8" bytes = "0.4" -error-chain = "0.10.0" libc = "0.2" log = "^0.3.6" memmap = "0.5.2" mio = "0.6.7" mio-uds = "0.6.4" serde = "1.*.*" serde_derive = "1.*.*" + +[dependencies.error-chain] +version = "0.10.0" +default-features = false
--- a/media/audioipc/client/src/context.rs +++ b/media/audioipc/client/src/context.rs @@ -39,21 +39,26 @@ impl ClientContext { self.connection.lock().unwrap() } } impl Context for ClientContext { fn init(_context_name: Option<&CStr>) -> Result<*mut ffi::cubeb> { assert_not_in_callback(); // TODO: encapsulate connect, etc inside audioipc. + // TODO: explicit setup of connection so we don't have to guess the + // path. For now, we try our parent, ourself, and the default path. let ppid = unsafe { libc::getppid() }; - let path = audioipc::get_uds_path(ppid as u64); - let stream = match UnixStream::connect(path) { + let pid = unsafe { libc::getpid() }; + let stream = match UnixStream::connect(audioipc::get_uds_path(ppid as u64)) { Ok(stream) => stream, - _ => t!(UnixStream::connect(audioipc::get_uds_path(1))) + _ => match UnixStream::connect(audioipc::get_uds_path(pid as u64)) { + Ok(stream) => stream, + _ => t!(UnixStream::connect(audioipc::get_uds_path(1))) + } }; let ctx = Box::new(ClientContext { _ops: &CLIENT_OPS as *const _, connection: Mutex::new(Connection::new(stream)) }); Ok(Box::into_raw(ctx) as *mut _) }
--- a/media/audioipc/server/Cargo.toml +++ b/media/audioipc/server/Cargo.toml @@ -4,16 +4,18 @@ version = "0.1.0" authors = ["Dan Glastonbury <dan.glastonbury@gmail.com>"] description = "Remote cubeb server" [dependencies] audioipc = { path = "../audioipc" } cubeb-core = { path = "../../cubeb-rs/cubeb-core" } cubeb = { path = "../../cubeb-rs/cubeb-api" } bytes = "0.4" -error-chain = "0.10.0" lazycell = "^0.4" libc = "0.2" log = "^0.3.6" mio = "0.6.7" mio-uds = "0.6.4" slab = "0.3.0" +[dependencies.error-chain] +version = "0.10.0" +default-features = false
--- a/modules/libjar/nsJARURI.cpp +++ b/modules/libjar/nsJARURI.cpp @@ -167,26 +167,26 @@ nsJARURI::GetInterfaces(uint32_t *count, NS_IMETHODIMP nsJARURI::GetScriptableHelper(nsIXPCScriptable **_retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsJARURI::GetContractID(char * *aContractID) +nsJARURI::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsJARURI::GetClassDescription(char * *aClassDescription) +nsJARURI::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsJARURI::GetClassID(nsCID * *aClassID) { *aClassID = (nsCID*) moz_xmalloc(sizeof(nsCID)); if (!*aClassID)
--- a/modules/libpref/Preferences.cpp +++ b/modules/libpref/Preferences.cpp @@ -2258,35 +2258,29 @@ private: bool mIsDefault; bool mFreeingObserverList; nsClassHashtable<PrefCallback, PrefCallback> mObservers; }; class nsPrefLocalizedString final : public nsIPrefLocalizedString - , public nsISupportsString { public: nsPrefLocalizedString(); NS_DECL_ISUPPORTS + NS_FORWARD_NSISUPPORTSPRIMITIVE(mUnicodeString->) NS_FORWARD_NSISUPPORTSSTRING(mUnicodeString->) - NS_FORWARD_NSISUPPORTSPRIMITIVE(mUnicodeString->) nsresult Init(); private: virtual ~nsPrefLocalizedString(); - NS_IMETHOD GetData(char16_t**) override; - NS_IMETHOD SetData(const char16_t* aData) override; - NS_IMETHOD SetDataWithLength(uint32_t aLength, - const char16_t* aData) override; - nsCOMPtr<nsISupportsString> mUnicodeString; }; class nsRelativeFilePref : public nsIRelativeFilePref { public: NS_DECL_ISUPPORTS NS_DECL_NSIRELATIVEFILEPREF @@ -2584,22 +2578,22 @@ nsPrefBranch::GetComplexValue(const char } // if we need to fetch the default value, do that instead, otherwise use the // value we pulled in at the top of this function if (bNeedDefault) { nsAutoString utf16String; rv = GetDefaultFromPropertiesFile(pref.get(), utf16String); if (NS_SUCCEEDED(rv)) { - theString->SetData(utf16String.get()); + theString->SetData(utf16String); } } else { rv = GetCharPref(aPrefName, getter_Copies(utf8String)); if (NS_SUCCEEDED(rv)) { - theString->SetData(NS_ConvertUTF8toUTF16(utf8String).get()); + theString->SetData(NS_ConvertUTF8toUTF16(utf8String)); } } if (NS_SUCCEEDED(rv)) { theString.forget(reinterpret_cast<nsIPrefLocalizedString**>(aRetVal)); } return rv; @@ -2848,17 +2842,18 @@ nsPrefBranch::SetComplexValue(const char nsAutoCString descriptorString; descriptorString.Append('['); descriptorString.Append(relativeToKey); descriptorString.Append(']'); descriptorString.Append(relDescriptor); return SetCharPrefInternal(aPrefName, descriptorString.get()); } - if (aType.Equals(NS_GET_IID(nsISupportsString))) { + if (aType.Equals(NS_GET_IID(nsISupportsString)) || + aType.Equals(NS_GET_IID(nsIPrefLocalizedString))) { nsCOMPtr<nsISupportsString> theString = do_QueryInterface(aValue); if (theString) { nsString wideString; rv = theString->GetData(wideString); if (NS_SUCCEEDED(rv)) { // Check sanity of string length before any lengthy conversion @@ -2868,35 +2863,16 @@ nsPrefBranch::SetComplexValue(const char } rv = SetCharPrefInternal(aPrefName, NS_ConvertUTF16toUTF8(wideString).get()); } } return rv; } - if (aType.Equals(NS_GET_IID(nsIPrefLocalizedString))) { - nsCOMPtr<nsIPrefLocalizedString> theString = do_QueryInterface(aValue); - - if (theString) { - nsString wideString; - rv = theString->GetData(getter_Copies(wideString)); - if (NS_SUCCEEDED(rv)) { - // Check sanity of string length before any lengthy conversion - rv = CheckSanityOfStringLength(aPrefName, wideString); - if (NS_FAILED(rv)) { - return rv; - } - rv = SetCharPrefInternal(aPrefName, - NS_ConvertUTF16toUTF8(wideString).get()); - } - } - return rv; - } - NS_WARNING("nsPrefBranch::SetComplexValue - Unsupported interface type"); return NS_NOINTERFACE; } NS_IMETHODIMP nsPrefBranch::ClearUserPref(const char* aPrefName) { ENSURE_MAIN_PROCESS("ClearUserPref", aPrefName); @@ -3238,53 +3214,16 @@ nsresult nsPrefLocalizedString::Init() { nsresult rv; mUnicodeString = do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID, &rv); return rv; } -NS_IMETHODIMP -nsPrefLocalizedString::GetData(char16_t** aRetVal) -{ - nsAutoString data; - - nsresult rv = GetData(data); - if (NS_FAILED(rv)) { - return rv; - } - - *aRetVal = ToNewUnicode(data); - if (!*aRetVal) { - return NS_ERROR_OUT_OF_MEMORY; - } - - return NS_OK; -} - -NS_IMETHODIMP -nsPrefLocalizedString::SetData(const char16_t* aData) -{ - if (!aData) { - return SetData(EmptyString()); - } - return SetData(nsDependentString(aData)); -} - -NS_IMETHODIMP -nsPrefLocalizedString::SetDataWithLength(uint32_t aLength, - const char16_t* aData) -{ - if (!aData) { - return SetData(EmptyString()); - } - return SetData(Substring(aData, aLength)); -} - //---------------------------------------------------------------------------- // nsRelativeFilePref //---------------------------------------------------------------------------- NS_IMPL_ISUPPORTS(nsRelativeFilePref, nsIRelativeFilePref) nsRelativeFilePref::nsRelativeFilePref() = default; @@ -5025,17 +4964,17 @@ Preferences::GetLocalizedCString(const c Preferences::GetLocalizedString(const char* aPref, nsAString& aResult) { NS_ENSURE_TRUE(InitStaticMembers(), NS_ERROR_NOT_AVAILABLE); nsCOMPtr<nsIPrefLocalizedString> prefLocalString; nsresult rv = sRootBranch->GetComplexValue( aPref, NS_GET_IID(nsIPrefLocalizedString), getter_AddRefs(prefLocalString)); if (NS_SUCCEEDED(rv)) { NS_ASSERTION(prefLocalString, "Succeeded but the result is NULL"); - prefLocalString->GetData(getter_Copies(aResult)); + prefLocalString->GetData(aResult); } return rv; } /* static */ nsresult Preferences::GetComplex(const char* aPref, const nsIID& aType, void** aResult) { NS_ENSURE_TRUE(InitStaticMembers(), NS_ERROR_NOT_AVAILABLE); @@ -5505,17 +5444,17 @@ Preferences::GetDefaultLocalizedCString( Preferences::GetDefaultLocalizedString(const char* aPref, nsAString& aResult) { NS_ENSURE_TRUE(InitStaticMembers(), NS_ERROR_NOT_AVAILABLE); nsCOMPtr<nsIPrefLocalizedString> prefLocalString; nsresult rv = sDefaultRootBranch->GetComplexValue( aPref, NS_GET_IID(nsIPrefLocalizedString), getter_AddRefs(prefLocalString)); if (NS_SUCCEEDED(rv)) { NS_ASSERTION(prefLocalString, "Succeeded but the result is NULL"); - prefLocalString->GetData(getter_Copies(aResult)); + prefLocalString->GetData(aResult); } return rv; } /* static */ nsresult Preferences::GetDefaultComplex(const char* aPref, const nsIID& aType, void** aResult)
--- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -635,16 +635,21 @@ pref("media.decoder.recycle.enabled", fa //Weather MFR should try to skip to next key frame or not. pref("media.decoder.skip-to-next-key-frame.enabled", true); // Log level for cubeb, the audio input/output system. Valid values are // "verbose", "normal" and "" (log disabled). pref("media.cubeb.logging_level", ""); +#ifdef NIGHTLY_BUILD +// Cubeb sandbox (remoting) control +pref("media.cubeb.sandbox", true); +#endif + // Set to true to force demux/decode warnings to be treated as errors. pref("media.playback.warnings-as-errors", false); // Weather we allow AMD switchable graphics pref("layers.amd-switchable-gfx.enabled", true); // Whether to use async panning and zooming pref("layers.async-pan-zoom.enabled", true);
--- a/modules/libpref/nsIPrefLocalizedString.idl +++ b/modules/libpref/nsIPrefLocalizedString.idl @@ -1,58 +1,28 @@ /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" +#include "nsISupportsPrimitives.idl" /** * The nsIPrefLocalizedString interface is simply a wrapper interface for * nsISupportsString so the preferences service can have a unique identifier * to distinguish between requests for normal wide strings (nsISupportsString) * and "localized" wide strings, which get their default values from properites * files. * * @see nsIPrefBranch * @see nsISupportsString */ - [scriptable, uuid(ae419e24-1dd1-11b2-b39a-d3e5e7073802)] -interface nsIPrefLocalizedString : nsISupports -{ - /** - * Provides access to string data stored in this property. - * - * @throws Error An error occurred. - */ - attribute wstring data; - - /** - * Used to retrieve the contents of this object into a wide string. - * - * @return wstring The string containing the data stored within this object. - */ - wstring toString(); - - /** - * Used to set the contents of this object. - * - * @param length The length of the string. This value should not include - * space for the null terminator, nor should it account for the - * size of a character. It should only be the number of - * characters for which there is space in the string. - * @param data The string data to be stored. - * - * @note - * This makes a copy of the string argument passed in. - */ - void setDataWithLength(in unsigned long length, - [size_is(length)] in wstring data); -}; +interface nsIPrefLocalizedString : nsISupportsString {}; %{C++ #define NS_PREFLOCALIZEDSTRING_CID \ { /* {064d9cee-1dd2-11b2-83e3-d25ab0193c26} */ \ 0x064d9cee, \ 0x1dd2, \ 0x11b2, \
--- a/netwerk/base/RustURL.cpp +++ b/netwerk/base/RustURL.cpp @@ -676,26 +676,26 @@ RustURL::GetInterfaces(uint32_t *count, NS_IMETHODIMP RustURL::GetScriptableHelper(nsIXPCScriptable * *_retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -RustURL::GetContractID(char * *aContractID) +RustURL::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -RustURL::GetClassDescription(char * *aClassDescription) +RustURL::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP RustURL::GetClassID(nsCID **aClassID) { return NS_ERROR_NOT_IMPLEMENTED; }
--- a/netwerk/base/nsSimpleURI.cpp +++ b/netwerk/base/nsSimpleURI.cpp @@ -739,28 +739,28 @@ nsSimpleURI::GetInterfaces(uint32_t *cou NS_IMETHODIMP nsSimpleURI::GetScriptableHelper(nsIXPCScriptable **_retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsSimpleURI::GetContractID(char * *aContractID) +nsSimpleURI::GetContractID(nsACString& aContractID) { // Make sure to modify any subclasses as needed if this ever // changes. - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsSimpleURI::GetClassDescription(char * *aClassDescription) +nsSimpleURI::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsSimpleURI::GetClassID(nsCID * *aClassID) { // Make sure to modify any subclasses as needed if this ever // changes to not call the virtual GetClassIDNoAlloc.
--- a/netwerk/base/nsSocketTransport2.cpp +++ b/netwerk/base/nsSocketTransport2.cpp @@ -2966,26 +2966,26 @@ nsSocketTransport::GetInterfaces(uint32_ NS_IMETHODIMP nsSocketTransport::GetScriptableHelper(nsIXPCScriptable **_retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsSocketTransport::GetContractID(char * *aContractID) +nsSocketTransport::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsSocketTransport::GetClassDescription(char * *aClassDescription) +nsSocketTransport::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsSocketTransport::GetClassID(nsCID * *aClassID) { *aClassID = nullptr; return NS_OK;
--- a/netwerk/base/nsStandardURL.cpp +++ b/netwerk/base/nsStandardURL.cpp @@ -3833,26 +3833,26 @@ nsStandardURL::GetInterfaces(uint32_t *c NS_IMETHODIMP nsStandardURL::GetScriptableHelper(nsIXPCScriptable **_retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsStandardURL::GetContractID(char * *aContractID) +nsStandardURL::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsStandardURL::GetClassDescription(char * *aClassDescription) +nsStandardURL::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsStandardURL::GetClassID(nsCID * *aClassID) { *aClassID = (nsCID*) moz_xmalloc(sizeof(nsCID)); if (!*aClassID)
--- a/security/manager/ssl/TransportSecurityInfo.cpp +++ b/security/manager/ssl/TransportSecurityInfo.cpp @@ -427,26 +427,26 @@ TransportSecurityInfo::GetInterfaces(uin NS_IMETHODIMP TransportSecurityInfo::GetScriptableHelper(nsIXPCScriptable **_retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -TransportSecurityInfo::GetContractID(char * *aContractID) +TransportSecurityInfo::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -TransportSecurityInfo::GetClassDescription(char * *aClassDescription) +TransportSecurityInfo::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP TransportSecurityInfo::GetClassID(nsCID * *aClassID) { *aClassID = (nsCID*) moz_xmalloc(sizeof(nsCID)); if (!*aClassID)
--- a/security/manager/ssl/nsNSSCertificate.cpp +++ b/security/manager/ssl/nsNSSCertificate.cpp @@ -1533,26 +1533,26 @@ nsNSSCertificate::GetInterfaces(uint32_t NS_IMETHODIMP nsNSSCertificate::GetScriptableHelper(nsIXPCScriptable** _retval) { *_retval = nullptr; return NS_OK; } NS_IMETHODIMP -nsNSSCertificate::GetContractID(char** aContractID) +nsNSSCertificate::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsNSSCertificate::GetClassDescription(char** aClassDescription) +nsNSSCertificate::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsNSSCertificate::GetClassID(nsCID** aClassID) { *aClassID = (nsCID*) moz_xmalloc(sizeof(nsCID)); if (!*aClassID)
--- a/security/manager/ssl/nsSSLStatus.cpp +++ b/security/manager/ssl/nsSSLStatus.cpp @@ -289,26 +289,26 @@ nsSSLStatus::GetInterfaces(uint32_t* aCo NS_IMETHODIMP nsSSLStatus::GetScriptableHelper(nsIXPCScriptable** aHelper) { *aHelper = nullptr; return NS_OK; } NS_IMETHODIMP -nsSSLStatus::GetContractID(char** aContractID) +nsSSLStatus::GetContractID(nsACString& aContractID) { - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsSSLStatus::GetClassDescription(char** aClassDescription) +nsSSLStatus::GetClassDescription(nsACString& aClassDescription) { - *aClassDescription = nullptr; + aClassDescription.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsSSLStatus::GetClassID(nsCID** aClassID) { *aClassID = (nsCID*) moz_xmalloc(sizeof(nsCID)); if (!*aClassID) {
--- a/storage/mozStorageAsyncStatement.cpp +++ b/storage/mozStorageAsyncStatement.cpp @@ -58,26 +58,26 @@ public: GetScriptableHelper(nsIXPCScriptable **_helper) override { static AsyncStatementJSHelper sJSHelper; *_helper = &sJSHelper; return NS_OK; } NS_IMETHOD - GetContractID(char **_contractID) override + GetContractID(nsACString& aContractID) override { - *_contractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHOD - GetClassDescription(char **_desc) override + GetClassDescription(nsACString& aDesc) override { - *_desc = nullptr; + aDesc.SetIsVoid(true); return NS_OK; } NS_IMETHOD GetClassID(nsCID **_id) override { *_id = nullptr; return NS_OK;
--- a/storage/mozStorageStatement.cpp +++ b/storage/mozStorageStatement.cpp @@ -61,26 +61,26 @@ public: GetScriptableHelper(nsIXPCScriptable **_helper) override { static StatementJSHelper sJSHelper; *_helper = &sJSHelper; return NS_OK; } NS_IMETHOD - GetContractID(char **_contractID) override + GetContractID(nsACString& aContractID) override { - *_contractID = nullptr; + aContractID.SetIsVoid(true); return NS_OK; } NS_IMETHOD - GetClassDescription(char **_desc) override + GetClassDescription(nsACString& aDesc) override { - *_desc = nullptr; + aDesc.SetIsVoid(true); return NS_OK; } NS_IMETHOD GetClassID(nsCID **_id) override { *_id = nullptr; return NS_OK;
--- a/testing/web-platform/meta/dom/interfaces.html.ini +++ b/testing/web-platform/meta/dom/interfaces.html.ini @@ -1,10 +1,11 @@ [interfaces.html] type: testharness + prefs: [dom.webcomponents.enabled:true] [Document interface: attribute origin] expected: FAIL bug: 931884 [Document interface: xmlDoc must inherit property "origin" with the proper type (3)] expected: FAIL bug: 931884 @@ -19,34 +20,28 @@ expected: FAIL [Element interface: attribute slot] expected: FAIL [Element interface: operation attachShadow(ShadowRootInit)] expected: FAIL - [Element interface: attribute assignedSlot] - expected: FAIL - [Element interface: element must inherit property "slot" with the proper type (7)] expected: FAIL [Element interface: element must inherit property "attachShadow" with the proper type (24)] expected: FAIL [Element interface: calling attachShadow(ShadowRootInit) on element with too few arguments must throw TypeError] expected: FAIL [Element interface: element must inherit property "assignedSlot" with the proper type (48)] expected: FAIL - [Text interface: attribute assignedSlot] - expected: FAIL - [Text interface: document.createTextNode("abc") must inherit property "assignedSlot" with the proper type (2)] expected: FAIL [EventTarget must be primary interface of new EventTarget()] expected: FAIL [Stringification of new EventTarget()] expected: FAIL @@ -97,14 +92,8 @@ expected: FAIL [Element interface: element must inherit property "slot" with the proper type] expected: FAIL [Element interface: element must inherit property "attachShadow(ShadowRootInit)" with the proper type] expected: FAIL - [Element interface: element must inherit property "assignedSlot" with the proper type] - expected: FAIL - - [Text interface: document.createTextNode("abc") must inherit property "assignedSlot" with the proper type] - expected: FAIL -
--- a/testing/web-platform/meta/payment-request/interfaces.https.html.ini +++ b/testing/web-platform/meta/payment-request/interfaces.https.html.ini @@ -1,10 +1,11 @@ [interfaces.https.html] type: testharness + prefs: [dom.webcomponents.enabled:true] [PaymentRequest interface: existence and properties of interface object] expected: FAIL [PaymentRequest interface object length] expected: FAIL [PaymentRequest interface object name] expected: FAIL @@ -271,22 +272,16 @@ expected: FAIL [Element interface: attribute slot] expected: FAIL [Element interface: operation attachShadow(ShadowRootInit)] expected: FAIL - [Element interface: attribute assignedSlot] - expected: FAIL - - [Text interface: attribute assignedSlot] - expected: FAIL - [PaymentRequest must be primary interface of new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} })] expected: FAIL [Stringification of new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} })] expected: FAIL [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "show()" with the proper type] expected: FAIL
--- a/testing/web-platform/meta/shadow-dom/Slotable-interface.html.ini +++ b/testing/web-platform/meta/shadow-dom/Slotable-interface.html.ini @@ -1,13 +1,11 @@ [Slotable-interface.html] type: testharness - [assignedSlot attribute must be defined on Element and Text interfaces] - expected: FAIL - + prefs: [dom.webcomponents.enabled:true] [assignedSlot must return null when the node does not have an assigned node] expected: FAIL [assignedSlot must return the assigned slot] expected: FAIL [assignedSlot must return null when the assigned slot element is inside a closed shadow tree] expected: FAIL
--- a/toolkit/content/browser-content.js +++ b/toolkit/content/browser-content.js @@ -1785,16 +1785,24 @@ let DateTimePickerListener = { handleEvent(aEvent) { switch (aEvent.type) { case "MozOpenDateTimePicker": { // Time picker is disabled when preffed off if (!(aEvent.originalTarget instanceof content.HTMLInputElement) || (aEvent.originalTarget.type == "time" && !this.getTimePickerPref())) { return; } + + if (this._inputElement) { + // This happens when we're trying to open a picker when another picker + // is still open. We ignore this request to let the first picker + // close gracefully. + return; + } + this._inputElement = aEvent.originalTarget; this._inputElement.setDateTimePickerState(true); this.addListeners(); let value = this._inputElement.getDateTimeInputBoxValue(); sendAsyncMessage("FormDateTime:OpenPicker", { rect: this.getBoundingContentRect(this._inputElement), dir: this.getComputedDirection(this._inputElement),
--- a/toolkit/library/gtest/rust/Cargo.lock +++ b/toolkit/library/gtest/rust/Cargo.lock @@ -104,39 +104,16 @@ dependencies = [ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "backtrace" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "binary-space-partition" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bincode" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -404,25 +381,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "darling_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "dbghelp-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "dtoa" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "dtoa-short" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -483,19 +451,16 @@ dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "error-chain" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "euclid" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -551,21 +516,16 @@ dependencies = [ name = "gamma-lut" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "gcc" -version = "0.3.51" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "gdi32-sys" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1168,21 +1128,16 @@ version = "0.0.1" dependencies = [ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", "nserror 0.1.0", "nsstring 0.1.0", "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rustc-demangle" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "rustc-serialize" version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "same-file" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1679,18 +1634,16 @@ dependencies = [ [metadata] "checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ed0a4de09a3b8449515e649f3bb84f72ea15fc2d10639beb0776a09b7d308074" "checksum arrayvec 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "699e63a93b79d717e8c3b5eb1b28b7780d0d6d9e59a72eb769291c83b0c8dc67" "checksum aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfdf7355d9db158df68f976ed030ab0f6578af811f5a7bb6dcf221ec24e0e0" "checksum atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2dcb6e6d35f20276943cc04bb98e538b348d525a04ac79c10021561d202f21" "checksum atty 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d912da0db7fa85514874458ca3651fe2cddace8d0b0505571dbdcd41ab490159" -"checksum backtrace 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72f9b4182546f4b04ebc4ab7f84948953a118bd6021a1b6a6c909e3e94f6be76" -"checksum backtrace-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d192fd129132fbc97497c1f2ec2c2c5174e376b95f535199ef4fe0a293d33842" "checksum binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88ceb0d16c4fd0e42876e298d7d3ce3780dd9ebdcbe4199816a32c77e08597ff" "checksum bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e103c8b299b28a9c6990458b7013dc4a8356a9b854c51b9883241f5866fac36e" "checksum bincode 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3fb369af639822830328794eba2501b3479652fcd021b2aeb1ed4984202afd" "checksum bindgen 0.29.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ba610cba0c1727ed837316540068b51349b8268c073906067b7c3948598929bd" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1370e9fc2a6ae53aea8b7a5110edbd08836ed87c88736dfabccade1c2b44bff4" "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" "checksum bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5cde24d1b2e2216a726368b2363a273739c91f4e3eb4e0dd12d672d396ad989" @@ -1708,33 +1661,31 @@ dependencies = [ "checksum core-foundation-sys 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387" "checksum core-graphics 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2fd47addfc77b7e574d24e5434f95bb64a863769dfd4f1d451ca4ff5530ba01a" "checksum core-text 7.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2a23bef779fab70e5e6af23e36eed03a48e1c1687dea8929505d405ea48d1f5e" "checksum cssparser 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44313341610282488e1156ad1fedebca51c54766c87a041d0287b10499c04ba1" "checksum cssparser-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "079adec4af52bb5275eadd004292028c79eb3c5f5b4ee8086a36d4197032f6df" "checksum darling 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9861a8495606435477df581bc858ccf15a3469747edf175b94a4704fd9aaedac" "checksum darling_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1486a8b00b45062c997f767738178b43219133dd0c8c826cb811e60563810821" "checksum darling_macro 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a86ec160aa0c3dd492dd4a14ec8104ad8f1a9400a820624db857998cc1f80f9" -"checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" "checksum dtoa-short 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "068d4026697c1a18f0b0bb8cfcad1b0c151b90d8edb9bf4c235ad68128920d1d" "checksum dwrote 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "36e3b27cd0b8a68e00f07e8d8e1e4f4d8a6b8b873290a734f63bd56d792d23e1" "checksum either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18785c1ba806c258137c937e44ada9ee7e69a37e3c72077542cd2f069d78562a" "checksum encoding_c 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "93ec52324ca72f423237a413ca0e1c60654c8b3d0934fcd5fd888508dfcc4ba7" "checksum encoding_rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5215aabf22b83153be3ee44dfe3f940214541b2ce13d419c55e7a115c8c51a9" "checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" "checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8" "checksum euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "50c9e4c3b53de731815135191f0b77969bea953211b8bbd3cc3083a7b10e190e" "checksum fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344" "checksum freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "398b8a11884898184d55aca9806f002b3cf68f0e860e0cbb4586f834ee39b0e7" "checksum fs2 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866" "checksum futures 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "55f0008e13fc853f79ea8fc86e931486860d4c4c156cdffb59fa5f7fa833660a" "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" "checksum gamma-lut 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dd65074503368cef99b98844012adfed8d7f99ff3e1e6d05e9055232f2d59dc9" -"checksum gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)" = "120d07f202dcc3f72859422563522b66fe6463a4c513df062874daad05f85f0a" "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" "checksum gl_generator 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0940975a4ca12b088d32b5d5134826c47d2e73de4b0b459b05244c01503eccbb" "checksum gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "bf887141f0c2a83eae026cbf3fba74f0a5cb0f01d20e5cdfcd8c4ad39295be1e" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4c7593b1522161003928c959c20a2ca421c68e940d63d75573316a009e48a6d4" "checksum ident_case 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c9826188e666f2ed92071d2dadef6edc430b11b158b5b2b3f4babbcc891eaaa" "checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d" "checksum iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29d062ee61fccdf25be172e70f34c9f6efc597e1fb8f6526e8437b2046ab26be" @@ -1781,17 +1732,16 @@ dependencies = [ "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon-core 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2c21a92a5dca958fb030787c1158446c6deb7f976399b72fa8074603f169e2a" "checksum redox_syscall 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd35cc9a8bdec562c757e3d43c1526b5c6d2653e23e2315065bc25556550753" "checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b" "checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" "checksum runloop 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d79b4b604167921892e84afbbaad9d5ad74e091bf6c511d9dbfb0593f09fabd" -"checksum rustc-demangle 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3058a43ada2c2d0b92b3ae38007a2d0fa5e9db971be260e0171408a4ff471c95" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum same-file 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7" "checksum scopeguard 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c79eb2c3ac4bc2507cda80e7f3ac5b88bd8eae4c0914d5663e6a8933994be918" "checksum semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f530d36fb84ec48fb7146936881f026cdbf4892028835fd9398475f82c1bb4" "checksum serde_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "10552fad5500771f3902d0c5ba187c5881942b811b7ba0d8fbbfbf84d80806d3" "checksum serde_derive_internals 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37aee4e0da52d801acfbc0cc219eb1eda7142112339726e427926a6f6ee65d3a"
--- a/toolkit/library/rust/Cargo.lock +++ b/toolkit/library/rust/Cargo.lock @@ -103,39 +103,16 @@ dependencies = [ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "backtrace" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "binary-space-partition" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bincode" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -403,25 +380,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "darling_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "dbghelp-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "dtoa" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "dtoa-short" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -482,19 +450,16 @@ dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "error-chain" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "euclid" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -550,21 +515,16 @@ dependencies = [ name = "gamma-lut" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "gcc" -version = "0.3.51" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "gdi32-sys" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1156,21 +1116,16 @@ version = "0.0.1" dependencies = [ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", "nserror 0.1.0", "nsstring 0.1.0", "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rustc-demangle" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "rustc-serialize" version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "same-file" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1691,18 +1646,16 @@ dependencies = [ [metadata] "checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ed0a4de09a3b8449515e649f3bb84f72ea15fc2d10639beb0776a09b7d308074" "checksum arrayvec 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "699e63a93b79d717e8c3b5eb1b28b7780d0d6d9e59a72eb769291c83b0c8dc67" "checksum aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfdf7355d9db158df68f976ed030ab0f6578af811f5a7bb6dcf221ec24e0e0" "checksum atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2dcb6e6d35f20276943cc04bb98e538b348d525a04ac79c10021561d202f21" "checksum atty 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d912da0db7fa85514874458ca3651fe2cddace8d0b0505571dbdcd41ab490159" -"checksum backtrace 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72f9b4182546f4b04ebc4ab7f84948953a118bd6021a1b6a6c909e3e94f6be76" -"checksum backtrace-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d192fd129132fbc97497c1f2ec2c2c5174e376b95f535199ef4fe0a293d33842" "checksum binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88ceb0d16c4fd0e42876e298d7d3ce3780dd9ebdcbe4199816a32c77e08597ff" "checksum bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e103c8b299b28a9c6990458b7013dc4a8356a9b854c51b9883241f5866fac36e" "checksum bincode 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3fb369af639822830328794eba2501b3479652fcd021b2aeb1ed4984202afd" "checksum bindgen 0.29.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ba610cba0c1727ed837316540068b51349b8268c073906067b7c3948598929bd" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1370e9fc2a6ae53aea8b7a5110edbd08836ed87c88736dfabccade1c2b44bff4" "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" "checksum bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5cde24d1b2e2216a726368b2363a273739c91f4e3eb4e0dd12d672d396ad989" @@ -1720,33 +1673,31 @@ dependencies = [ "checksum core-foundation-sys 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387" "checksum core-graphics 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2fd47addfc77b7e574d24e5434f95bb64a863769dfd4f1d451ca4ff5530ba01a" "checksum core-text 7.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2a23bef779fab70e5e6af23e36eed03a48e1c1687dea8929505d405ea48d1f5e" "checksum cssparser 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44313341610282488e1156ad1fedebca51c54766c87a041d0287b10499c04ba1" "checksum cssparser-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "079adec4af52bb5275eadd004292028c79eb3c5f5b4ee8086a36d4197032f6df" "checksum darling 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9861a8495606435477df581bc858ccf15a3469747edf175b94a4704fd9aaedac" "checksum darling_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1486a8b00b45062c997f767738178b43219133dd0c8c826cb811e60563810821" "checksum darling_macro 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a86ec160aa0c3dd492dd4a14ec8104ad8f1a9400a820624db857998cc1f80f9" -"checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" "checksum dtoa-short 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "068d4026697c1a18f0b0bb8cfcad1b0c151b90d8edb9bf4c235ad68128920d1d" "checksum dwrote 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "36e3b27cd0b8a68e00f07e8d8e1e4f4d8a6b8b873290a734f63bd56d792d23e1" "checksum either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18785c1ba806c258137c937e44ada9ee7e69a37e3c72077542cd2f069d78562a" "checksum encoding_c 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "93ec52324ca72f423237a413ca0e1c60654c8b3d0934fcd5fd888508dfcc4ba7" "checksum encoding_rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5215aabf22b83153be3ee44dfe3f940214541b2ce13d419c55e7a115c8c51a9" "checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" "checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8" "checksum euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "50c9e4c3b53de731815135191f0b77969bea953211b8bbd3cc3083a7b10e190e" "checksum fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344" "checksum freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "398b8a11884898184d55aca9806f002b3cf68f0e860e0cbb4586f834ee39b0e7" "checksum fs2 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866" "checksum futures 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "55f0008e13fc853f79ea8fc86e931486860d4c4c156cdffb59fa5f7fa833660a" "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" "checksum gamma-lut 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dd65074503368cef99b98844012adfed8d7f99ff3e1e6d05e9055232f2d59dc9" -"checksum gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)" = "120d07f202dcc3f72859422563522b66fe6463a4c513df062874daad05f85f0a" "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" "checksum gl_generator 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0940975a4ca12b088d32b5d5134826c47d2e73de4b0b459b05244c01503eccbb" "checksum gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "bf887141f0c2a83eae026cbf3fba74f0a5cb0f01d20e5cdfcd8c4ad39295be1e" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4c7593b1522161003928c959c20a2ca421c68e940d63d75573316a009e48a6d4" "checksum ident_case 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c9826188e666f2ed92071d2dadef6edc430b11b158b5b2b3f4babbcc891eaaa" "checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d" "checksum iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29d062ee61fccdf25be172e70f34c9f6efc597e1fb8f6526e8437b2046ab26be" @@ -1793,17 +1744,16 @@ dependencies = [ "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon-core 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2c21a92a5dca958fb030787c1158446c6deb7f976399b72fa8074603f169e2a" "checksum redox_syscall 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd35cc9a8bdec562c757e3d43c1526b5c6d2653e23e2315065bc25556550753" "checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b" "checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" "checksum runloop 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d79b4b604167921892e84afbbaad9d5ad74e091bf6c511d9dbfb0593f09fabd" -"checksum rustc-demangle 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3058a43ada2c2d0b92b3ae38007a2d0fa5e9db971be260e0171408a4ff471c95" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum same-file 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7" "checksum scopeguard 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c79eb2c3ac4bc2507cda80e7f3ac5b88bd8eae4c0914d5663e6a8933994be918" "checksum semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f530d36fb84ec48fb7146936881f026cdbf4892028835fd9398475f82c1bb4" "checksum serde_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "10552fad5500771f3902d0c5ba187c5881942b811b7ba0d8fbbfbf84d80806d3" "checksum serde_derive_internals 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37aee4e0da52d801acfbc0cc219eb1eda7142112339726e427926a6f6ee65d3a"
--- a/toolkit/library/rust/gkrust-features.mozbuild +++ b/toolkit/library/rust/gkrust-features.mozbuild @@ -18,12 +18,14 @@ if CONFIG['MOZ_BUILD_WEBRENDER']: gkrust_features += ['quantum_render'] if CONFIG['MOZ_PULSEAUDIO']: gkrust_features += ['cubeb_pulse_rust'] if CONFIG['MOZ_RUST_SIMD']: gkrust_features += ['simd-accel'] -if CONFIG['MOZ_CUBEB_REMOTING']: +# This feature is only supported on Linux and this check needs to +# match MOZ_CUBEB_REMOTING in CubebUtils.cpp. +if CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TARGET'] != 'Android': gkrust_features += ['cubeb-remoting'] gkrust_features += ['no-static-ideograph-encoder-tables']
--- a/toolkit/modules/DateTimePickerHelper.jsm +++ b/toolkit/modules/DateTimePickerHelper.jsm @@ -58,16 +58,17 @@ this.DateTimePickerHelper = { this.showPicker(aMessage.target, aMessage.data); break; } case "FormDateTime:ClosePicker": { if (!this.picker) { return; } this.picker.closePicker(); + this.close(); break; } case "FormDateTime:UpdatePicker": { if (!this.picker) { return; } this.picker.setPopupValue(aMessage.data); break;
--- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -1139,30 +1139,16 @@ def geckodriver(enable, automation, comp linux32 = target.kernel == 'Linux' and target.cpu == 'x86' broken_platforms = cross_compile or linux32 or hazard if automation and compile_env and not broken_platforms: return True set_config('ENABLE_GECKODRIVER', geckodriver) -# Cubeb Audio Remoting -# ============================================================== - -option('--enable-cubeb-remoting', env='MOZ_CUBEB_REMOTING', - help='Enable cubeb audio remoting') - -@depends('--enable-cubeb-remoting') -def cubeb_remoting(value): - if value: - return True - -set_config('MOZ_CUBEB_REMOTING', cubeb_remoting) -set_define('MOZ_CUBEB_REMOTING', cubeb_remoting) - # WebRTC # ======================================================== @depends(target) def webrtc_default(target): # Turn off webrtc for OS's we don't handle yet, but allow # --enable-webrtc to override. os_match = False for os_fragment in ('linux', 'mingw', 'android', 'linuxandroid',
--- a/widget/cocoa/nsCocoaWindow.h +++ b/widget/cocoa/nsCocoaWindow.h @@ -245,16 +245,17 @@ public: virtual void ConstrainPosition(bool aAllowSlop, int32_t *aX, int32_t *aY) override; virtual void SetSizeConstraints(const SizeConstraints& aConstraints) override; virtual void Move(double aX, double aY) override; virtual void SetSizeMode(nsSizeMode aMode) override; virtual void SuppressAnimation(bool aSuppress) override; virtual void HideWindowChrome(bool aShouldHide) override; + void WillEnterFullScreen(bool aFullScreen); void EnteredFullScreen(bool aFullScreen, bool aNativeMode = true); virtual bool PrepareForFullscreenTransition(nsISupports** aData) override; virtual void PerformFullscreenTransition(FullscreenTransitionStage aStage, uint16_t aDuration, nsISupports* aData, nsIRunnable* aCallback) override; virtual nsresult MakeFullScreen( bool aFullScreen, nsIScreen* aTargetScreen = nullptr) override final;
--- a/widget/cocoa/nsCocoaWindow.mm +++ b/widget/cocoa/nsCocoaWindow.mm @@ -1486,16 +1486,23 @@ nsCocoaWindow::PerformFullscreenTransiti }; mFullscreenTransitionAnimation = [[NSViewAnimation alloc] initWithViewAnimations:@[dict]]; [mFullscreenTransitionAnimation setDelegate:delegate]; [mFullscreenTransitionAnimation setDuration:aDuration / 1000.0]; [mFullscreenTransitionAnimation startAnimation]; } +void nsCocoaWindow::WillEnterFullScreen(bool aFullScreen) +{ + if (mWidgetListener) { + mWidgetListener->FullscreenWillChange(aFullScreen); + } +} + void nsCocoaWindow::EnteredFullScreen(bool aFullScreen, bool aNativeMode) { mInFullScreenTransition = false; bool wasInFullscreen = mInFullScreenMode; mInFullScreenMode = aFullScreen; if (aNativeMode || mInNativeFullScreenMode) { mInNativeFullScreenMode = aFullScreen; } @@ -2637,16 +2644,25 @@ nsCocoaWindow::GetEditCommands(NativeKey if (GetBackingScaleFactor(window) != mGeckoWindow->BackingScaleFactor()) { mGeckoWindow->BackingScaleFactorChanged(); } } mGeckoWindow->ReportMoveEvent(); } +- (void)windowWillEnterFullScreen:(NSNotification *)notification +{ + if (!mGeckoWindow) { + return; + } + + mGeckoWindow->WillEnterFullScreen(true); +} + // Lion's full screen mode will bypass our internal fullscreen tracking, so // we need to catch it when we transition and call our own methods, which in // turn will fire "fullscreen" events. - (void)windowDidEnterFullScreen:(NSNotification *)notification { if (!mGeckoWindow) { return; } @@ -2672,16 +2688,25 @@ nsCocoaWindow::GetEditCommands(NativeKey if ([titlebarView respondsToSelector:@selector(setTransparent:)]) { [titlebarView setTransparent:NO]; } if ([titlebarContainerView respondsToSelector:@selector(setTransparent:)]) { [titlebarContainerView setTransparent:NO]; } } +- (void)windowWillExitFullScreen:(NSNotification *)notification +{ + if (!mGeckoWindow) { + return; + } + + mGeckoWindow->WillEnterFullScreen(false); +} + - (void)windowDidExitFullScreen:(NSNotification *)notification { if (!mGeckoWindow) { return; } mGeckoWindow->EnteredFullScreen(false); }
--- a/widget/nsIWidgetListener.cpp +++ b/widget/nsIWidgetListener.cpp @@ -55,16 +55,21 @@ nsIWidgetListener::SizeModeChanged(nsSiz } void nsIWidgetListener::UIResolutionChanged() { } void +nsIWidgetListener::FullscreenWillChange(bool aInFullscreen) +{ +} + +void nsIWidgetListener::FullscreenChanged(bool aInFullscreen) { } bool nsIWidgetListener::ZLevelChanged(bool aImmediate, nsWindowZ* aPlacement, nsIWidget* aRequestBelow,
--- a/widget/nsIWidgetListener.h +++ b/widget/nsIWidgetListener.h @@ -92,16 +92,21 @@ public: * window to place below. On return, aActualBelow will be set to the * window actually behind. This generally only applies to Windows. */ virtual bool ZLevelChanged(bool aImmediate, nsWindowZ* aPlacement, nsIWidget* aRequestBelow, nsIWidget** aActualBelow); /** + * Called when the window will enter or leave the fullscreen state. + */ + virtual void FullscreenWillChange(bool aInFullscreen); + + /** * Called when the window entered or left the fullscreen state. */ virtual void FullscreenChanged(bool aInFullscreen); /** * Called when the occlusion state is changed. */ virtual void OcclusionStateChanged(bool aIsFullyOccluded);
--- a/xpcom/base/nsClassInfoImpl.cpp +++ b/xpcom/base/nsClassInfoImpl.cpp @@ -31,27 +31,27 @@ GenericClassInfo::GetScriptableHelper(ns { if (mData->getscriptablehelper) { return mData->getscriptablehelper(aHelper); } return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -GenericClassInfo::GetContractID(char** aContractID) +GenericClassInfo::GetContractID(nsACString& aContractID) { NS_ERROR("GetContractID not implemented"); - *aContractID = nullptr; + aContractID.SetIsVoid(true); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP -GenericClassInfo::GetClassDescription(char** aDescription) +GenericClassInfo::GetClassDescription(nsACString& aDescription) { - *aDescription = nullptr; + aDescription.SetIsVoid(true); return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP GenericClassInfo::GetClassID(nsCID** aClassID) { NS_ERROR("GetClassID not implemented"); *aClassID = nullptr;
--- a/xpcom/base/nsISupportsImpl.h +++ b/xpcom/base/nsISupportsImpl.h @@ -1201,26 +1201,26 @@ NS_IMETHODIMP NS_IMETHODIMP \ _class::GetScriptableHelper(nsIXPCScriptable** _retval) \ { \ *_retval = nullptr; \ return NS_OK; \ } \ \ NS_IMETHODIMP \ -_class::GetContractID(char** _contractID) \ +_class::GetContractID(nsACString& _contractID) \ { \ - *_contractID = nullptr; \ + _contractID.SetIsVoid(true); \ return NS_OK; \ } \ \ NS_IMETHODIMP \ -_class::GetClassDescription(char** _classDescription) \ +_class::GetClassDescription(nsACString& _classDescription) \ { \ - *_classDescription = nullptr; \ + _classDescription.SetIsVoid(true); \ return NS_OK; \ } \ \ NS_IMETHODIMP \ _class::GetClassID(nsCID** _classID) \ { \ *_classID = nullptr; \ return NS_OK; \
--- a/xpcom/components/nsIClassInfo.idl +++ b/xpcom/components/nsIClassInfo.idl @@ -31,24 +31,24 @@ interface nsIClassInfo : nsISupports /** * Return an object to assist XPConnect in supplying JavaScript-specific * behavior to callers of the instance object, or null if not needed. */ nsIXPCScriptable getScriptableHelper(); /** * A contract ID through which an instance of this class can be created - * (or accessed as a service, if |flags & SINGLETON|), or null. + * (or accessed as a service, if |flags & SINGLETON|), or null/void. */ - readonly attribute string contractID; + readonly attribute AUTF8String contractID; /** - * A human readable string naming the class, or null. + * A human readable string naming the class, or null/void. */ - readonly attribute string classDescription; + readonly attribute AUTF8String classDescription; /** * A class ID through which an instance of this class can be created * (or accessed as a service, if |flags & SINGLETON|), or null. */ readonly attribute nsCIDPtr classID; /**
--- a/xpcom/threads/nsThread.cpp +++ b/xpcom/threads/nsThread.cpp @@ -138,26 +138,26 @@ nsThreadClassInfo::GetInterfaces(uint32_ NS_IMETHODIMP nsThreadClassInfo::GetScriptableHelper(nsIXPCScriptable** aResult) { *aResult = nullptr; return NS_OK; } NS_IMETHODIMP -nsThreadClassInfo::GetContractID(char** aResult) +nsThreadClassInfo::GetContractID(nsACString& aResult) { - *aResult = nullptr; + aResult.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP -nsThreadClassInfo::GetClassDescription(char** aResult) +nsThreadClassInfo::GetClassDescription(nsACString& aResult) { - *aResult = nullptr; + aResult.SetIsVoid(true); return NS_OK; } NS_IMETHODIMP nsThreadClassInfo::GetClassID(nsCID** aResult) { *aResult = nullptr; return NS_OK;
--- a/xpfe/appshell/nsWebShellWindow.cpp +++ b/xpfe/appshell/nsWebShellWindow.cpp @@ -409,16 +409,26 @@ nsWebShellWindow::UIResolutionChanged() mDocShell ? mDocShell->GetWindow() : nullptr; if (ourWindow) { MOZ_ASSERT(ourWindow->IsOuterWindow()); ourWindow->DispatchCustomEvent(NS_LITERAL_STRING("resolutionchange")); } } void +nsWebShellWindow::FullscreenWillChange(bool aInFullscreen) +{ + if (mDocShell) { + if (nsCOMPtr<nsPIDOMWindowOuter> ourWindow = mDocShell->GetWindow()) { + ourWindow->FullscreenWillChange(aInFullscreen); + } + } +} + +void nsWebShellWindow::FullscreenChanged(bool aInFullscreen) { if (mDocShell) { if (nsCOMPtr<nsPIDOMWindowOuter> ourWindow = mDocShell->GetWindow()) { ourWindow->FinishFullscreenChange(aInFullscreen); } } }
--- a/xpfe/appshell/nsWebShellWindow.h +++ b/xpfe/appshell/nsWebShellWindow.h @@ -53,16 +53,17 @@ public: // nsIWidgetListener virtual nsIXULWindow* GetXULWindow() override { return this; } virtual nsIPresShell* GetPresShell() override; virtual bool WindowMoved(nsIWidget* aWidget, int32_t x, int32_t y) override; virtual bool WindowResized(nsIWidget* aWidget, int32_t aWidth, int32_t aHeight) override; virtual bool RequestWindowClose(nsIWidget* aWidget) override; virtual void SizeModeChanged(nsSizeMode sizeMode) override; virtual void UIResolutionChanged() override; + virtual void FullscreenWillChange(bool aInFullscreen) override; virtual void FullscreenChanged(bool aInFullscreen) override; virtual void OcclusionStateChanged(bool aIsFullyOccluded) override; virtual void OSToolbarButtonPressed() override; virtual bool ZLevelChanged(bool aImmediate, nsWindowZ *aPlacement, nsIWidget* aRequestBelow, nsIWidget** aActualBelow) override; virtual void WindowActivated() override; virtual void WindowDeactivated() override;