From d1a537b9cfe0d3c8b190028a80d0564299e3e46d Mon Sep 17 00:00:00 2001 From: Jeremy Andrews Date: Sat, 19 Jun 2021 15:01:08 -0500 Subject: [PATCH 1/9] Issue #1776 - Support detecting bool preferences in chrome stylesheets This functionality was already added to Gecko for UA stylesheets allow the "dom.details_element.enabled" preference to work. I changed the condition to allow bool preferences to be used in chrome stylesheets as well. --- layout/style/nsCSSParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index 078cbaecdf..4be2372347 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -4667,7 +4667,7 @@ CSSParserImpl::ParseSupportsConditionInParens(bool& aConditionMet) return true; } - if (AgentRulesEnabled() && + if ((AgentRulesEnabled() || ChromeRulesEnabled()) && mToken.mType == eCSSToken_Function && mToken.mIdent.LowerCaseEqualsLiteral("-moz-bool-pref")) { return ParseSupportsMozBoolPrefName(aConditionMet); From 51d3f2d2f3f19e253f31edac92f23c47dde5b878 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Fri, 18 Jun 2021 10:35:19 +0000 Subject: [PATCH 2/9] Issue #1783 - Part 1: Move GetNodeDepth to ResizeObserver.cpp GetNodeDepth() is a specialized version for ResizeObserver to get the depth of a node across Shadow DOM. It's better to have this in ResizeObserver.cpp instead of the generic ContentUtils. Also updated the function to bypass the shadow root itself and not count it because ResizeObserver doesn't observe the shadow root and only needs the relative depths among all observed targets. IOW we use the flattened tree here. --- dom/base/ResizeObserver.cpp | 38 ++++++++++++++++++++++++++++++++----- dom/base/nsContentUtils.cpp | 14 -------------- dom/base/nsContentUtils.h | 8 -------- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/dom/base/ResizeObserver.cpp b/dom/base/ResizeObserver.cpp index 37d940c2b3..c3302efee3 100644 --- a/dom/base/ResizeObserver.cpp +++ b/dom/base/ResizeObserver.cpp @@ -6,13 +6,43 @@ #include "mozilla/dom/ResizeObserver.h" #include "mozilla/dom/DOMRect.h" -#include "nsContentUtils.h" +#include "nsIContentInlines.h" #include "nsIFrame.h" #include "nsSVGUtils.h" namespace mozilla { namespace dom { +/** + * Returns the length of the parent-traversal path (in terms of the number of + * nodes) to an unparented/root node from aNode. An unparented/root node is + * considered to have a depth of 1, its children have a depth of 2, etc. + * aNode is expected to be non-null. + * Note: The shadow root is not part of the calculation because the caller, + * ResizeObserver, doesn't observe the shadow root, and only needs relative + * depths among all the observed targets. In other words, we calculate the + * depth of the flattened tree. + * + * Note: these is a spec issue about how to handle shadow DOM case. We + * may need to update this function later. + * + * + * https://drafts.csswg.org/resize-observer/#calculate-depth-for-node-h + */ +static uint32_t GetNodeDepth(nsINode* aNode) { + uint32_t depth = 1; + + MOZ_ASSERT(aNode, "Node shouldn't be null"); + + // Use GetFlattenedTreeParentNode to bypass the shadow root and cross the + // shadow boundary to calculate the node depth without the shadow root. + while ((aNode = aNode->GetFlattenedTreeParentNode())) { + ++depth; + } + + return depth; +} + NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserver) NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY NS_INTERFACE_MAP_ENTRY(nsISupports) @@ -128,8 +158,7 @@ ResizeObserver::GatherActiveObservations(uint32_t aDepth) for (auto observation : mObservationList) { if (observation->IsActive()) { - uint32_t targetDepth = - nsContentUtils::GetNodeDepth(observation->Target()); + uint32_t targetDepth = GetNodeDepth(observation->Target()); if (targetDepth > aDepth) { mActiveTargets.AppendElement(observation); @@ -176,8 +205,7 @@ ResizeObserver::BroadcastActiveObservations() // will be based on the updated size from last delivered observations. observation->UpdateBroadcastSize(rect); - uint32_t targetDepth = - nsContentUtils::GetNodeDepth(observation->Target()); + uint32_t targetDepth = GetNodeDepth(observation->Target()); if (targetDepth < shallowestTargetDepth) { shallowestTargetDepth = targetDepth; diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index 95f176ca8f..fdffd95531 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -9781,17 +9781,3 @@ nsContentUtils::GetClosestNonNativeAnonymousAncestor(Element* aElement) } return e; } - -/* static */ uint32_t -nsContentUtils::GetNodeDepth(nsINode* aNode) -{ - uint32_t depth = 1; - - MOZ_ASSERT(aNode, "Node shouldn't be null"); - - while ((aNode = aNode->GetParentNode())) { - ++depth; - } - - return depth; -} \ No newline at end of file diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index 83ee417403..b3bc22f286 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -2756,14 +2756,6 @@ public: static bool IsCustomElementsEnabled() { return sIsCustomElementsEnabled; } - /** - * Returns the length of the parent-traversal path (in terms of the number of - * nodes) to an unparented/root node from aNode. An unparented/root node is - * considered to have a depth of 1, its children have a depth of 2, etc. - * aNode is expected to be non-null. - */ - static uint32_t GetNodeDepth(nsINode* aNode); - private: static bool InitializeEventTable(); From 25164d0b75930218c4f0559e8a8fe95b04a4d73a Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 19 Jun 2021 15:38:14 +0000 Subject: [PATCH 3/9] Issue #1783 - Part 2: Update ResizeObserver and resizeObserverSize. This adds the later spec revision's contentBoxSize and borderBoxSize, and the inlineSize and blockSize concepts. The older spec contentRect remains functional as well for backwards compatibility with the earlier spec (that was IMHO perfectly fine as it was...) --- dom/base/ResizeObserver.cpp | 165 ++++++++++++++++++++++--------- dom/base/ResizeObserver.h | 118 ++++++++++++++++------ dom/bindings/Bindings.conf | 5 + dom/webidl/ResizeObserver.webidl | 24 ++++- 4 files changed, 229 insertions(+), 83 deletions(-) diff --git a/dom/base/ResizeObserver.cpp b/dom/base/ResizeObserver.cpp index c3302efee3..67467b0fc3 100644 --- a/dom/base/ResizeObserver.cpp +++ b/dom/base/ResizeObserver.cpp @@ -29,7 +29,8 @@ namespace dom { * * https://drafts.csswg.org/resize-observer/#calculate-depth-for-node-h */ -static uint32_t GetNodeDepth(nsINode* aNode) { +static uint32_t +GetNodeDepth(nsINode* aNode) { uint32_t depth = 1; MOZ_ASSERT(aNode, "Node shouldn't be null"); @@ -43,6 +44,50 @@ static uint32_t GetNodeDepth(nsINode* aNode) { return depth; } +/** + * Returns |aTarget|'s size in the form of an nsSize. + * If the target is an SVG, width and height are determined from the bounding box. + */ +static nsSize +GetTargetSize(Element* aTarget, ResizeObserverBoxOptions aBox) { + nsSize size; + nsIFrame* frame = aTarget->GetPrimaryFrame(); + + if (!frame) { + return size; + } + + if (aTarget->IsSVGElement()) { + // Per the spec, an SVG size is always its bounding box size, no matter what + // box option you choose, because SVG elements do not use the standard CSS box + // model. + gfxRect bbox = nsSVGUtils::GetBBox(frame); + size.width = NSFloatPixelsToAppUnits(bbox.width, AppUnitsPerCSSPixel()); + size.height = NSFloatPixelsToAppUnits(bbox.height, AppUnitsPerCSSPixel()); + } else { + // Per the spec, non-replaced inline Elements will always have an empty + // content rect. We therefore always use the same empty size for + // non-replaced inline elements here, and their IsActive() will + // always return false. (So its observation won't be fired.) + if (!frame->IsFrameOfType(nsIFrame::eReplaced) && + frame->IsFrameOfType(nsIFrame::eLineParticipant)) { + return size; + } + + switch (aBox) { + case ResizeObserverBoxOptions::Border_box: + // GetSize() includes the content area, borders, and padding. + size = frame->GetSize(); + break; + case ResizeObserverBoxOptions::Content_box: + default: + size = frame->GetContentRectRelativeToSelf().Size(); + } + } + + return size; +} + NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserver) NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY NS_INTERFACE_MAP_ENTRY(nsISupports) @@ -98,6 +143,7 @@ ResizeObserver::Constructor(const GlobalObject& aGlobal, void ResizeObserver::Observe(Element* aTarget, + const ResizeObserverOptions& aOptions, ErrorResult& aRv) { if (!aTarget) { @@ -108,7 +154,9 @@ ResizeObserver::Observe(Element* aTarget, RefPtr observation; if (!mObservationMap.Get(aTarget, getter_AddRefs(observation))) { - observation = new ResizeObservation(this, aTarget); + nsIFrame* frame = aTarget->GetPrimaryFrame(); + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + observation = new ResizeObservation(aTarget->OwnerDoc(), aTarget, aOptions.mBox, wm); mObservationMap.Put(aTarget, observation); mObservationList.insertBack(observation); @@ -190,11 +238,14 @@ ResizeObserver::BroadcastActiveObservations() Sequence> entries; for (auto observation : mActiveTargets) { - RefPtr entry = - new ResizeObserverEntry(this, observation->Target()); + Element* target = observation->Target(); + RefPtr entry = new ResizeObserverEntry(this, target); - nsRect rect = observation->GetTargetRect(); - entry->SetContentRect(rect); + nsSize borderBoxSize = GetTargetSize(target, ResizeObserverBoxOptions::Border_box); + entry->SetBorderBoxSize(borderBoxSize); + + nsSize contentBoxSize = GetTargetSize(target, ResizeObserverBoxOptions::Content_box); + entry->SetContentRectAndSize(contentBoxSize); if (!entries.AppendElement(entry.forget(), fallible)) { // Out of memory. @@ -203,7 +254,14 @@ ResizeObserver::BroadcastActiveObservations() // Sync the broadcast size of observation so the next size inspection // will be based on the updated size from last delivered observations. - observation->UpdateBroadcastSize(rect); + switch (observation->BoxOptions()) { + case ResizeObserverBoxOptions::Border_box: + observation->UpdateLastReportedSize(borderBoxSize); + break; + case ResizeObserverBoxOptions::Content_box: + default: + observation->UpdateLastReportedSize(contentBoxSize); + } uint32_t targetDepth = GetNodeDepth(observation->Target()); @@ -229,8 +287,11 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserverEntry) NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserverEntry) NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObserverEntry, - mTarget, mContentRect, - mOwner) + mOwner, + mTarget, + mContentRect, + mBorderBoxSize, + mContentBoxSize) already_AddRefed ResizeObserverEntry::Constructor(const GlobalObject& aGlobal, @@ -243,28 +304,42 @@ ResizeObserverEntry::Constructor(const GlobalObject& aGlobal, } void -ResizeObserverEntry::SetContentRect(nsRect aRect) -{ - RefPtr contentRect = new DOMRect(mTarget); +ResizeObserverEntry::SetBorderBoxSize(const nsSize& aSize) { + nsIFrame* frame = mTarget->GetPrimaryFrame(); + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + mBorderBoxSize = new ResizeObserverSize(this, aSize, wm); +} + +void +ResizeObserverEntry::SetContentRectAndSize(const nsSize& aSize) { nsIFrame* frame = mTarget->GetPrimaryFrame(); - if (frame) { - nsMargin padding = frame->GetUsedPadding(); - - // Per the spec, we need to include padding in contentRect of - // ResizeObserverEntry. - aRect.x = padding.left; - aRect.y = padding.top; - } - - contentRect->SetLayoutRect(aRect); + // Update mContentRect. + nsMargin padding = frame ? frame->GetUsedPadding(): nsMargin(); + // Per the spec, we need to use the top-left padding offset as the origin of + // our contentRect. + nsRect rect(nsPoint(padding.left, padding.top), aSize); + RefPtr contentRect = new DOMRect(mTarget); + contentRect->SetLayoutRect(rect); mContentRect = contentRect.forget(); + + // Update mContentBoxSize. + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + mContentBoxSize = new ResizeObserverSize(this, aSize, wm); } ResizeObserverEntry::~ResizeObserverEntry() { } +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObserverSize, mOwner) +NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserverSize) +NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserverSize) +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserverSize) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY + NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_MAP_END + NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObservation) NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY NS_INTERFACE_MAP_ENTRY(nsISupports) @@ -281,48 +356,40 @@ ResizeObservation::Constructor(const GlobalObject& aGlobal, Element* aTarget, ErrorResult& aRv) { + ResizeObserverOptions options; + options.mBox = ResizeObserverBoxOptions::Content_box; + nsIFrame* frame = aTarget->GetPrimaryFrame(); + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); RefPtr observation = - new ResizeObservation(aGlobal.GetAsSupports(), aTarget); + new ResizeObservation(aGlobal.GetAsSupports(), aTarget, options.mBox, wm); return observation.forget(); } bool ResizeObservation::IsActive() const { - nsRect rect = GetTargetRect(); - return (rect.width != mBroadcastWidth || rect.height != mBroadcastHeight); + nsIFrame* frame = mTarget->GetPrimaryFrame(); + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + LogicalSize size(wm, GetTargetSize(mTarget, mObservedBox)); + return mLastReportedSize.ISize(mLastReportedWM) != size.ISize(wm) || + mLastReportedSize.BSize(mLastReportedWM) != size.BSize(wm); } +void +ResizeObservation::UpdateLastReportedSize(const nsSize& aSize) { + nsIFrame* frame = mTarget->GetPrimaryFrame(); + mLastReportedWM = frame ? frame->GetWritingMode() : WritingMode(); + mLastReportedSize = LogicalSize(mLastReportedWM, aSize); +} + +/* void ResizeObservation::UpdateBroadcastSize(nsRect aRect) { mBroadcastWidth = aRect.width; mBroadcastHeight = aRect.height; } - -nsRect -ResizeObservation::GetTargetRect() const -{ - nsRect rect; - nsIFrame* frame = mTarget->GetPrimaryFrame(); - - if (frame) { - if (mTarget->IsSVGElement()) { - gfxRect bbox = nsSVGUtils::GetBBox(frame); - rect.width = NSFloatPixelsToAppUnits(bbox.width, AppUnitsPerCSSPixel()); - rect.height = NSFloatPixelsToAppUnits(bbox.height, AppUnitsPerCSSPixel()); - } else { - // Per the spec, non-replaced inline Elements will always have an empty - // content rect. - if (frame->IsFrameOfType(nsIFrame::eReplaced) || - !frame->IsFrameOfType(nsIFrame::eLineParticipant)) { - rect = frame->GetContentRectRelativeToSelf(); - } - } - } - - return rect; -} +*/ ResizeObservation::~ResizeObservation() { diff --git a/dom/base/ResizeObserver.h b/dom/base/ResizeObserver.h index 2f56c580f4..92a7ee08cc 100644 --- a/dom/base/ResizeObserver.h +++ b/dom/base/ResizeObserver.h @@ -6,7 +6,10 @@ #ifndef mozilla_dom_ResizeObserver_h #define mozilla_dom_ResizeObserver_h +#include "mozilla/AppUnits.h" +#include "mozilla/WritingModes.h" #include "mozilla/dom/ResizeObserverBinding.h" +#include "nsCoord.h" namespace mozilla { namespace dom { @@ -47,7 +50,7 @@ public: return mOwner; } - void Observe(Element* aTarget, ErrorResult& aRv); + void Observe(Element* aTarget, const ResizeObserverOptions& aOptions, ErrorResult& aRv); void Unobserve(Element* aTarget, ErrorResult& aRv); @@ -77,9 +80,10 @@ public: /* * Deliver the callback function in JavaScript for all active observations * and pass the sequence of ResizeObserverEntry so JavaScript can access them. - * The broadcast size of observations will be updated and mActiveTargets will - * be cleared. It also returns the shallowest depth of elements from active - * observations or UINT32_MAX if there is no any active observations. + * The active observations' mLastReportedSize fields will be updated, and + * mActiveTargets will be cleared. It also returns the shallowest depth of + * elements from active observations or numeric_limits::max() if + * there are not any active observations. */ uint32_t BroadcastActiveObservations(); @@ -92,6 +96,10 @@ protected: nsCOMPtr mOwner; RefPtr mCallback; nsTArray> mActiveTargets; + // The spec uses a list to store the skipped targets. However, it seems what + // we want is to check if there are any skipped targets (i.e. existence). + // Therefore, we use a boolean value to represent the existence of skipped + // targets. bool mHasSkippedTargets; // Combination of HashTable and LinkedList so we can iterate through @@ -153,14 +161,67 @@ public: return mContentRect; } - void SetContentRect(nsRect aRect); + /** + * Returns target's logical border-box size and content-box size as + * ResizeObserverSize. + */ + ResizeObserverSize* BorderBoxSize() const { + return mBorderBoxSize; + } + ResizeObserverSize* ContentBoxSize() const { + return mContentBoxSize; + } + + // Set borderBoxSize. + void SetBorderBoxSize(const nsSize& aSize); + // Set contentRect and contentBoxSize. + void SetContentRectAndSize(const nsSize& aSize); protected: ~ResizeObserverEntry(); nsCOMPtr mOwner; nsCOMPtr mTarget; + RefPtr mContentRect; + RefPtr mBorderBoxSize; + RefPtr mContentBoxSize; +}; + +class ResizeObserverSize final : public nsISupports, public nsWrapperCache { +public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObserverSize) + + // Note: the unit of |aSize| is app unit, and we convert it into css pixel in + // the public JS APIs. + ResizeObserverSize(nsISupports* aOwner, const nsSize& aSize, + const WritingMode aWM) + : mOwner(aOwner), mSize(aWM, aSize), mWM(aWM) { + MOZ_ASSERT(mOwner, "Need a non-null owner"); + } + + nsISupports* GetParentObject() const { return mOwner; } + + JSObject* WrapObject(JSContext* aCx, + JS::Handle aGivenProto) override { + return ResizeObserverSizeBinding::Wrap(aCx, this, aGivenProto); + } + + double InlineSize() const { + return NSAppUnitsToDoublePixels(mSize.ISize(mWM), AppUnitsPerCSSPixel()); + } + + double BlockSize() const { + return NSAppUnitsToDoublePixels(mSize.BSize(mWM), AppUnitsPerCSSPixel()); + } + +protected: + ~ResizeObserverSize() = default; + + nsCOMPtr mOwner; + const LogicalSize mSize; + const WritingMode mWM; }; /** @@ -177,11 +238,15 @@ public: NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObservation) - ResizeObservation(nsISupports* aOwner, Element* aTarget) + ResizeObservation(nsISupports* aOwner, + Element* aTarget, + ResizeObserverBoxOptions aBox, + const WritingMode aWM) : mOwner(aOwner) , mTarget(aTarget) - , mBroadcastWidth(0) - , mBroadcastHeight(0) + , mObservedBox(aBox) + , mLastReportedSize(aWM) + , mLastReportedWM(aWM) { MOZ_ASSERT(mOwner, "Need a non-null owner"); MOZ_ASSERT(mTarget, "Need a non-null target element"); @@ -208,32 +273,21 @@ public: return mTarget; } - nscoord BroadcastWidth() const - { - return mBroadcastWidth; - } - - nscoord BroadcastHeight() const - { - return mBroadcastHeight; + ResizeObserverBoxOptions BoxOptions() const + { + return mObservedBox; } /* - * Returns whether the observed target element size differs from current - * BroadcastWidth and BroadcastHeight + * Returns whether the observed target element size differs from the saved + * mLastReportedSize. */ bool IsActive() const; /* - * Update current BroadcastWidth and BroadcastHeight with size from aRect. + * Update current mLastReportedSize with size from aSize. */ - void UpdateBroadcastSize(nsRect aRect); - - /* - * Returns the target's rect in the form of nsRect. - * If the target is SVG, width and height are determined from bounding box. - */ - nsRect GetTargetRect() const; + void UpdateLastReportedSize(const nsSize& aSize); protected: ~ResizeObservation(); @@ -241,10 +295,14 @@ protected: nsCOMPtr mOwner; nsCOMPtr mTarget; - // Broadcast width and broadcast height are the latest recorded size - // of observed target. - nscoord mBroadcastWidth; - nscoord mBroadcastHeight; + const ResizeObserverBoxOptions mObservedBox; + + // The latest recorded size of observed target. + // Per the spec, observation.lastReportedSize should be entry.borderBoxSize + // or entry.contentBoxSize (i.e. logical size), instead of entry.contentRect + // (i.e. physical rect), so we store this as LogicalSize. + LogicalSize mLastReportedSize; + WritingMode mLastReportedWM; }; } // namespace dom diff --git a/dom/bindings/Bindings.conf b/dom/bindings/Bindings.conf index 4e9ca75e3e..ddd32a4940 100644 --- a/dom/bindings/Bindings.conf +++ b/dom/bindings/Bindings.conf @@ -736,6 +736,11 @@ DOMInterfaces = { 'headerFile': 'mozilla/dom/ResizeObserver.h', }, +'ResizeObserverSize': { + 'nativeType': 'mozilla::dom::ResizeObserverSize', + 'headerFile': 'mozilla/dom/ResizeObserver.h', +}, + 'Response': { 'binaryNames': { 'headers': 'headers_' }, }, diff --git a/dom/webidl/ResizeObserver.webidl b/dom/webidl/ResizeObserver.webidl index 98700f53c6..c3ae93a810 100644 --- a/dom/webidl/ResizeObserver.webidl +++ b/dom/webidl/ResizeObserver.webidl @@ -7,12 +7,21 @@ * https://wicg.github.io/ResizeObserver/ */ +enum ResizeObserverBoxOptions { + "border-box", + "content-box" +}; + +dictionary ResizeObserverOptions { + ResizeObserverBoxOptions box = "content-box"; +}; + [Constructor(ResizeObserverCallback callback), Exposed=Window, Pref="layout.css.resizeobserver.enabled"] interface ResizeObserver { [Throws] - void observe(Element? target); + void observe(Element? target, optional ResizeObserverOptions options); [Throws] void unobserve(Element? target); void disconnect(); @@ -21,11 +30,18 @@ interface ResizeObserver { callback ResizeObserverCallback = void (sequence entries, ResizeObserver observer); [Constructor(Element? target), - ChromeOnly, Pref="layout.css.resizeobserver.enabled"] interface ResizeObserverEntry { readonly attribute Element target; readonly attribute DOMRectReadOnly? contentRect; + readonly attribute ResizeObserverSize borderBoxSize; + readonly attribute ResizeObserverSize contentBoxSize; +}; + +[Pref="layout.css.resizeobserver.enabled"] +interface ResizeObserverSize { + readonly attribute unrestricted double inlineSize; + readonly attribute unrestricted double blockSize; }; [Constructor(Element? target), @@ -33,7 +49,7 @@ interface ResizeObserverEntry { Pref="layout.css.resizeobserver.enabled"] interface ResizeObservation { readonly attribute Element target; - readonly attribute long broadcastWidth; - readonly attribute long broadcastHeight; +/* readonly attribute long broadcastWidth; + readonly attribute long broadcastHeight; */ boolean isActive(); }; From 699781f37cd6fa762742183793700c2f19ce54b2 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 19 Jun 2021 15:40:37 +0000 Subject: [PATCH 4/9] Issue #1783 - Part 3: Remove ResizeObservation's BroadcastSize. This is chrome-only and unused, and interfered with getting the spec update in. --- dom/base/ResizeObserver.cpp | 23 ----------------------- dom/webidl/ResizeObserver.webidl | 5 +---- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/dom/base/ResizeObserver.cpp b/dom/base/ResizeObserver.cpp index 67467b0fc3..f168b87c55 100644 --- a/dom/base/ResizeObserver.cpp +++ b/dom/base/ResizeObserver.cpp @@ -351,20 +351,6 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObservation) NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObservation, mTarget, mOwner) -already_AddRefed -ResizeObservation::Constructor(const GlobalObject& aGlobal, - Element* aTarget, - ErrorResult& aRv) -{ - ResizeObserverOptions options; - options.mBox = ResizeObserverBoxOptions::Content_box; - nsIFrame* frame = aTarget->GetPrimaryFrame(); - WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); - RefPtr observation = - new ResizeObservation(aGlobal.GetAsSupports(), aTarget, options.mBox, wm); - return observation.forget(); -} - bool ResizeObservation::IsActive() const { @@ -382,15 +368,6 @@ ResizeObservation::UpdateLastReportedSize(const nsSize& aSize) { mLastReportedSize = LogicalSize(mLastReportedWM, aSize); } -/* -void -ResizeObservation::UpdateBroadcastSize(nsRect aRect) -{ - mBroadcastWidth = aRect.width; - mBroadcastHeight = aRect.height; -} -*/ - ResizeObservation::~ResizeObservation() { } diff --git a/dom/webidl/ResizeObserver.webidl b/dom/webidl/ResizeObserver.webidl index c3ae93a810..d764af7cbd 100644 --- a/dom/webidl/ResizeObserver.webidl +++ b/dom/webidl/ResizeObserver.webidl @@ -44,12 +44,9 @@ interface ResizeObserverSize { readonly attribute unrestricted double blockSize; }; -[Constructor(Element? target), - ChromeOnly, +[ChromeOnly, Pref="layout.css.resizeobserver.enabled"] interface ResizeObservation { readonly attribute Element target; -/* readonly attribute long broadcastWidth; - readonly attribute long broadcastHeight; */ boolean isActive(); }; From 07288b49a39c66b7b126101f571f93eb33a96838 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 19 Jun 2021 23:02:06 +0000 Subject: [PATCH 5/9] Bump platform version --- config/milestone.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/milestone.txt b/config/milestone.txt index 40b2e6eecf..9110638150 100644 --- a/config/milestone.txt +++ b/config/milestone.txt @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -4.8.0 \ No newline at end of file +4.8.2 From 2703c4fc63244617ec49cf869460e93fd9967864 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Mon, 21 Jun 2021 00:40:58 +0000 Subject: [PATCH 6/9] [whitespace] Fix CRLF line endings. When originally implementing ResizeObserver, line endings ended up being CRLF instead of LF. This commit fixes those line endings (no code changes) --- dom/base/ResizeObserver.cpp | 752 ++++++++++++++-------------- dom/base/ResizeObserver.h | 624 +++++++++++------------ dom/base/ResizeObserverController.h | 6 +- 3 files changed, 691 insertions(+), 691 deletions(-) diff --git a/dom/base/ResizeObserver.cpp b/dom/base/ResizeObserver.cpp index f168b87c55..51fd603217 100644 --- a/dom/base/ResizeObserver.cpp +++ b/dom/base/ResizeObserver.cpp @@ -1,376 +1,376 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/dom/ResizeObserver.h" - -#include "mozilla/dom/DOMRect.h" -#include "nsIContentInlines.h" -#include "nsIFrame.h" -#include "nsSVGUtils.h" - -namespace mozilla { -namespace dom { - -/** - * Returns the length of the parent-traversal path (in terms of the number of - * nodes) to an unparented/root node from aNode. An unparented/root node is - * considered to have a depth of 1, its children have a depth of 2, etc. - * aNode is expected to be non-null. - * Note: The shadow root is not part of the calculation because the caller, - * ResizeObserver, doesn't observe the shadow root, and only needs relative - * depths among all the observed targets. In other words, we calculate the - * depth of the flattened tree. - * - * Note: these is a spec issue about how to handle shadow DOM case. We - * may need to update this function later. - * - * - * https://drafts.csswg.org/resize-observer/#calculate-depth-for-node-h - */ -static uint32_t -GetNodeDepth(nsINode* aNode) { - uint32_t depth = 1; - - MOZ_ASSERT(aNode, "Node shouldn't be null"); - - // Use GetFlattenedTreeParentNode to bypass the shadow root and cross the - // shadow boundary to calculate the node depth without the shadow root. - while ((aNode = aNode->GetFlattenedTreeParentNode())) { - ++depth; - } - - return depth; -} - -/** - * Returns |aTarget|'s size in the form of an nsSize. - * If the target is an SVG, width and height are determined from the bounding box. - */ -static nsSize -GetTargetSize(Element* aTarget, ResizeObserverBoxOptions aBox) { - nsSize size; - nsIFrame* frame = aTarget->GetPrimaryFrame(); - - if (!frame) { - return size; - } - - if (aTarget->IsSVGElement()) { - // Per the spec, an SVG size is always its bounding box size, no matter what - // box option you choose, because SVG elements do not use the standard CSS box - // model. - gfxRect bbox = nsSVGUtils::GetBBox(frame); - size.width = NSFloatPixelsToAppUnits(bbox.width, AppUnitsPerCSSPixel()); - size.height = NSFloatPixelsToAppUnits(bbox.height, AppUnitsPerCSSPixel()); - } else { - // Per the spec, non-replaced inline Elements will always have an empty - // content rect. We therefore always use the same empty size for - // non-replaced inline elements here, and their IsActive() will - // always return false. (So its observation won't be fired.) - if (!frame->IsFrameOfType(nsIFrame::eReplaced) && - frame->IsFrameOfType(nsIFrame::eLineParticipant)) { - return size; - } - - switch (aBox) { - case ResizeObserverBoxOptions::Border_box: - // GetSize() includes the content area, borders, and padding. - size = frame->GetSize(); - break; - case ResizeObserverBoxOptions::Content_box: - default: - size = frame->GetContentRectRelativeToSelf().Size(); - } - } - - return size; -} - -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserver) - NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY - NS_INTERFACE_MAP_ENTRY(nsISupports) -NS_INTERFACE_MAP_END - -NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserver) -NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserver) - -NS_IMPL_CYCLE_COLLECTION_CLASS(ResizeObserver) - -NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ResizeObserver) - NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER -NS_IMPL_CYCLE_COLLECTION_TRACE_END - -NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ResizeObserver) - NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER - NS_IMPL_CYCLE_COLLECTION_UNLINK(mOwner) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mObservationMap) -NS_IMPL_CYCLE_COLLECTION_UNLINK_END - -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ResizeObserver) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOwner) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mObservationMap) -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END - -already_AddRefed -ResizeObserver::Constructor(const GlobalObject& aGlobal, - ResizeObserverCallback& aCb, - ErrorResult& aRv) -{ - nsCOMPtr window = - do_QueryInterface(aGlobal.GetAsSupports()); - - if (!window) { - aRv.Throw(NS_ERROR_FAILURE); - return nullptr; - } - - nsCOMPtr document = window->GetExtantDoc(); - - if (!document) { - aRv.Throw(NS_ERROR_FAILURE); - return nullptr; - } - - RefPtr observer = new ResizeObserver(window.forget(), aCb); - document->AddResizeObserver(observer); - - return observer.forget(); -} - -void -ResizeObserver::Observe(Element* aTarget, - const ResizeObserverOptions& aOptions, - ErrorResult& aRv) -{ - if (!aTarget) { - aRv.Throw(NS_ERROR_DOM_NOT_FOUND_ERR); - return; - } - - RefPtr observation; - - if (!mObservationMap.Get(aTarget, getter_AddRefs(observation))) { - nsIFrame* frame = aTarget->GetPrimaryFrame(); - WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); - observation = new ResizeObservation(aTarget->OwnerDoc(), aTarget, aOptions.mBox, wm); - - mObservationMap.Put(aTarget, observation); - mObservationList.insertBack(observation); - - // Per the spec, we need to trigger notification in event loop that - // contains ResizeObserver observe call even when resize/reflow does - // not happen. - aTarget->OwnerDoc()->ScheduleResizeObserversNotification(); - } -} - -void -ResizeObserver::Unobserve(Element* aTarget, - ErrorResult& aRv) -{ - if (!aTarget) { - aRv.Throw(NS_ERROR_DOM_NOT_FOUND_ERR); - return; - } - - RefPtr observation; - - if (mObservationMap.Get(aTarget, getter_AddRefs(observation))) { - mObservationMap.Remove(aTarget); - - MOZ_ASSERT(!mObservationList.isEmpty(), - "If ResizeObservation found for an element, observation list " - "must be not empty."); - - observation->remove(); - } -} - -void -ResizeObserver::Disconnect() -{ - mObservationMap.Clear(); - mObservationList.clear(); - mActiveTargets.Clear(); -} - -void -ResizeObserver::GatherActiveObservations(uint32_t aDepth) -{ - mActiveTargets.Clear(); - mHasSkippedTargets = false; - - for (auto observation : mObservationList) { - if (observation->IsActive()) { - uint32_t targetDepth = GetNodeDepth(observation->Target()); - - if (targetDepth > aDepth) { - mActiveTargets.AppendElement(observation); - } else { - mHasSkippedTargets = true; - } - } - } -} - -bool -ResizeObserver::HasActiveObservations() const -{ - return !mActiveTargets.IsEmpty(); -} - -bool -ResizeObserver::HasSkippedObservations() const -{ - return mHasSkippedTargets; -} - -uint32_t -ResizeObserver::BroadcastActiveObservations() -{ - uint32_t shallowestTargetDepth = UINT32_MAX; - - if (HasActiveObservations()) { - Sequence> entries; - - for (auto observation : mActiveTargets) { - Element* target = observation->Target(); - RefPtr entry = new ResizeObserverEntry(this, target); - - nsSize borderBoxSize = GetTargetSize(target, ResizeObserverBoxOptions::Border_box); - entry->SetBorderBoxSize(borderBoxSize); - - nsSize contentBoxSize = GetTargetSize(target, ResizeObserverBoxOptions::Content_box); - entry->SetContentRectAndSize(contentBoxSize); - - if (!entries.AppendElement(entry.forget(), fallible)) { - // Out of memory. - break; - } - - // Sync the broadcast size of observation so the next size inspection - // will be based on the updated size from last delivered observations. - switch (observation->BoxOptions()) { - case ResizeObserverBoxOptions::Border_box: - observation->UpdateLastReportedSize(borderBoxSize); - break; - case ResizeObserverBoxOptions::Content_box: - default: - observation->UpdateLastReportedSize(contentBoxSize); - } - - uint32_t targetDepth = GetNodeDepth(observation->Target()); - - if (targetDepth < shallowestTargetDepth) { - shallowestTargetDepth = targetDepth; - } - } - - mCallback->Call(this, entries, *this); - mActiveTargets.Clear(); - mHasSkippedTargets = false; - } - - return shallowestTargetDepth; -} - -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserverEntry) - NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY - NS_INTERFACE_MAP_ENTRY(nsISupports) -NS_INTERFACE_MAP_END - -NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserverEntry) -NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserverEntry) - -NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObserverEntry, - mOwner, - mTarget, - mContentRect, - mBorderBoxSize, - mContentBoxSize) - -already_AddRefed -ResizeObserverEntry::Constructor(const GlobalObject& aGlobal, - Element* aTarget, - ErrorResult& aRv) -{ - RefPtr observerEntry = - new ResizeObserverEntry(aGlobal.GetAsSupports(), aTarget); - return observerEntry.forget(); -} - -void -ResizeObserverEntry::SetBorderBoxSize(const nsSize& aSize) { - nsIFrame* frame = mTarget->GetPrimaryFrame(); - WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); - mBorderBoxSize = new ResizeObserverSize(this, aSize, wm); -} - -void -ResizeObserverEntry::SetContentRectAndSize(const nsSize& aSize) { - nsIFrame* frame = mTarget->GetPrimaryFrame(); - - // Update mContentRect. - nsMargin padding = frame ? frame->GetUsedPadding(): nsMargin(); - // Per the spec, we need to use the top-left padding offset as the origin of - // our contentRect. - nsRect rect(nsPoint(padding.left, padding.top), aSize); - RefPtr contentRect = new DOMRect(mTarget); - contentRect->SetLayoutRect(rect); - mContentRect = contentRect.forget(); - - // Update mContentBoxSize. - WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); - mContentBoxSize = new ResizeObserverSize(this, aSize, wm); -} - -ResizeObserverEntry::~ResizeObserverEntry() -{ -} - -NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObserverSize, mOwner) -NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserverSize) -NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserverSize) -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserverSize) - NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY - NS_INTERFACE_MAP_ENTRY(nsISupports) -NS_INTERFACE_MAP_END - -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObservation) - NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY - NS_INTERFACE_MAP_ENTRY(nsISupports) -NS_INTERFACE_MAP_END - -NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObservation) -NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObservation) - -NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObservation, - mTarget, mOwner) - -bool -ResizeObservation::IsActive() const -{ - nsIFrame* frame = mTarget->GetPrimaryFrame(); - WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); - LogicalSize size(wm, GetTargetSize(mTarget, mObservedBox)); - return mLastReportedSize.ISize(mLastReportedWM) != size.ISize(wm) || - mLastReportedSize.BSize(mLastReportedWM) != size.BSize(wm); -} - -void -ResizeObservation::UpdateLastReportedSize(const nsSize& aSize) { - nsIFrame* frame = mTarget->GetPrimaryFrame(); - mLastReportedWM = frame ? frame->GetWritingMode() : WritingMode(); - mLastReportedSize = LogicalSize(mLastReportedWM, aSize); -} - -ResizeObservation::~ResizeObservation() -{ -} - -} // namespace dom -} // namespace mozilla +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "mozilla/dom/ResizeObserver.h" + +#include "mozilla/dom/DOMRect.h" +#include "nsIContentInlines.h" +#include "nsIFrame.h" +#include "nsSVGUtils.h" + +namespace mozilla { +namespace dom { + +/** + * Returns the length of the parent-traversal path (in terms of the number of + * nodes) to an unparented/root node from aNode. An unparented/root node is + * considered to have a depth of 1, its children have a depth of 2, etc. + * aNode is expected to be non-null. + * Note: The shadow root is not part of the calculation because the caller, + * ResizeObserver, doesn't observe the shadow root, and only needs relative + * depths among all the observed targets. In other words, we calculate the + * depth of the flattened tree. + * + * Note: these is a spec issue about how to handle shadow DOM case. We + * may need to update this function later. + * + * + * https://drafts.csswg.org/resize-observer/#calculate-depth-for-node-h + */ +static uint32_t +GetNodeDepth(nsINode* aNode) { + uint32_t depth = 1; + + MOZ_ASSERT(aNode, "Node shouldn't be null"); + + // Use GetFlattenedTreeParentNode to bypass the shadow root and cross the + // shadow boundary to calculate the node depth without the shadow root. + while ((aNode = aNode->GetFlattenedTreeParentNode())) { + ++depth; + } + + return depth; +} + +/** + * Returns |aTarget|'s size in the form of an nsSize. + * If the target is an SVG, width and height are determined from the bounding box. + */ +static nsSize +GetTargetSize(Element* aTarget, ResizeObserverBoxOptions aBox) { + nsSize size; + nsIFrame* frame = aTarget->GetPrimaryFrame(); + + if (!frame) { + return size; + } + + if (aTarget->IsSVGElement()) { + // Per the spec, an SVG size is always its bounding box size, no matter what + // box option you choose, because SVG elements do not use the standard CSS box + // model. + gfxRect bbox = nsSVGUtils::GetBBox(frame); + size.width = NSFloatPixelsToAppUnits(bbox.width, AppUnitsPerCSSPixel()); + size.height = NSFloatPixelsToAppUnits(bbox.height, AppUnitsPerCSSPixel()); + } else { + // Per the spec, non-replaced inline Elements will always have an empty + // content rect. We therefore always use the same empty size for + // non-replaced inline elements here, and their IsActive() will + // always return false. (So its observation won't be fired.) + if (!frame->IsFrameOfType(nsIFrame::eReplaced) && + frame->IsFrameOfType(nsIFrame::eLineParticipant)) { + return size; + } + + switch (aBox) { + case ResizeObserverBoxOptions::Border_box: + // GetSize() includes the content area, borders, and padding. + size = frame->GetSize(); + break; + case ResizeObserverBoxOptions::Content_box: + default: + size = frame->GetContentRectRelativeToSelf().Size(); + } + } + + return size; +} + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserver) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY + NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_MAP_END + +NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserver) +NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserver) + +NS_IMPL_CYCLE_COLLECTION_CLASS(ResizeObserver) + +NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ResizeObserver) + NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER +NS_IMPL_CYCLE_COLLECTION_TRACE_END + +NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ResizeObserver) + NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER + NS_IMPL_CYCLE_COLLECTION_UNLINK(mOwner) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mObservationMap) +NS_IMPL_CYCLE_COLLECTION_UNLINK_END + +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ResizeObserver) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOwner) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mObservationMap) +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END + +already_AddRefed +ResizeObserver::Constructor(const GlobalObject& aGlobal, + ResizeObserverCallback& aCb, + ErrorResult& aRv) +{ + nsCOMPtr window = + do_QueryInterface(aGlobal.GetAsSupports()); + + if (!window) { + aRv.Throw(NS_ERROR_FAILURE); + return nullptr; + } + + nsCOMPtr document = window->GetExtantDoc(); + + if (!document) { + aRv.Throw(NS_ERROR_FAILURE); + return nullptr; + } + + RefPtr observer = new ResizeObserver(window.forget(), aCb); + document->AddResizeObserver(observer); + + return observer.forget(); +} + +void +ResizeObserver::Observe(Element* aTarget, + const ResizeObserverOptions& aOptions, + ErrorResult& aRv) +{ + if (!aTarget) { + aRv.Throw(NS_ERROR_DOM_NOT_FOUND_ERR); + return; + } + + RefPtr observation; + + if (!mObservationMap.Get(aTarget, getter_AddRefs(observation))) { + nsIFrame* frame = aTarget->GetPrimaryFrame(); + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + observation = new ResizeObservation(aTarget->OwnerDoc(), aTarget, aOptions.mBox, wm); + + mObservationMap.Put(aTarget, observation); + mObservationList.insertBack(observation); + + // Per the spec, we need to trigger notification in event loop that + // contains ResizeObserver observe call even when resize/reflow does + // not happen. + aTarget->OwnerDoc()->ScheduleResizeObserversNotification(); + } +} + +void +ResizeObserver::Unobserve(Element* aTarget, + ErrorResult& aRv) +{ + if (!aTarget) { + aRv.Throw(NS_ERROR_DOM_NOT_FOUND_ERR); + return; + } + + RefPtr observation; + + if (mObservationMap.Get(aTarget, getter_AddRefs(observation))) { + mObservationMap.Remove(aTarget); + + MOZ_ASSERT(!mObservationList.isEmpty(), + "If ResizeObservation found for an element, observation list " + "must be not empty."); + + observation->remove(); + } +} + +void +ResizeObserver::Disconnect() +{ + mObservationMap.Clear(); + mObservationList.clear(); + mActiveTargets.Clear(); +} + +void +ResizeObserver::GatherActiveObservations(uint32_t aDepth) +{ + mActiveTargets.Clear(); + mHasSkippedTargets = false; + + for (auto observation : mObservationList) { + if (observation->IsActive()) { + uint32_t targetDepth = GetNodeDepth(observation->Target()); + + if (targetDepth > aDepth) { + mActiveTargets.AppendElement(observation); + } else { + mHasSkippedTargets = true; + } + } + } +} + +bool +ResizeObserver::HasActiveObservations() const +{ + return !mActiveTargets.IsEmpty(); +} + +bool +ResizeObserver::HasSkippedObservations() const +{ + return mHasSkippedTargets; +} + +uint32_t +ResizeObserver::BroadcastActiveObservations() +{ + uint32_t shallowestTargetDepth = UINT32_MAX; + + if (HasActiveObservations()) { + Sequence> entries; + + for (auto observation : mActiveTargets) { + Element* target = observation->Target(); + RefPtr entry = new ResizeObserverEntry(this, target); + + nsSize borderBoxSize = GetTargetSize(target, ResizeObserverBoxOptions::Border_box); + entry->SetBorderBoxSize(borderBoxSize); + + nsSize contentBoxSize = GetTargetSize(target, ResizeObserverBoxOptions::Content_box); + entry->SetContentRectAndSize(contentBoxSize); + + if (!entries.AppendElement(entry.forget(), fallible)) { + // Out of memory. + break; + } + + // Sync the broadcast size of observation so the next size inspection + // will be based on the updated size from last delivered observations. + switch (observation->BoxOptions()) { + case ResizeObserverBoxOptions::Border_box: + observation->UpdateLastReportedSize(borderBoxSize); + break; + case ResizeObserverBoxOptions::Content_box: + default: + observation->UpdateLastReportedSize(contentBoxSize); + } + + uint32_t targetDepth = GetNodeDepth(observation->Target()); + + if (targetDepth < shallowestTargetDepth) { + shallowestTargetDepth = targetDepth; + } + } + + mCallback->Call(this, entries, *this); + mActiveTargets.Clear(); + mHasSkippedTargets = false; + } + + return shallowestTargetDepth; +} + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserverEntry) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY + NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_MAP_END + +NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserverEntry) +NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserverEntry) + +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObserverEntry, + mOwner, + mTarget, + mContentRect, + mBorderBoxSize, + mContentBoxSize) + +already_AddRefed +ResizeObserverEntry::Constructor(const GlobalObject& aGlobal, + Element* aTarget, + ErrorResult& aRv) +{ + RefPtr observerEntry = + new ResizeObserverEntry(aGlobal.GetAsSupports(), aTarget); + return observerEntry.forget(); +} + +void +ResizeObserverEntry::SetBorderBoxSize(const nsSize& aSize) { + nsIFrame* frame = mTarget->GetPrimaryFrame(); + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + mBorderBoxSize = new ResizeObserverSize(this, aSize, wm); +} + +void +ResizeObserverEntry::SetContentRectAndSize(const nsSize& aSize) { + nsIFrame* frame = mTarget->GetPrimaryFrame(); + + // Update mContentRect. + nsMargin padding = frame ? frame->GetUsedPadding(): nsMargin(); + // Per the spec, we need to use the top-left padding offset as the origin of + // our contentRect. + nsRect rect(nsPoint(padding.left, padding.top), aSize); + RefPtr contentRect = new DOMRect(mTarget); + contentRect->SetLayoutRect(rect); + mContentRect = contentRect.forget(); + + // Update mContentBoxSize. + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + mContentBoxSize = new ResizeObserverSize(this, aSize, wm); +} + +ResizeObserverEntry::~ResizeObserverEntry() +{ +} + +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObserverSize, mOwner) +NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObserverSize) +NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObserverSize) +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObserverSize) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY + NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_MAP_END + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ResizeObservation) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY + NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_MAP_END + +NS_IMPL_CYCLE_COLLECTING_ADDREF(ResizeObservation) +NS_IMPL_CYCLE_COLLECTING_RELEASE(ResizeObservation) + +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ResizeObservation, + mTarget, mOwner) + +bool +ResizeObservation::IsActive() const +{ + nsIFrame* frame = mTarget->GetPrimaryFrame(); + WritingMode wm = frame ? frame->GetWritingMode() : WritingMode(); + LogicalSize size(wm, GetTargetSize(mTarget, mObservedBox)); + return mLastReportedSize.ISize(mLastReportedWM) != size.ISize(wm) || + mLastReportedSize.BSize(mLastReportedWM) != size.BSize(wm); +} + +void +ResizeObservation::UpdateLastReportedSize(const nsSize& aSize) { + nsIFrame* frame = mTarget->GetPrimaryFrame(); + mLastReportedWM = frame ? frame->GetWritingMode() : WritingMode(); + mLastReportedSize = LogicalSize(mLastReportedWM, aSize); +} + +ResizeObservation::~ResizeObservation() +{ +} + +} // namespace dom +} // namespace mozilla diff --git a/dom/base/ResizeObserver.h b/dom/base/ResizeObserver.h index 92a7ee08cc..56675693ce 100644 --- a/dom/base/ResizeObserver.h +++ b/dom/base/ResizeObserver.h @@ -1,312 +1,312 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_dom_ResizeObserver_h -#define mozilla_dom_ResizeObserver_h - -#include "mozilla/AppUnits.h" -#include "mozilla/WritingModes.h" -#include "mozilla/dom/ResizeObserverBinding.h" -#include "nsCoord.h" - -namespace mozilla { -namespace dom { - -/** - * ResizeObserver interfaces and algorithms are based on - * https://wicg.github.io/ResizeObserver/#api - */ -class ResizeObserver final - : public nsISupports - , public nsWrapperCache -{ -public: - NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObserver) - - ResizeObserver(already_AddRefed&& aOwner, - ResizeObserverCallback& aCb) - : mOwner(aOwner) - , mCallback(&aCb) - { - MOZ_ASSERT(mOwner, "Need a non-null owner window"); - } - - static already_AddRefed - Constructor(const GlobalObject& aGlobal, - ResizeObserverCallback& aCb, - ErrorResult& aRv); - - JSObject* WrapObject(JSContext* aCx, - JS::Handle aGivenProto) override - { - return ResizeObserverBinding::Wrap(aCx, this, aGivenProto); - } - - nsISupports* GetParentObject() const - { - return mOwner; - } - - void Observe(Element* aTarget, const ResizeObserverOptions& aOptions, ErrorResult& aRv); - - void Unobserve(Element* aTarget, ErrorResult& aRv); - - void Disconnect(); - - /* - * Gather all observations which have an observed target with size changed - * since last BroadcastActiveObservations() in this ResizeObserver. - * An observation will be skipped if the depth of its observed target is less - * or equal than aDepth. All gathered observations will be added to - * mActiveTargets. - */ - void GatherActiveObservations(uint32_t aDepth); - - /* - * Returns whether this ResizeObserver has any active observations - * since last GatherActiveObservations(). - */ - bool HasActiveObservations() const; - - /* - * Returns whether this ResizeObserver has any skipped observations - * since last GatherActiveObservations(). - */ - bool HasSkippedObservations() const; - - /* - * Deliver the callback function in JavaScript for all active observations - * and pass the sequence of ResizeObserverEntry so JavaScript can access them. - * The active observations' mLastReportedSize fields will be updated, and - * mActiveTargets will be cleared. It also returns the shallowest depth of - * elements from active observations or numeric_limits::max() if - * there are not any active observations. - */ - uint32_t BroadcastActiveObservations(); - -protected: - ~ResizeObserver() - { - mObservationList.clear(); - } - - nsCOMPtr mOwner; - RefPtr mCallback; - nsTArray> mActiveTargets; - // The spec uses a list to store the skipped targets. However, it seems what - // we want is to check if there are any skipped targets (i.e. existence). - // Therefore, we use a boolean value to represent the existence of skipped - // targets. - bool mHasSkippedTargets; - - // Combination of HashTable and LinkedList so we can iterate through - // the elements of HashTable in order of insertion time. - // Will be nice if we have our own data structure for this in the future. - nsRefPtrHashtable, ResizeObservation> mObservationMap; - LinkedList mObservationList; -}; - -/** - * ResizeObserverEntry is the entry that contains the information for observed - * elements. This object is the one that visible to JavaScript in callback - * function that is fired by ResizeObserver. - */ -class ResizeObserverEntry final - : public nsISupports - , public nsWrapperCache -{ -public: - NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObserverEntry) - - ResizeObserverEntry(nsISupports* aOwner, Element* aTarget) - : mOwner(aOwner) - , mTarget(aTarget) - { - MOZ_ASSERT(mOwner, "Need a non-null owner"); - MOZ_ASSERT(mTarget, "Need a non-null target element"); - } - - static already_AddRefed - Constructor(const GlobalObject& aGlobal, - Element* aTarget, - ErrorResult& aRv); - - JSObject* WrapObject(JSContext* aCx, - JS::Handle aGivenProto) override - { - return ResizeObserverEntryBinding::Wrap(aCx, this, - aGivenProto); - } - - nsISupports* GetParentObject() const - { - return mOwner; - } - - Element* Target() const - { - return mTarget; - } - - /* - * Returns the DOMRectReadOnly of target's content rect so it can be - * accessed from JavaScript in callback function of ResizeObserver. - */ - DOMRectReadOnly* GetContentRect() const - { - return mContentRect; - } - - /** - * Returns target's logical border-box size and content-box size as - * ResizeObserverSize. - */ - ResizeObserverSize* BorderBoxSize() const { - return mBorderBoxSize; - } - ResizeObserverSize* ContentBoxSize() const { - return mContentBoxSize; - } - - // Set borderBoxSize. - void SetBorderBoxSize(const nsSize& aSize); - // Set contentRect and contentBoxSize. - void SetContentRectAndSize(const nsSize& aSize); - -protected: - ~ResizeObserverEntry(); - - nsCOMPtr mOwner; - nsCOMPtr mTarget; - - RefPtr mContentRect; - RefPtr mBorderBoxSize; - RefPtr mContentBoxSize; -}; - -class ResizeObserverSize final : public nsISupports, public nsWrapperCache { -public: - NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObserverSize) - - // Note: the unit of |aSize| is app unit, and we convert it into css pixel in - // the public JS APIs. - ResizeObserverSize(nsISupports* aOwner, const nsSize& aSize, - const WritingMode aWM) - : mOwner(aOwner), mSize(aWM, aSize), mWM(aWM) { - MOZ_ASSERT(mOwner, "Need a non-null owner"); - } - - nsISupports* GetParentObject() const { return mOwner; } - - JSObject* WrapObject(JSContext* aCx, - JS::Handle aGivenProto) override { - return ResizeObserverSizeBinding::Wrap(aCx, this, aGivenProto); - } - - double InlineSize() const { - return NSAppUnitsToDoublePixels(mSize.ISize(mWM), AppUnitsPerCSSPixel()); - } - - double BlockSize() const { - return NSAppUnitsToDoublePixels(mSize.BSize(mWM), AppUnitsPerCSSPixel()); - } - -protected: - ~ResizeObserverSize() = default; - - nsCOMPtr mOwner; - const LogicalSize mSize; - const WritingMode mWM; -}; - -/** - * We use ResizeObservation to store and sync the size information of one - * observed element so we can decide whether an observation should be fired - * or not. - */ -class ResizeObservation final - : public nsISupports - , public nsWrapperCache - , public LinkedListElement -{ -public: - NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObservation) - - ResizeObservation(nsISupports* aOwner, - Element* aTarget, - ResizeObserverBoxOptions aBox, - const WritingMode aWM) - : mOwner(aOwner) - , mTarget(aTarget) - , mObservedBox(aBox) - , mLastReportedSize(aWM) - , mLastReportedWM(aWM) - { - MOZ_ASSERT(mOwner, "Need a non-null owner"); - MOZ_ASSERT(mTarget, "Need a non-null target element"); - } - - static already_AddRefed - Constructor(const GlobalObject& aGlobal, - Element* aTarget, - ErrorResult& aRv); - - JSObject* WrapObject(JSContext* aCx, - JS::Handle aGivenProto) override - { - return ResizeObservationBinding::Wrap(aCx, this, aGivenProto); - } - - nsISupports* GetParentObject() const - { - return mOwner; - } - - Element* Target() const - { - return mTarget; - } - - ResizeObserverBoxOptions BoxOptions() const - { - return mObservedBox; - } - - /* - * Returns whether the observed target element size differs from the saved - * mLastReportedSize. - */ - bool IsActive() const; - - /* - * Update current mLastReportedSize with size from aSize. - */ - void UpdateLastReportedSize(const nsSize& aSize); - -protected: - ~ResizeObservation(); - - nsCOMPtr mOwner; - nsCOMPtr mTarget; - - const ResizeObserverBoxOptions mObservedBox; - - // The latest recorded size of observed target. - // Per the spec, observation.lastReportedSize should be entry.borderBoxSize - // or entry.contentBoxSize (i.e. logical size), instead of entry.contentRect - // (i.e. physical rect), so we store this as LogicalSize. - LogicalSize mLastReportedSize; - WritingMode mLastReportedWM; -}; - -} // namespace dom -} // namespace mozilla - -#endif // mozilla_dom_ResizeObserver_h - +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_dom_ResizeObserver_h +#define mozilla_dom_ResizeObserver_h + +#include "mozilla/AppUnits.h" +#include "mozilla/WritingModes.h" +#include "mozilla/dom/ResizeObserverBinding.h" +#include "nsCoord.h" + +namespace mozilla { +namespace dom { + +/** + * ResizeObserver interfaces and algorithms are based on + * https://wicg.github.io/ResizeObserver/#api + */ +class ResizeObserver final + : public nsISupports + , public nsWrapperCache +{ +public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObserver) + + ResizeObserver(already_AddRefed&& aOwner, + ResizeObserverCallback& aCb) + : mOwner(aOwner) + , mCallback(&aCb) + { + MOZ_ASSERT(mOwner, "Need a non-null owner window"); + } + + static already_AddRefed + Constructor(const GlobalObject& aGlobal, + ResizeObserverCallback& aCb, + ErrorResult& aRv); + + JSObject* WrapObject(JSContext* aCx, + JS::Handle aGivenProto) override + { + return ResizeObserverBinding::Wrap(aCx, this, aGivenProto); + } + + nsISupports* GetParentObject() const + { + return mOwner; + } + + void Observe(Element* aTarget, const ResizeObserverOptions& aOptions, ErrorResult& aRv); + + void Unobserve(Element* aTarget, ErrorResult& aRv); + + void Disconnect(); + + /* + * Gather all observations which have an observed target with size changed + * since last BroadcastActiveObservations() in this ResizeObserver. + * An observation will be skipped if the depth of its observed target is less + * or equal than aDepth. All gathered observations will be added to + * mActiveTargets. + */ + void GatherActiveObservations(uint32_t aDepth); + + /* + * Returns whether this ResizeObserver has any active observations + * since last GatherActiveObservations(). + */ + bool HasActiveObservations() const; + + /* + * Returns whether this ResizeObserver has any skipped observations + * since last GatherActiveObservations(). + */ + bool HasSkippedObservations() const; + + /* + * Deliver the callback function in JavaScript for all active observations + * and pass the sequence of ResizeObserverEntry so JavaScript can access them. + * The active observations' mLastReportedSize fields will be updated, and + * mActiveTargets will be cleared. It also returns the shallowest depth of + * elements from active observations or numeric_limits::max() if + * there are not any active observations. + */ + uint32_t BroadcastActiveObservations(); + +protected: + ~ResizeObserver() + { + mObservationList.clear(); + } + + nsCOMPtr mOwner; + RefPtr mCallback; + nsTArray> mActiveTargets; + // The spec uses a list to store the skipped targets. However, it seems what + // we want is to check if there are any skipped targets (i.e. existence). + // Therefore, we use a boolean value to represent the existence of skipped + // targets. + bool mHasSkippedTargets; + + // Combination of HashTable and LinkedList so we can iterate through + // the elements of HashTable in order of insertion time. + // Will be nice if we have our own data structure for this in the future. + nsRefPtrHashtable, ResizeObservation> mObservationMap; + LinkedList mObservationList; +}; + +/** + * ResizeObserverEntry is the entry that contains the information for observed + * elements. This object is the one that visible to JavaScript in callback + * function that is fired by ResizeObserver. + */ +class ResizeObserverEntry final + : public nsISupports + , public nsWrapperCache +{ +public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObserverEntry) + + ResizeObserverEntry(nsISupports* aOwner, Element* aTarget) + : mOwner(aOwner) + , mTarget(aTarget) + { + MOZ_ASSERT(mOwner, "Need a non-null owner"); + MOZ_ASSERT(mTarget, "Need a non-null target element"); + } + + static already_AddRefed + Constructor(const GlobalObject& aGlobal, + Element* aTarget, + ErrorResult& aRv); + + JSObject* WrapObject(JSContext* aCx, + JS::Handle aGivenProto) override + { + return ResizeObserverEntryBinding::Wrap(aCx, this, + aGivenProto); + } + + nsISupports* GetParentObject() const + { + return mOwner; + } + + Element* Target() const + { + return mTarget; + } + + /* + * Returns the DOMRectReadOnly of target's content rect so it can be + * accessed from JavaScript in callback function of ResizeObserver. + */ + DOMRectReadOnly* GetContentRect() const + { + return mContentRect; + } + + /** + * Returns target's logical border-box size and content-box size as + * ResizeObserverSize. + */ + ResizeObserverSize* BorderBoxSize() const { + return mBorderBoxSize; + } + ResizeObserverSize* ContentBoxSize() const { + return mContentBoxSize; + } + + // Set borderBoxSize. + void SetBorderBoxSize(const nsSize& aSize); + // Set contentRect and contentBoxSize. + void SetContentRectAndSize(const nsSize& aSize); + +protected: + ~ResizeObserverEntry(); + + nsCOMPtr mOwner; + nsCOMPtr mTarget; + + RefPtr mContentRect; + RefPtr mBorderBoxSize; + RefPtr mContentBoxSize; +}; + +class ResizeObserverSize final : public nsISupports, public nsWrapperCache { +public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObserverSize) + + // Note: the unit of |aSize| is app unit, and we convert it into css pixel in + // the public JS APIs. + ResizeObserverSize(nsISupports* aOwner, const nsSize& aSize, + const WritingMode aWM) + : mOwner(aOwner), mSize(aWM, aSize), mWM(aWM) { + MOZ_ASSERT(mOwner, "Need a non-null owner"); + } + + nsISupports* GetParentObject() const { return mOwner; } + + JSObject* WrapObject(JSContext* aCx, + JS::Handle aGivenProto) override { + return ResizeObserverSizeBinding::Wrap(aCx, this, aGivenProto); + } + + double InlineSize() const { + return NSAppUnitsToDoublePixels(mSize.ISize(mWM), AppUnitsPerCSSPixel()); + } + + double BlockSize() const { + return NSAppUnitsToDoublePixels(mSize.BSize(mWM), AppUnitsPerCSSPixel()); + } + +protected: + ~ResizeObserverSize() = default; + + nsCOMPtr mOwner; + const LogicalSize mSize; + const WritingMode mWM; +}; + +/** + * We use ResizeObservation to store and sync the size information of one + * observed element so we can decide whether an observation should be fired + * or not. + */ +class ResizeObservation final + : public nsISupports + , public nsWrapperCache + , public LinkedListElement +{ +public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ResizeObservation) + + ResizeObservation(nsISupports* aOwner, + Element* aTarget, + ResizeObserverBoxOptions aBox, + const WritingMode aWM) + : mOwner(aOwner) + , mTarget(aTarget) + , mObservedBox(aBox) + , mLastReportedSize(aWM) + , mLastReportedWM(aWM) + { + MOZ_ASSERT(mOwner, "Need a non-null owner"); + MOZ_ASSERT(mTarget, "Need a non-null target element"); + } + + static already_AddRefed + Constructor(const GlobalObject& aGlobal, + Element* aTarget, + ErrorResult& aRv); + + JSObject* WrapObject(JSContext* aCx, + JS::Handle aGivenProto) override + { + return ResizeObservationBinding::Wrap(aCx, this, aGivenProto); + } + + nsISupports* GetParentObject() const + { + return mOwner; + } + + Element* Target() const + { + return mTarget; + } + + ResizeObserverBoxOptions BoxOptions() const + { + return mObservedBox; + } + + /* + * Returns whether the observed target element size differs from the saved + * mLastReportedSize. + */ + bool IsActive() const; + + /* + * Update current mLastReportedSize with size from aSize. + */ + void UpdateLastReportedSize(const nsSize& aSize); + +protected: + ~ResizeObservation(); + + nsCOMPtr mOwner; + nsCOMPtr mTarget; + + const ResizeObserverBoxOptions mObservedBox; + + // The latest recorded size of observed target. + // Per the spec, observation.lastReportedSize should be entry.borderBoxSize + // or entry.contentBoxSize (i.e. logical size), instead of entry.contentRect + // (i.e. physical rect), so we store this as LogicalSize. + LogicalSize mLastReportedSize; + WritingMode mLastReportedWM; +}; + +} // namespace dom +} // namespace mozilla + +#endif // mozilla_dom_ResizeObserver_h + diff --git a/dom/base/ResizeObserverController.h b/dom/base/ResizeObserverController.h index 01169112aa..346d5ab93f 100644 --- a/dom/base/ResizeObserverController.h +++ b/dom/base/ResizeObserverController.h @@ -41,9 +41,9 @@ public: void Disconnect(); - bool IsRegistered() const { return mRegistered; } - - void DetachFromOwner() { mOwner = nullptr; } + bool IsRegistered() const { return mRegistered; } + + void DetachFromOwner() { mOwner = nullptr; } protected: virtual ~ResizeObserverNotificationHelper(); From ba00d14c1257737c8cf2653f815a7c0858821b87 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Mon, 21 Jun 2021 17:52:42 +0000 Subject: [PATCH 7/9] Issue #1751 - Remove Mac code behind MOZ_WIDGET_TOOLKIT == 'cocoa' --- accessible/base/moz.build | 4 - accessible/generic/moz.build | 4 - accessible/html/moz.build | 4 - accessible/ipc/moz.build | 4 - accessible/ipc/other/moz.build | 4 - accessible/mac/ARIAGridAccessibleWrap.h | 22 - accessible/mac/AccessibleWrap.h | 103 -- accessible/mac/AccessibleWrap.mm | 256 ---- accessible/mac/ApplicationAccessibleWrap.h | 22 - accessible/mac/DocAccessibleWrap.h | 25 - accessible/mac/DocAccessibleWrap.mm | 21 - accessible/mac/HTMLTableAccessibleWrap.h | 24 - accessible/mac/HyperTextAccessibleWrap.h | 20 - accessible/mac/ImageAccessibleWrap.h | 22 - accessible/mac/MacUtils.h | 26 - accessible/mac/MacUtils.mm | 32 - accessible/mac/Platform.mm | 174 --- accessible/mac/RootAccessibleWrap.h | 34 - accessible/mac/RootAccessibleWrap.mm | 53 - accessible/mac/TextLeafAccessibleWrap.h | 19 - accessible/mac/XULListboxAccessibleWrap.h | 20 - accessible/mac/XULMenuAccessibleWrap.h | 19 - accessible/mac/XULTreeGridAccessibleWrap.h | 20 - accessible/mac/moz.build | 44 - accessible/mac/mozAccessible.h | 181 --- accessible/mac/mozAccessible.mm | 1200 ----------------- accessible/mac/mozAccessibleProtocol.h | 69 - accessible/mac/mozActionElements.h | 37 - accessible/mac/mozActionElements.mm | 340 ----- accessible/mac/mozDocAccessible.h | 31 - accessible/mac/mozDocAccessible.mm | 111 -- accessible/mac/mozHTMLAccessible.h | 16 - accessible/mac/mozHTMLAccessible.mm | 141 -- accessible/mac/mozTableAccessible.h | 28 - accessible/mac/mozTableAccessible.mm | 281 ---- accessible/mac/mozTextAccessible.h | 17 - accessible/mac/mozTextAccessible.mm | 627 --------- accessible/moz.build | 2 - accessible/xpcom/moz.build | 4 - accessible/xul/moz.build | 4 - application/xulrunner/stub/moz.build | 7 - build/gyp.mozbuild | 1 - db/sqlite3/src/moz.build | 4 - embedding/components/build/moz.build | 5 - embedding/components/printingui/mac/moz.build | 15 - .../printingui/mac/nsPrintProgress.cpp | 213 --- .../printingui/mac/nsPrintProgress.h | 44 - .../printingui/mac/nsPrintProgressParams.cpp | 47 - .../printingui/mac/nsPrintProgressParams.h | 28 - .../printingui/mac/nsPrintingPromptService.h | 43 - .../mac/nsPrintingPromptServiceX.mm | 128 -- embedding/components/printingui/moz.build | 2 - gfx/cairo/cairo/src/moz.build | 4 +- .../basic/MacIOSurfaceTextureHostBasic.cpp | 107 -- .../basic/MacIOSurfaceTextureHostBasic.h | 97 -- gfx/layers/ipc/ShadowLayerUtilsMac.cpp | 40 - gfx/layers/moz.build | 25 - gfx/layers/opengl/GLManager.cpp | 70 - gfx/layers/opengl/GLManager.h | 44 - .../opengl/MacIOSurfaceTextureClientOGL.cpp | 140 -- .../opengl/MacIOSurfaceTextureClientOGL.h | 58 - .../opengl/MacIOSurfaceTextureHostOGL.cpp | 180 --- .../opengl/MacIOSurfaceTextureHostOGL.h | 114 -- gfx/skia/generate_mozbuild.py | 3 +- gfx/skia/moz.build | 3 +- image/decoders/icon/mac/moz.build | 10 - image/decoders/icon/mac/nsIconChannel.h | 59 - image/decoders/icon/mac/nsIconChannelCocoa.mm | 565 -------- image/decoders/icon/moz.build | 3 - image/decoders/moz.build | 3 - intl/locale/mac/moz.build | 15 - intl/locale/mac/nsCollationMacUC.cpp | 253 ---- intl/locale/mac/nsCollationMacUC.h | 44 - intl/locale/mac/nsDateTimeFormatMac.cpp | 266 ---- intl/locale/mac/nsDateTimeFormatMac.h | 61 - intl/locale/mac/nsMacCharset.cpp | 59 - intl/locale/moz.build | 2 - intl/lwbrk/moz.build | 4 - intl/lwbrk/nsCarbonBreaker.cpp | 44 - js/xpconnect/shell/moz.build | 5 - js/xpconnect/shell/xpcshellMacUtils.h | 8 - js/xpconnect/shell/xpcshellMacUtils.mm | 18 - layout/build/moz.build | 4 - layout/reftests/reftest.list | 3 - mailnews/base/ispdata/moz.build | 4 +- mailnews/base/src/moz.build | 2 - mailnews/base/src/nsMessengerOSXIntegration.h | 63 - .../base/src/nsMessengerOSXIntegration.mm | 700 ---------- mailnews/build/moz.build | 4 - mailnews/compose/src/moz.build | 10 - mailnews/compose/src/nsMsgAppleCodes.h | 106 -- mailnews/compose/src/nsMsgAppleDouble.h | 207 --- .../compose/src/nsMsgAppleDoubleEncode.cpp | 266 ---- mailnews/compose/src/nsMsgAppleEncode.cpp | 703 ---------- mailnews/import/build/moz.build | 7 - media/libcubeb/src/cubeb_osx_run_loop.c | 11 - media/libcubeb/src/cubeb_osx_run_loop.h | 22 - media/libcubeb/src/moz.build | 4 - netwerk/base/NetworkInfoServiceCocoa.cpp | 103 -- netwerk/base/moz.build | 9 - netwerk/base/nsURLHelperOSX.cpp | 216 --- netwerk/build/moz.build | 7 +- .../mdns/libmdns/MDNSResponderOperator.cpp | 779 ----------- .../dns/mdns/libmdns/MDNSResponderOperator.h | 152 --- .../dns/mdns/libmdns/MDNSResponderReply.cpp | 302 ----- netwerk/dns/mdns/libmdns/MDNSResponderReply.h | 164 --- netwerk/dns/mdns/libmdns/moz.build | 38 +- .../mdns/libmdns/nsDNSServiceDiscovery.cpp | 262 ---- .../dns/mdns/libmdns/nsDNSServiceDiscovery.h | 49 - netwerk/streamconv/converters/moz.build | 6 +- netwerk/system/mac/moz.build | 13 - netwerk/system/mac/nsNetworkLinkService.h | 54 - netwerk/system/mac/nsNetworkLinkService.mm | 526 -------- netwerk/system/moz.build | 2 - toolkit/components/parentalcontrols/moz.build | 2 - .../nsParentalControlsServiceCocoa.mm | 79 -- toolkit/components/startup/moz.build | 6 +- toolkit/components/startup/nsUserInfoMac.h | 25 - toolkit/components/startup/nsUserInfoMac.mm | 84 -- toolkit/library/moz.build | 42 +- toolkit/modules/moz.build | 2 +- toolkit/moz.build | 2 - toolkit/moz.configure | 8 +- toolkit/mozapps/update/updater/Makefile.in | 13 - .../mozapps/update/updater/launchchild_osx.mm | 384 ------ .../updater/macbuild/Contents/Info.plist.in | 39 - .../update/updater/macbuild/Contents/PkgInfo | 1 - .../English.lproj/InfoPlist.strings.in | 7 - .../English.lproj/MainMenu.nib/classes.nib | 19 - .../English.lproj/MainMenu.nib/info.nib | 22 - .../MainMenu.nib/keyedobjects.nib | Bin 5567 -> 0 bytes .../macbuild/Contents/Resources/updater.icns | Bin 55969 -> 0 bytes toolkit/mozapps/update/updater/moz.build | 15 +- .../mozapps/update/updater/progressui_osx.mm | 144 -- .../update/updater/updater-common.build | 18 - toolkit/system/osxproxy/ProxyUtils.h | 21 - toolkit/system/osxproxy/ProxyUtils.mm | 182 --- toolkit/system/osxproxy/moz.build | 13 - .../osxproxy/nsOSXSystemProxySettings.mm | 326 ----- .../tests/gtest/TestProxyBypassRules.cpp | 41 - toolkit/system/osxproxy/tests/gtest/moz.build | 17 - toolkit/themes/moz.build | 4 +- .../osx/global/10pct_transparent_grey.png | Bin 123 -> 0 bytes .../osx/global/50pct_transparent_grey.png | Bin 107 -> 0 bytes toolkit/themes/osx/global/alerts/alert.css | 30 - toolkit/themes/osx/global/arrow.css | 38 - .../themes/osx/global/arrow/arrow-dn-dis.gif | Bin 65 -> 0 bytes .../themes/osx/global/arrow/arrow-dn-dis.png | Bin 185 -> 0 bytes .../osx/global/arrow/arrow-dn-sharp.gif | Bin 51 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-dn.gif | Bin 56 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-dn.png | Bin 191 -> 0 bytes .../themes/osx/global/arrow/arrow-lft-dis.gif | Bin 105 -> 0 bytes .../themes/osx/global/arrow/arrow-lft-hov.gif | Bin 57 -> 0 bytes .../osx/global/arrow/arrow-lft-sharp-end.gif | Bin 56 -> 0 bytes .../osx/global/arrow/arrow-lft-sharp.gif | Bin 53 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-lft.gif | Bin 57 -> 0 bytes .../themes/osx/global/arrow/arrow-rit-dis.gif | Bin 105 -> 0 bytes .../themes/osx/global/arrow/arrow-rit-hov.gif | Bin 57 -> 0 bytes .../osx/global/arrow/arrow-rit-sharp-end.gif | Bin 56 -> 0 bytes .../osx/global/arrow/arrow-rit-sharp.gif | Bin 53 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-rit.gif | Bin 57 -> 0 bytes .../themes/osx/global/arrow/arrow-up-dis.gif | Bin 65 -> 0 bytes .../osx/global/arrow/arrow-up-sharp.gif | Bin 52 -> 0 bytes toolkit/themes/osx/global/arrow/arrow-up.gif | Bin 56 -> 0 bytes .../global/arrow/panelarrow-horizontal.png | Bin 117 -> 0 bytes .../global/arrow/panelarrow-horizontal@2x.png | Bin 267 -> 0 bytes .../osx/global/arrow/panelarrow-vertical.png | Bin 133 -> 0 bytes .../global/arrow/panelarrow-vertical@2x.png | Bin 227 -> 0 bytes toolkit/themes/osx/global/autocomplete.css | 174 --- toolkit/themes/osx/global/button.css | 85 -- toolkit/themes/osx/global/checkbox.css | 39 - .../osx/global/checkbox/cbox-check-dis.gif | Bin 60 -> 0 bytes .../themes/osx/global/checkbox/cbox-check.gif | Bin 54 -> 0 bytes toolkit/themes/osx/global/colorpicker.css | 41 - toolkit/themes/osx/global/commonDialog.css | 35 - .../global/console/console-error-caret.gif | Bin 55 -> 0 bytes .../osx/global/console/console-error-dash.gif | Bin 48 -> 0 bytes toolkit/themes/osx/global/console/console.css | 165 --- .../themes/osx/global/customizeToolbar.css | 38 - toolkit/themes/osx/global/datetimepicker.css | 126 -- toolkit/themes/osx/global/dialog.css | 77 -- .../osx/global/dirListing/dirListing.css | 104 -- .../themes/osx/global/dirListing/folder.png | Bin 325 -> 0 bytes .../themes/osx/global/dirListing/remote.png | Bin 563 -> 0 bytes toolkit/themes/osx/global/dirListing/up.png | Bin 617 -> 0 bytes toolkit/themes/osx/global/dropmarker.css | 31 - toolkit/themes/osx/global/filefield.css | 38 - toolkit/themes/osx/global/filters.svg | 14 - toolkit/themes/osx/global/findBar.css | 270 ---- toolkit/themes/osx/global/global.css | 378 ------ toolkit/themes/osx/global/groupbox.css | 30 - toolkit/themes/osx/global/icons/Error.png | Bin 1439 -> 0 bytes .../global/icons/autocomplete-dropmarker.png | Bin 234 -> 0 bytes .../osx/global/icons/autocomplete-search.svg | 22 - .../themes/osx/global/icons/autoscroll.png | Bin 2983 -> 0 bytes .../themes/osx/global/icons/blacklist_64.png | Bin 3771 -> 0 bytes .../osx/global/icons/blacklist_favicon.png | Bin 543 -> 0 bytes toolkit/themes/osx/global/icons/checkbox.png | Bin 1737 -> 0 bytes .../themes/osx/global/icons/checkbox@2x.png | Bin 1824 -> 0 bytes .../osx/global/icons/chevron-inverted.png | Bin 247 -> 0 bytes .../osx/global/icons/chevron-inverted@2x.png | Bin 481 -> 0 bytes toolkit/themes/osx/global/icons/chevron.png | Bin 251 -> 0 bytes .../themes/osx/global/icons/chevron@2x.png | Bin 462 -> 0 bytes toolkit/themes/osx/global/icons/close.png | Bin 1240 -> 0 bytes toolkit/themes/osx/global/icons/close@2x.png | Bin 2768 -> 0 bytes toolkit/themes/osx/global/icons/error-16.png | Bin 677 -> 0 bytes toolkit/themes/osx/global/icons/error-64.png | Bin 2533 -> 0 bytes .../themes/osx/global/icons/error-large.png | Bin 1996 -> 0 bytes .../osx/global/icons/glyph-dropdown.png | Bin 99 -> 0 bytes .../osx/global/icons/glyph-dropdown@2x.png | Bin 130 -> 0 bytes .../osx/global/icons/information-16.png | Bin 818 -> 0 bytes .../osx/global/icons/information-24.png | Bin 1289 -> 0 bytes .../osx/global/icons/information-32.png | Bin 1773 -> 0 bytes .../osx/global/icons/information-64.png | Bin 3687 -> 0 bytes .../osx/global/icons/information-large.png | Bin 2592 -> 0 bytes .../themes/osx/global/icons/loading_16.png | Bin 9025 -> 0 bytes .../osx/global/icons/menulist-dropmarker.png | Bin 158 -> 0 bytes toolkit/themes/osx/global/icons/notfound.png | Bin 597 -> 0 bytes .../themes/osx/global/icons/notloading_16.png | Bin 686 -> 0 bytes .../osx/global/icons/panebutton-active.png | Bin 400 -> 0 bytes .../osx/global/icons/panebutton-inactive.png | Bin 257 -> 0 bytes .../osx/global/icons/panel-dropmarker.png | Bin 161 -> 0 bytes .../themes/osx/global/icons/question-16.png | Bin 866 -> 0 bytes .../themes/osx/global/icons/question-32.png | Bin 1962 -> 0 bytes .../themes/osx/global/icons/question-64.png | Bin 3970 -> 0 bytes .../osx/global/icons/question-large.png | Bin 2851 -> 0 bytes .../themes/osx/global/icons/resizer-rtl.png | Bin 192 -> 0 bytes .../osx/global/icons/resizer-rtl@2x.png | Bin 284 -> 0 bytes toolkit/themes/osx/global/icons/resizer.png | Bin 196 -> 0 bytes .../themes/osx/global/icons/resizer@2x.png | Bin 288 -> 0 bytes .../osx/global/icons/search-textbox.svg | 13 - .../osx/global/icons/searchfield-cancel.svg | 20 - .../themes/osx/global/icons/sslWarning.png | Bin 4120 -> 0 bytes .../osx/global/icons/tabprompts-bgtexture.png | Bin 5940 -> 0 bytes .../themes/osx/global/icons/warning-16.png | Bin 690 -> 0 bytes .../themes/osx/global/icons/warning-32.png | Bin 1483 -> 0 bytes .../themes/osx/global/icons/warning-64.png | Bin 3308 -> 0 bytes .../themes/osx/global/icons/warning-large.png | Bin 2281 -> 0 bytes .../themes/osx/global/in-content/common.css | 121 -- .../osx/global/in-content/info-pages.css | 1 - toolkit/themes/osx/global/inContentUI.css | 144 -- toolkit/themes/osx/global/jar.mn | 156 --- toolkit/themes/osx/global/linkTree.css | 32 - toolkit/themes/osx/global/listbox.css | 113 -- toolkit/themes/osx/global/menu.css | 187 --- toolkit/themes/osx/global/menulist.css | 65 - toolkit/themes/osx/global/moz.build | 6 - .../themes/osx/global/nativescrollbars.css | 89 -- toolkit/themes/osx/global/netError.css | 145 -- toolkit/themes/osx/global/notification.css | 206 --- .../themes/osx/global/notification/close.png | Bin 795 -> 0 bytes .../osx/global/notification/error-icon.png | Bin 518 -> 0 bytes .../osx/global/notification/info-icon.png | Bin 533 -> 0 bytes .../osx/global/notification/warning-icon.png | Bin 626 -> 0 bytes toolkit/themes/osx/global/numberbox.css | 33 - toolkit/themes/osx/global/popup.css | 141 -- toolkit/themes/osx/global/preferences.css | 64 - toolkit/themes/osx/global/progressmeter.css | 22 - toolkit/themes/osx/global/radio.css | 43 - toolkit/themes/osx/global/resizer.css | 69 - toolkit/themes/osx/global/richlistbox.css | 27 - toolkit/themes/osx/global/scale.css | 46 - .../osx/global/scale/scale-tray-horiz.gif | Bin 50 -> 0 bytes .../osx/global/scale/scale-tray-vert.gif | Bin 50 -> 0 bytes toolkit/themes/osx/global/scrollbox.css | 62 - toolkit/themes/osx/global/shared.inc | 20 - toolkit/themes/osx/global/spinbuttons.css | 31 - toolkit/themes/osx/global/splitter.css | 124 -- toolkit/themes/osx/global/splitter/dimple.png | Bin 155 -> 0 bytes .../osx/global/splitter/grip-bottom.gif | Bin 145 -> 0 bytes .../themes/osx/global/splitter/grip-left.gif | Bin 157 -> 0 bytes .../themes/osx/global/splitter/grip-right.gif | Bin 157 -> 0 bytes .../themes/osx/global/splitter/grip-top.gif | Bin 144 -> 0 bytes toolkit/themes/osx/global/tabbox.css | 148 -- toolkit/themes/osx/global/tabprompts.css | 67 - toolkit/themes/osx/global/textbox.css | 102 -- toolkit/themes/osx/global/toolbar.css | 127 -- toolkit/themes/osx/global/toolbar/spring.png | Bin 239 -> 0 bytes .../osx/global/toolbar/toolbar-separator.png | Bin 115 -> 0 bytes toolkit/themes/osx/global/toolbarbutton.css | 124 -- toolkit/themes/osx/global/tree.css | 296 ---- .../osx/global/tree/arrow-disclosure.svg | 28 - .../themes/osx/global/tree/columnpicker.gif | Bin 68 -> 0 bytes toolkit/themes/osx/global/tree/folder.png | Bin 320 -> 0 bytes toolkit/themes/osx/global/tree/folder@2x.png | Bin 589 -> 0 bytes toolkit/themes/osx/global/viewbuttons.css | 36 - toolkit/themes/osx/global/wizard.css | 62 - toolkit/themes/osx/mochitests/.eslintrc.js | 7 - toolkit/themes/osx/mochitests/chrome.ini | 3 - .../themes/osx/mochitests/test_bug510426.xul | 54 - toolkit/themes/osx/moz.build | 8 - .../themes/osx/mozapps/downloads/buttons.png | Bin 2288 -> 0 bytes .../osx/mozapps/downloads/downloadIcon.png | Bin 1301 -> 0 bytes .../osx/mozapps/downloads/downloads.css | 123 -- .../mozapps/downloads/unknownContentType.css | 30 - .../themes/osx/mozapps/extensions/about.css | 78 -- .../mozapps/extensions/alerticon-error.png | Bin 3402 -> 0 bytes .../extensions/alerticon-info-negative.png | Bin 1564 -> 0 bytes .../extensions/alerticon-info-positive.png | Bin 1338 -> 0 bytes .../mozapps/extensions/alerticon-warning.png | Bin 1567 -> 0 bytes .../osx/mozapps/extensions/blocklist.css | 20 - .../themes/osx/mozapps/extensions/cancel.png | Bin 115 -> 0 bytes .../mozapps/extensions/category-available.png | Bin 1671 -> 0 bytes .../extensions/category-dictionaries.png | Bin 1769 -> 0 bytes .../mozapps/extensions/category-discover.png | Bin 1324 -> 0 bytes .../extensions/category-experiments.png | Bin 822 -> 0 bytes .../mozapps/extensions/category-plugins.png | Bin 886 -> 0 bytes .../mozapps/extensions/category-recent.png | Bin 1642 -> 0 bytes .../mozapps/extensions/category-search.png | Bin 2600 -> 0 bytes .../extensions/category-searchengines.png | Bin 2814 -> 0 bytes .../mozapps/extensions/category-service.png | Bin 2063 -> 0 bytes .../extensions/dictionaryGeneric-16.png | Bin 742 -> 0 bytes .../mozapps/extensions/dictionaryGeneric.png | Bin 1769 -> 0 bytes .../osx/mozapps/extensions/discover-logo.png | Bin 12007 -> 0 bytes .../themes/osx/mozapps/extensions/eula.css | 47 - .../mozapps/extensions/experimentGeneric.png | Bin 822 -> 0 bytes .../extensions/extensionGeneric-16.png | Bin 554 -> 0 bytes .../mozapps/extensions/extensionGeneric.png | Bin 1302 -> 0 bytes .../osx/mozapps/extensions/extensions.css | 1199 ---------------- .../themes/osx/mozapps/extensions/heart.png | Bin 2949 -> 0 bytes .../osx/mozapps/extensions/localeGeneric.png | Bin 2410 -> 0 bytes .../osx/mozapps/extensions/navigation.png | Bin 586 -> 0 bytes .../osx/mozapps/extensions/newaddon.css | 112 -- .../osx/mozapps/extensions/rating-not-won.png | Bin 1559 -> 0 bytes .../osx/mozapps/extensions/rating-won.png | Bin 1662 -> 0 bytes .../themes/osx/mozapps/extensions/search.png | Bin 423 -> 0 bytes .../osx/mozapps/extensions/selectAddons.css | 163 --- .../osx/mozapps/extensions/stripes-error.png | Bin 1979 -> 0 bytes .../extensions/stripes-info-negative.png | Bin 2027 -> 0 bytes .../extensions/stripes-info-positive.png | Bin 1852 -> 0 bytes .../mozapps/extensions/stripes-warning.png | Bin 2177 -> 0 bytes .../mozapps/extensions/themeGeneric-16.png | Bin 710 -> 0 bytes .../osx/mozapps/extensions/themeGeneric.png | Bin 2185 -> 0 bytes .../extensions/toolbarbutton-dropmarker.png | Bin 147 -> 0 bytes .../themes/osx/mozapps/extensions/update.css | 26 - .../mozapps/extensions/xpinstallConfirm.css | 90 -- .../themes/osx/mozapps/handling/handling.css | 30 - toolkit/themes/osx/mozapps/jar.mn | 119 -- toolkit/themes/osx/mozapps/moz.build | 6 - .../themes/osx/mozapps/passwordmgr/key-16.png | Bin 773 -> 0 bytes .../themes/osx/mozapps/passwordmgr/key-64.png | Bin 6142 -> 0 bytes .../themes/osx/mozapps/passwordmgr/key.png | Bin 658 -> 0 bytes .../mozapps/plugins/notifyPluginGeneric.png | Bin 313 -> 0 bytes .../osx/mozapps/plugins/pluginBlocked-64.png | Bin 4563 -> 0 bytes .../osx/mozapps/plugins/pluginBlocked.png | Bin 2152 -> 0 bytes .../osx/mozapps/plugins/pluginGeneric-16.png | Bin 759 -> 0 bytes .../osx/mozapps/plugins/pluginGeneric.png | Bin 1939 -> 0 bytes .../osx/mozapps/plugins/pluginHelp-16.png | Bin 620 -> 0 bytes .../osx/mozapps/profile/profileSelection.css | 29 - .../mozapps/profile/profileicon-selected.png | Bin 502 -> 0 bytes .../osx/mozapps/profile/profileicon.png | Bin 588 -> 0 bytes toolkit/themes/osx/mozapps/update/buttons.png | Bin 2288 -> 0 bytes toolkit/themes/osx/mozapps/update/updates.css | 171 --- .../osx/mozapps/viewsource/viewsource.css | 5 - toolkit/themes/osx/reftests/482681-ref.xul | 21 - toolkit/themes/osx/reftests/482681.xul | 22 - toolkit/themes/osx/reftests/baseline.xul | 175 --- .../themes/osx/reftests/checkboxsize-ref.xul | 32 - toolkit/themes/osx/reftests/checkboxsize.xul | 31 - toolkit/themes/osx/reftests/nostretch-ref.xul | 107 -- toolkit/themes/osx/reftests/nostretch.xul | 120 -- toolkit/themes/osx/reftests/radiosize-ref.xul | 32 - toolkit/themes/osx/reftests/radiosize.xul | 31 - .../themes/osx/reftests/reftest-stylo.list | 6 - toolkit/themes/osx/reftests/reftest.list | 5 - toolkit/xre/MacApplicationDelegate.h | 16 - toolkit/xre/MacApplicationDelegate.mm | 396 ------ toolkit/xre/MacAutoreleasePool.h | 31 - toolkit/xre/MacAutoreleasePool.mm | 20 - toolkit/xre/MacLaunchHelper.h | 23 - toolkit/xre/MacLaunchHelper.mm | 137 -- toolkit/xre/moz.build | 15 - .../exthandler/mac/nsDecodeAppleFile.cpp | 389 ------ uriloader/exthandler/mac/nsDecodeAppleFile.h | 118 -- .../exthandler/mac/nsLocalHandlerAppMac.h | 26 - .../exthandler/mac/nsLocalHandlerAppMac.mm | 84 -- uriloader/exthandler/mac/nsMIMEInfoMac.h | 34 - uriloader/exthandler/mac/nsMIMEInfoMac.mm | 114 -- .../exthandler/mac/nsOSHelperAppService.h | 48 - .../exthandler/mac/nsOSHelperAppService.mm | 569 -------- uriloader/exthandler/moz.build | 10 +- xpcom/build/moz.build | 3 - 382 files changed, 36 insertions(+), 22824 deletions(-) delete mode 100644 accessible/mac/ARIAGridAccessibleWrap.h delete mode 100644 accessible/mac/AccessibleWrap.h delete mode 100644 accessible/mac/AccessibleWrap.mm delete mode 100644 accessible/mac/ApplicationAccessibleWrap.h delete mode 100644 accessible/mac/DocAccessibleWrap.h delete mode 100644 accessible/mac/DocAccessibleWrap.mm delete mode 100644 accessible/mac/HTMLTableAccessibleWrap.h delete mode 100644 accessible/mac/HyperTextAccessibleWrap.h delete mode 100644 accessible/mac/ImageAccessibleWrap.h delete mode 100644 accessible/mac/MacUtils.h delete mode 100644 accessible/mac/MacUtils.mm delete mode 100644 accessible/mac/Platform.mm delete mode 100644 accessible/mac/RootAccessibleWrap.h delete mode 100644 accessible/mac/RootAccessibleWrap.mm delete mode 100644 accessible/mac/TextLeafAccessibleWrap.h delete mode 100644 accessible/mac/XULListboxAccessibleWrap.h delete mode 100644 accessible/mac/XULMenuAccessibleWrap.h delete mode 100644 accessible/mac/XULTreeGridAccessibleWrap.h delete mode 100644 accessible/mac/moz.build delete mode 100644 accessible/mac/mozAccessible.h delete mode 100644 accessible/mac/mozAccessible.mm delete mode 100644 accessible/mac/mozAccessibleProtocol.h delete mode 100644 accessible/mac/mozActionElements.h delete mode 100644 accessible/mac/mozActionElements.mm delete mode 100644 accessible/mac/mozDocAccessible.h delete mode 100644 accessible/mac/mozDocAccessible.mm delete mode 100644 accessible/mac/mozHTMLAccessible.h delete mode 100644 accessible/mac/mozHTMLAccessible.mm delete mode 100644 accessible/mac/mozTableAccessible.h delete mode 100644 accessible/mac/mozTableAccessible.mm delete mode 100644 accessible/mac/mozTextAccessible.h delete mode 100644 accessible/mac/mozTextAccessible.mm delete mode 100644 embedding/components/printingui/mac/moz.build delete mode 100644 embedding/components/printingui/mac/nsPrintProgress.cpp delete mode 100644 embedding/components/printingui/mac/nsPrintProgress.h delete mode 100644 embedding/components/printingui/mac/nsPrintProgressParams.cpp delete mode 100644 embedding/components/printingui/mac/nsPrintProgressParams.h delete mode 100644 embedding/components/printingui/mac/nsPrintingPromptService.h delete mode 100644 embedding/components/printingui/mac/nsPrintingPromptServiceX.mm delete mode 100644 gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp delete mode 100644 gfx/layers/basic/MacIOSurfaceTextureHostBasic.h delete mode 100644 gfx/layers/ipc/ShadowLayerUtilsMac.cpp delete mode 100644 gfx/layers/opengl/GLManager.cpp delete mode 100644 gfx/layers/opengl/GLManager.h delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp delete mode 100644 gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h delete mode 100644 image/decoders/icon/mac/moz.build delete mode 100644 image/decoders/icon/mac/nsIconChannel.h delete mode 100644 image/decoders/icon/mac/nsIconChannelCocoa.mm delete mode 100644 intl/locale/mac/moz.build delete mode 100644 intl/locale/mac/nsCollationMacUC.cpp delete mode 100644 intl/locale/mac/nsCollationMacUC.h delete mode 100644 intl/locale/mac/nsDateTimeFormatMac.cpp delete mode 100644 intl/locale/mac/nsDateTimeFormatMac.h delete mode 100644 intl/locale/mac/nsMacCharset.cpp delete mode 100644 intl/lwbrk/nsCarbonBreaker.cpp delete mode 100644 js/xpconnect/shell/xpcshellMacUtils.h delete mode 100644 js/xpconnect/shell/xpcshellMacUtils.mm delete mode 100644 mailnews/base/src/nsMessengerOSXIntegration.h delete mode 100644 mailnews/base/src/nsMessengerOSXIntegration.mm delete mode 100644 mailnews/compose/src/nsMsgAppleCodes.h delete mode 100644 mailnews/compose/src/nsMsgAppleDouble.h delete mode 100644 mailnews/compose/src/nsMsgAppleDoubleEncode.cpp delete mode 100644 mailnews/compose/src/nsMsgAppleEncode.cpp delete mode 100644 media/libcubeb/src/cubeb_osx_run_loop.c delete mode 100644 media/libcubeb/src/cubeb_osx_run_loop.h delete mode 100644 netwerk/base/NetworkInfoServiceCocoa.cpp delete mode 100644 netwerk/base/nsURLHelperOSX.cpp delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderOperator.h delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp delete mode 100644 netwerk/dns/mdns/libmdns/MDNSResponderReply.h delete mode 100644 netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp delete mode 100644 netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h delete mode 100644 netwerk/system/mac/moz.build delete mode 100644 netwerk/system/mac/nsNetworkLinkService.h delete mode 100644 netwerk/system/mac/nsNetworkLinkService.mm delete mode 100644 toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm delete mode 100644 toolkit/components/startup/nsUserInfoMac.h delete mode 100644 toolkit/components/startup/nsUserInfoMac.mm delete mode 100644 toolkit/mozapps/update/updater/launchchild_osx.mm delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/keyedobjects.nib delete mode 100644 toolkit/mozapps/update/updater/macbuild/Contents/Resources/updater.icns delete mode 100644 toolkit/mozapps/update/updater/progressui_osx.mm delete mode 100644 toolkit/system/osxproxy/ProxyUtils.h delete mode 100644 toolkit/system/osxproxy/ProxyUtils.mm delete mode 100644 toolkit/system/osxproxy/moz.build delete mode 100644 toolkit/system/osxproxy/nsOSXSystemProxySettings.mm delete mode 100644 toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp delete mode 100644 toolkit/system/osxproxy/tests/gtest/moz.build delete mode 100644 toolkit/themes/osx/global/10pct_transparent_grey.png delete mode 100644 toolkit/themes/osx/global/50pct_transparent_grey.png delete mode 100644 toolkit/themes/osx/global/alerts/alert.css delete mode 100644 toolkit/themes/osx/global/arrow.css delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn-dis.png delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-dn.png delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-hov.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-sharp-end.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-lft.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-hov.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-sharp-end.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-rit.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-up-dis.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-up-sharp.gif delete mode 100644 toolkit/themes/osx/global/arrow/arrow-up.gif delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-horizontal.png delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-horizontal@2x.png delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-vertical.png delete mode 100644 toolkit/themes/osx/global/arrow/panelarrow-vertical@2x.png delete mode 100644 toolkit/themes/osx/global/autocomplete.css delete mode 100644 toolkit/themes/osx/global/button.css delete mode 100644 toolkit/themes/osx/global/checkbox.css delete mode 100644 toolkit/themes/osx/global/checkbox/cbox-check-dis.gif delete mode 100644 toolkit/themes/osx/global/checkbox/cbox-check.gif delete mode 100644 toolkit/themes/osx/global/colorpicker.css delete mode 100644 toolkit/themes/osx/global/commonDialog.css delete mode 100644 toolkit/themes/osx/global/console/console-error-caret.gif delete mode 100644 toolkit/themes/osx/global/console/console-error-dash.gif delete mode 100644 toolkit/themes/osx/global/console/console.css delete mode 100644 toolkit/themes/osx/global/customizeToolbar.css delete mode 100644 toolkit/themes/osx/global/datetimepicker.css delete mode 100644 toolkit/themes/osx/global/dialog.css delete mode 100644 toolkit/themes/osx/global/dirListing/dirListing.css delete mode 100644 toolkit/themes/osx/global/dirListing/folder.png delete mode 100644 toolkit/themes/osx/global/dirListing/remote.png delete mode 100644 toolkit/themes/osx/global/dirListing/up.png delete mode 100644 toolkit/themes/osx/global/dropmarker.css delete mode 100644 toolkit/themes/osx/global/filefield.css delete mode 100644 toolkit/themes/osx/global/filters.svg delete mode 100644 toolkit/themes/osx/global/findBar.css delete mode 100644 toolkit/themes/osx/global/global.css delete mode 100644 toolkit/themes/osx/global/groupbox.css delete mode 100644 toolkit/themes/osx/global/icons/Error.png delete mode 100644 toolkit/themes/osx/global/icons/autocomplete-dropmarker.png delete mode 100644 toolkit/themes/osx/global/icons/autocomplete-search.svg delete mode 100644 toolkit/themes/osx/global/icons/autoscroll.png delete mode 100644 toolkit/themes/osx/global/icons/blacklist_64.png delete mode 100644 toolkit/themes/osx/global/icons/blacklist_favicon.png delete mode 100644 toolkit/themes/osx/global/icons/checkbox.png delete mode 100644 toolkit/themes/osx/global/icons/checkbox@2x.png delete mode 100644 toolkit/themes/osx/global/icons/chevron-inverted.png delete mode 100644 toolkit/themes/osx/global/icons/chevron-inverted@2x.png delete mode 100644 toolkit/themes/osx/global/icons/chevron.png delete mode 100644 toolkit/themes/osx/global/icons/chevron@2x.png delete mode 100644 toolkit/themes/osx/global/icons/close.png delete mode 100644 toolkit/themes/osx/global/icons/close@2x.png delete mode 100644 toolkit/themes/osx/global/icons/error-16.png delete mode 100644 toolkit/themes/osx/global/icons/error-64.png delete mode 100644 toolkit/themes/osx/global/icons/error-large.png delete mode 100644 toolkit/themes/osx/global/icons/glyph-dropdown.png delete mode 100644 toolkit/themes/osx/global/icons/glyph-dropdown@2x.png delete mode 100644 toolkit/themes/osx/global/icons/information-16.png delete mode 100644 toolkit/themes/osx/global/icons/information-24.png delete mode 100644 toolkit/themes/osx/global/icons/information-32.png delete mode 100644 toolkit/themes/osx/global/icons/information-64.png delete mode 100644 toolkit/themes/osx/global/icons/information-large.png delete mode 100644 toolkit/themes/osx/global/icons/loading_16.png delete mode 100644 toolkit/themes/osx/global/icons/menulist-dropmarker.png delete mode 100644 toolkit/themes/osx/global/icons/notfound.png delete mode 100644 toolkit/themes/osx/global/icons/notloading_16.png delete mode 100644 toolkit/themes/osx/global/icons/panebutton-active.png delete mode 100644 toolkit/themes/osx/global/icons/panebutton-inactive.png delete mode 100644 toolkit/themes/osx/global/icons/panel-dropmarker.png delete mode 100644 toolkit/themes/osx/global/icons/question-16.png delete mode 100644 toolkit/themes/osx/global/icons/question-32.png delete mode 100644 toolkit/themes/osx/global/icons/question-64.png delete mode 100644 toolkit/themes/osx/global/icons/question-large.png delete mode 100644 toolkit/themes/osx/global/icons/resizer-rtl.png delete mode 100644 toolkit/themes/osx/global/icons/resizer-rtl@2x.png delete mode 100644 toolkit/themes/osx/global/icons/resizer.png delete mode 100644 toolkit/themes/osx/global/icons/resizer@2x.png delete mode 100644 toolkit/themes/osx/global/icons/search-textbox.svg delete mode 100644 toolkit/themes/osx/global/icons/searchfield-cancel.svg delete mode 100644 toolkit/themes/osx/global/icons/sslWarning.png delete mode 100644 toolkit/themes/osx/global/icons/tabprompts-bgtexture.png delete mode 100644 toolkit/themes/osx/global/icons/warning-16.png delete mode 100644 toolkit/themes/osx/global/icons/warning-32.png delete mode 100644 toolkit/themes/osx/global/icons/warning-64.png delete mode 100644 toolkit/themes/osx/global/icons/warning-large.png delete mode 100644 toolkit/themes/osx/global/in-content/common.css delete mode 100644 toolkit/themes/osx/global/in-content/info-pages.css delete mode 100644 toolkit/themes/osx/global/inContentUI.css delete mode 100644 toolkit/themes/osx/global/jar.mn delete mode 100644 toolkit/themes/osx/global/linkTree.css delete mode 100644 toolkit/themes/osx/global/listbox.css delete mode 100644 toolkit/themes/osx/global/menu.css delete mode 100644 toolkit/themes/osx/global/menulist.css delete mode 100644 toolkit/themes/osx/global/moz.build delete mode 100644 toolkit/themes/osx/global/nativescrollbars.css delete mode 100644 toolkit/themes/osx/global/netError.css delete mode 100644 toolkit/themes/osx/global/notification.css delete mode 100644 toolkit/themes/osx/global/notification/close.png delete mode 100644 toolkit/themes/osx/global/notification/error-icon.png delete mode 100644 toolkit/themes/osx/global/notification/info-icon.png delete mode 100644 toolkit/themes/osx/global/notification/warning-icon.png delete mode 100644 toolkit/themes/osx/global/numberbox.css delete mode 100644 toolkit/themes/osx/global/popup.css delete mode 100644 toolkit/themes/osx/global/preferences.css delete mode 100644 toolkit/themes/osx/global/progressmeter.css delete mode 100644 toolkit/themes/osx/global/radio.css delete mode 100644 toolkit/themes/osx/global/resizer.css delete mode 100644 toolkit/themes/osx/global/richlistbox.css delete mode 100644 toolkit/themes/osx/global/scale.css delete mode 100644 toolkit/themes/osx/global/scale/scale-tray-horiz.gif delete mode 100644 toolkit/themes/osx/global/scale/scale-tray-vert.gif delete mode 100644 toolkit/themes/osx/global/scrollbox.css delete mode 100644 toolkit/themes/osx/global/shared.inc delete mode 100644 toolkit/themes/osx/global/spinbuttons.css delete mode 100644 toolkit/themes/osx/global/splitter.css delete mode 100644 toolkit/themes/osx/global/splitter/dimple.png delete mode 100644 toolkit/themes/osx/global/splitter/grip-bottom.gif delete mode 100644 toolkit/themes/osx/global/splitter/grip-left.gif delete mode 100644 toolkit/themes/osx/global/splitter/grip-right.gif delete mode 100644 toolkit/themes/osx/global/splitter/grip-top.gif delete mode 100644 toolkit/themes/osx/global/tabbox.css delete mode 100644 toolkit/themes/osx/global/tabprompts.css delete mode 100644 toolkit/themes/osx/global/textbox.css delete mode 100644 toolkit/themes/osx/global/toolbar.css delete mode 100644 toolkit/themes/osx/global/toolbar/spring.png delete mode 100644 toolkit/themes/osx/global/toolbar/toolbar-separator.png delete mode 100644 toolkit/themes/osx/global/toolbarbutton.css delete mode 100644 toolkit/themes/osx/global/tree.css delete mode 100644 toolkit/themes/osx/global/tree/arrow-disclosure.svg delete mode 100644 toolkit/themes/osx/global/tree/columnpicker.gif delete mode 100644 toolkit/themes/osx/global/tree/folder.png delete mode 100644 toolkit/themes/osx/global/tree/folder@2x.png delete mode 100644 toolkit/themes/osx/global/viewbuttons.css delete mode 100644 toolkit/themes/osx/global/wizard.css delete mode 100644 toolkit/themes/osx/mochitests/.eslintrc.js delete mode 100644 toolkit/themes/osx/mochitests/chrome.ini delete mode 100644 toolkit/themes/osx/mochitests/test_bug510426.xul delete mode 100644 toolkit/themes/osx/moz.build delete mode 100644 toolkit/themes/osx/mozapps/downloads/buttons.png delete mode 100644 toolkit/themes/osx/mozapps/downloads/downloadIcon.png delete mode 100644 toolkit/themes/osx/mozapps/downloads/downloads.css delete mode 100644 toolkit/themes/osx/mozapps/downloads/unknownContentType.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/about.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-error.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-info-negative.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-info-positive.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/alerticon-warning.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/blocklist.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/cancel.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-available.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-dictionaries.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-discover.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-experiments.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-plugins.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-recent.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-search.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-searchengines.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/category-service.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/dictionaryGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/dictionaryGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/discover-logo.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/eula.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/experimentGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/extensionGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/extensionGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/extensions.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/heart.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/localeGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/navigation.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/newaddon.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/rating-not-won.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/rating-won.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/search.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/selectAddons.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-error.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-info-negative.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-info-positive.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/stripes-warning.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/themeGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/themeGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/toolbarbutton-dropmarker.png delete mode 100644 toolkit/themes/osx/mozapps/extensions/update.css delete mode 100644 toolkit/themes/osx/mozapps/extensions/xpinstallConfirm.css delete mode 100644 toolkit/themes/osx/mozapps/handling/handling.css delete mode 100644 toolkit/themes/osx/mozapps/jar.mn delete mode 100644 toolkit/themes/osx/mozapps/moz.build delete mode 100644 toolkit/themes/osx/mozapps/passwordmgr/key-16.png delete mode 100644 toolkit/themes/osx/mozapps/passwordmgr/key-64.png delete mode 100644 toolkit/themes/osx/mozapps/passwordmgr/key.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/notifyPluginGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginBlocked-64.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginBlocked.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginGeneric-16.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginGeneric.png delete mode 100644 toolkit/themes/osx/mozapps/plugins/pluginHelp-16.png delete mode 100644 toolkit/themes/osx/mozapps/profile/profileSelection.css delete mode 100644 toolkit/themes/osx/mozapps/profile/profileicon-selected.png delete mode 100644 toolkit/themes/osx/mozapps/profile/profileicon.png delete mode 100644 toolkit/themes/osx/mozapps/update/buttons.png delete mode 100644 toolkit/themes/osx/mozapps/update/updates.css delete mode 100644 toolkit/themes/osx/mozapps/viewsource/viewsource.css delete mode 100644 toolkit/themes/osx/reftests/482681-ref.xul delete mode 100644 toolkit/themes/osx/reftests/482681.xul delete mode 100644 toolkit/themes/osx/reftests/baseline.xul delete mode 100644 toolkit/themes/osx/reftests/checkboxsize-ref.xul delete mode 100644 toolkit/themes/osx/reftests/checkboxsize.xul delete mode 100644 toolkit/themes/osx/reftests/nostretch-ref.xul delete mode 100644 toolkit/themes/osx/reftests/nostretch.xul delete mode 100644 toolkit/themes/osx/reftests/radiosize-ref.xul delete mode 100644 toolkit/themes/osx/reftests/radiosize.xul delete mode 100644 toolkit/themes/osx/reftests/reftest-stylo.list delete mode 100644 toolkit/themes/osx/reftests/reftest.list delete mode 100644 toolkit/xre/MacApplicationDelegate.h delete mode 100644 toolkit/xre/MacApplicationDelegate.mm delete mode 100644 toolkit/xre/MacAutoreleasePool.h delete mode 100644 toolkit/xre/MacAutoreleasePool.mm delete mode 100644 toolkit/xre/MacLaunchHelper.h delete mode 100644 toolkit/xre/MacLaunchHelper.mm delete mode 100644 uriloader/exthandler/mac/nsDecodeAppleFile.cpp delete mode 100644 uriloader/exthandler/mac/nsDecodeAppleFile.h delete mode 100644 uriloader/exthandler/mac/nsLocalHandlerAppMac.h delete mode 100644 uriloader/exthandler/mac/nsLocalHandlerAppMac.mm delete mode 100644 uriloader/exthandler/mac/nsMIMEInfoMac.h delete mode 100644 uriloader/exthandler/mac/nsMIMEInfoMac.mm delete mode 100644 uriloader/exthandler/mac/nsOSHelperAppService.h delete mode 100644 uriloader/exthandler/mac/nsOSHelperAppService.mm diff --git a/accessible/base/moz.build b/accessible/base/moz.build index f096279865..d2452c89fa 100644 --- a/accessible/base/moz.build +++ b/accessible/base/moz.build @@ -96,10 +96,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/generic/moz.build b/accessible/generic/moz.build index 77ac4fcc3e..e729d8248e 100644 --- a/accessible/generic/moz.build +++ b/accessible/generic/moz.build @@ -52,10 +52,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/html/moz.build b/accessible/html/moz.build index eb7c236bd7..4c7fed3a68 100644 --- a/accessible/html/moz.build +++ b/accessible/html/moz.build @@ -32,10 +32,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/ipc/moz.build b/accessible/ipc/moz.build index 14f9e44fad..efcab44852 100644 --- a/accessible/ipc/moz.build +++ b/accessible/ipc/moz.build @@ -19,10 +19,6 @@ else: LOCAL_INCLUDES += [ '/accessible/atk', ] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/ipc/other/moz.build b/accessible/ipc/other/moz.build index 50f96de040..489520cef6 100644 --- a/accessible/ipc/other/moz.build +++ b/accessible/ipc/other/moz.build @@ -28,10 +28,6 @@ if CONFIG['ACCESSIBILITY']: LOCAL_INCLUDES += [ '/accessible/atk', ] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/mac/ARIAGridAccessibleWrap.h b/accessible/mac/ARIAGridAccessibleWrap.h deleted file mode 100644 index 5d397e915c..0000000000 --- a/accessible/mac/ARIAGridAccessibleWrap.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_A11Y_ARIAGRIDACCESSIBLEWRAP_H -#define MOZILLA_A11Y_ARIAGRIDACCESSIBLEWRAP_H - -#include "ARIAGridAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class ARIAGridAccessible ARIAGridAccessibleWrap; -typedef class ARIAGridCellAccessible ARIAGridCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/AccessibleWrap.h b/accessible/mac/AccessibleWrap.h deleted file mode 100644 index 6c746ff0dc..0000000000 --- a/accessible/mac/AccessibleWrap.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* For documentation of the accessibility architecture, - * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html - */ - -#ifndef _AccessibleWrap_H_ -#define _AccessibleWrap_H_ - -#include - -#include "Accessible.h" -#include "States.h" - -#include "nsCOMPtr.h" - -#include "nsTArray.h" - -#if defined(__OBJC__) -@class mozAccessible; -#endif - -namespace mozilla { -namespace a11y { - -class AccessibleWrap : public Accessible -{ -public: // construction, destruction - AccessibleWrap(nsIContent* aContent, DocAccessible* aDoc); - virtual ~AccessibleWrap(); - - /** - * Get the native Obj-C object (mozAccessible). - */ - virtual void GetNativeInterface(void** aOutAccessible) override; - - /** - * The objective-c |Class| type that this accessible's native object - * should be instantied with. used on runtime to determine the - * right type for this accessible's associated native object. - */ - virtual Class GetNativeType (); - - virtual void Shutdown () override; - - virtual bool InsertChildAt(uint32_t aIdx, Accessible* aChild) override; - virtual bool RemoveChild(Accessible* aAccessible) override; - - virtual nsresult HandleAccEvent(AccEvent* aEvent) override; - -protected: - - /** - * Return true if the parent doesn't have children to expose to AT. - */ - bool AncestorIsFlat(); - - /** - * Get the native object. Create it if needed. - */ -#if defined(__OBJC__) - mozAccessible* GetNativeObject(); -#else - id GetNativeObject(); -#endif - -private: - - /** - * Our native object. Private because its creation is done lazily. - * Don't access it directly. Ever. Unless you are GetNativeObject() or - * Shutdown() - */ -#if defined(__OBJC__) - // if we are in Objective-C, we use the actual Obj-C class. - mozAccessible* mNativeObject; -#else - id mNativeObject; -#endif - - /** - * We have created our native. This does not mean there is one. - * This can never go back to false. - * We need it because checking whether we need a native object cost time. - */ - bool mNativeInited; -}; - -#if defined(__OBJC__) - void FireNativeEvent(mozAccessible* aNativeAcc, uint32_t aEventType); -#else - void FireNativeEvent(id aNativeAcc, uint32_t aEventType); -#endif - -Class GetTypeFromRole(roles::Role aRole); - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/AccessibleWrap.mm b/accessible/mac/AccessibleWrap.mm deleted file mode 100644 index 65f2e1db42..0000000000 --- a/accessible/mac/AccessibleWrap.mm +++ /dev/null @@ -1,256 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "DocAccessible.h" -#include "nsObjCExceptions.h" - -#include "Accessible-inl.h" -#include "nsAccUtils.h" -#include "Role.h" - -#import "mozAccessible.h" -#import "mozActionElements.h" -#import "mozHTMLAccessible.h" -#import "mozTableAccessible.h" -#import "mozTextAccessible.h" - -using namespace mozilla; -using namespace mozilla::a11y; - -AccessibleWrap:: - AccessibleWrap(nsIContent* aContent, DocAccessible* aDoc) : - Accessible(aContent, aDoc), mNativeObject(nil), - mNativeInited(false) -{ -} - -AccessibleWrap::~AccessibleWrap() -{ -} - -mozAccessible* -AccessibleWrap::GetNativeObject() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (!mNativeInited && !mNativeObject && !IsDefunct() && !AncestorIsFlat()) { - uintptr_t accWrap = reinterpret_cast(this); - mNativeObject = [[GetNativeType() alloc] initWithAccessible:accWrap]; - } - - mNativeInited = true; - - return mNativeObject; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -void -AccessibleWrap::GetNativeInterface(void** aOutInterface) -{ - *aOutInterface = static_cast(GetNativeObject()); -} - -// overridden in subclasses to create the right kind of object. by default we create a generic -// 'mozAccessible' node. -Class -AccessibleWrap::GetNativeType () -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (IsXULTabpanels()) - return [mozPaneAccessible class]; - - if (IsTable()) - return [mozTableAccessible class]; - - if (IsTableRow()) - return [mozTableRowAccessible class]; - - if (IsTableCell()) - return [mozTableCellAccessible class]; - - return GetTypeFromRole(Role()); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -// this method is very important. it is fired when an accessible object "dies". after this point -// the object might still be around (because some 3rd party still has a ref to it), but it is -// in fact 'dead'. -void -AccessibleWrap::Shutdown () -{ - // this ensure we will not try to re-create the native object. - mNativeInited = true; - - // we really intend to access the member directly. - if (mNativeObject) { - [mNativeObject expire]; - [mNativeObject release]; - mNativeObject = nil; - } - - Accessible::Shutdown(); -} - -nsresult -AccessibleWrap::HandleAccEvent(AccEvent* aEvent) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - nsresult rv = Accessible::HandleAccEvent(aEvent); - NS_ENSURE_SUCCESS(rv, rv); - - if (IPCAccessibilityActive()) { - return NS_OK; - } - - uint32_t eventType = aEvent->GetEventType(); - - // ignore everything but focus-changed, value-changed, caret, selection - // and document load complete events for now. - if (eventType != nsIAccessibleEvent::EVENT_FOCUS && - eventType != nsIAccessibleEvent::EVENT_VALUE_CHANGE && - eventType != nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE && - eventType != nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED && - eventType != nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED && - eventType != nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE) - return NS_OK; - - Accessible* accessible = aEvent->GetAccessible(); - NS_ENSURE_STATE(accessible); - - mozAccessible *nativeAcc = nil; - accessible->GetNativeInterface((void**)&nativeAcc); - if (!nativeAcc) - return NS_ERROR_FAILURE; - - FireNativeEvent(nativeAcc, eventType); - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -bool -AccessibleWrap::InsertChildAt(uint32_t aIdx, Accessible* aAccessible) -{ - bool inserted = Accessible::InsertChildAt(aIdx, aAccessible); - if (inserted && mNativeObject) - [mNativeObject appendChild:aAccessible]; - - return inserted; -} - -bool -AccessibleWrap::RemoveChild(Accessible* aAccessible) -{ - bool removed = Accessible::RemoveChild(aAccessible); - - if (removed && mNativeObject) - [mNativeObject invalidateChildren]; - - return removed; -} - -//////////////////////////////////////////////////////////////////////////////// -// AccessibleWrap protected - -bool -AccessibleWrap::AncestorIsFlat() -{ - // We don't create a native object if we're child of a "flat" accessible; - // for example, on OS X buttons shouldn't have any children, because that - // makes the OS confused. - // - // To maintain a scripting environment where the XPCOM accessible hierarchy - // look the same on all platforms, we still let the C++ objects be created - // though. - - Accessible* parent = Parent(); - while (parent) { - if (nsAccUtils::MustPrune(parent)) - return true; - - parent = parent->Parent(); - } - // no parent was flat - return false; -} - -void -a11y::FireNativeEvent(mozAccessible* aNativeAcc, uint32_t aEventType) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - switch (aEventType) { - case nsIAccessibleEvent::EVENT_FOCUS: - [aNativeAcc didReceiveFocus]; - break; - case nsIAccessibleEvent::EVENT_VALUE_CHANGE: - case nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE: - [aNativeAcc valueDidChange]; - break; - case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED: - case nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED: - [aNativeAcc selectedTextDidChange]; - break; - case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE: - [aNativeAcc documentLoadComplete]; - break; - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -Class -a11y::GetTypeFromRole(roles::Role aRole) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - switch (aRole) { - case roles::COMBOBOX: - case roles::PUSHBUTTON: - case roles::SPLITBUTTON: - case roles::TOGGLE_BUTTON: - { - return [mozButtonAccessible class]; - } - - case roles::PAGETAB: - return [mozButtonAccessible class]; - - case roles::CHECKBUTTON: - return [mozCheckboxAccessible class]; - - case roles::HEADING: - return [mozHeadingAccessible class]; - - case roles::PAGETABLIST: - return [mozTabsAccessible class]; - - case roles::ENTRY: - case roles::STATICTEXT: - case roles::CAPTION: - case roles::ACCEL_LABEL: - case roles::PASSWORD_TEXT: - // normal textfield (static or editable) - return [mozTextAccessible class]; - - case roles::TEXT_LEAF: - return [mozTextLeafAccessible class]; - - case roles::LINK: - return [mozLinkAccessible class]; - - default: - return [mozAccessible class]; - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} diff --git a/accessible/mac/ApplicationAccessibleWrap.h b/accessible/mac/ApplicationAccessibleWrap.h deleted file mode 100644 index 9343c29ddc..0000000000 --- a/accessible/mac/ApplicationAccessibleWrap.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:expandtab:shiftwidth=4:tabstop=4: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_ApplicationAccessibleWrap_h__ -#define mozilla_a11y_ApplicationAccessibleWrap_h__ - -#include "ApplicationAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef ApplicationAccessible ApplicationAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/DocAccessibleWrap.h b/accessible/mac/DocAccessibleWrap.h deleted file mode 100644 index 3e80a0d33c..0000000000 --- a/accessible/mac/DocAccessibleWrap.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_DocAccessibleWrap_h__ -#define mozilla_a11y_DocAccessibleWrap_h__ - -#include "DocAccessible.h" - -namespace mozilla { -namespace a11y { - -class DocAccessibleWrap : public DocAccessible -{ -public: - DocAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell); - virtual ~DocAccessibleWrap(); - -}; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/DocAccessibleWrap.mm b/accessible/mac/DocAccessibleWrap.mm deleted file mode 100644 index 8a513f485a..0000000000 --- a/accessible/mac/DocAccessibleWrap.mm +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "DocAccessibleWrap.h" - -#import "mozAccessible.h" - -using namespace mozilla::a11y; - -DocAccessibleWrap:: - DocAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell) : - DocAccessible(aDocument, aPresShell) -{ -} - -DocAccessibleWrap::~DocAccessibleWrap() -{ -} - diff --git a/accessible/mac/HTMLTableAccessibleWrap.h b/accessible/mac/HTMLTableAccessibleWrap.h deleted file mode 100644 index 4f158e241d..0000000000 --- a/accessible/mac/HTMLTableAccessibleWrap.h +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_HTMLTableAccessibleWrap_h__ -#define mozilla_a11y_HTMLTableAccessibleWrap_h__ - -#include "HTMLTableAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class HTMLTableAccessible HTMLTableAccessibleWrap; -typedef class HTMLTableCellAccessible HTMLTableCellAccessibleWrap; -typedef class HTMLTableHeaderCellAccessible HTMLTableHeaderCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/HyperTextAccessibleWrap.h b/accessible/mac/HyperTextAccessibleWrap.h deleted file mode 100644 index fb335ef0f7..0000000000 --- a/accessible/mac/HyperTextAccessibleWrap.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_HyperTextAccessibleWrap_h__ -#define mozilla_a11y_HyperTextAccessibleWrap_h__ - -#include "HyperTextAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class HyperTextAccessible HyperTextAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/ImageAccessibleWrap.h b/accessible/mac/ImageAccessibleWrap.h deleted file mode 100644 index 069efb6511..0000000000 --- a/accessible/mac/ImageAccessibleWrap.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_ImageAccessibleWrap_h__ -#define mozilla_a11y_ImageAccessibleWrap_h__ - -#include "ImageAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class ImageAccessible ImageAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif - diff --git a/accessible/mac/MacUtils.h b/accessible/mac/MacUtils.h deleted file mode 100644 index f88a27ee58..0000000000 --- a/accessible/mac/MacUtils.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef _MacUtils_H_ -#define _MacUtils_H_ - -@class NSString; -class nsString; - -namespace mozilla { -namespace a11y { -namespace utils { - -/** - * Get a localized string from the string bundle. - * Return nil if not found. - */ -NSString* LocalizedString(const nsString& aString); - -} -} -} - -#endif diff --git a/accessible/mac/MacUtils.mm b/accessible/mac/MacUtils.mm deleted file mode 100644 index 2ce03fe966..0000000000 --- a/accessible/mac/MacUtils.mm +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "MacUtils.h" - -#include "Accessible.h" - -#include "nsCocoaUtils.h" - -namespace mozilla { -namespace a11y { -namespace utils { - -/** - * Get a localized string from the a11y string bundle. - * Return nil if not found. - */ -NSString* -LocalizedString(const nsString& aString) -{ - nsString text; - - Accessible::TranslateString(aString, text); - - return text.IsEmpty() ? nil : nsCocoaUtils::ToNSString(text); -} - -} -} -} diff --git a/accessible/mac/Platform.mm b/accessible/mac/Platform.mm deleted file mode 100644 index a104bf904c..0000000000 --- a/accessible/mac/Platform.mm +++ /dev/null @@ -1,174 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import - -#include "Platform.h" -#include "ProxyAccessible.h" -#include "DocAccessibleParent.h" -#include "mozTableAccessible.h" - -#include "nsAppShell.h" - -namespace mozilla { -namespace a11y { - -// Mac a11y whitelisting -static bool sA11yShouldBeEnabled = false; - -bool -ShouldA11yBeEnabled() -{ - EPlatformDisabledState disabledState = PlatformDisabledState(); - return (disabledState == ePlatformIsForceEnabled) || ((disabledState == ePlatformIsEnabled) && sA11yShouldBeEnabled); -} - -void -PlatformInit() -{ -} - -void -PlatformShutdown() -{ -} - -void -ProxyCreated(ProxyAccessible* aProxy, uint32_t) -{ - // Pass in dummy state for now as retrieving proxy state requires IPC. - // Note that we can use ProxyAccessible::IsTable* functions here because they - // do not use IPC calls but that might change after bug 1210477. - Class type; - if (aProxy->IsTable()) - type = [mozTableAccessible class]; - else if (aProxy->IsTableRow()) - type = [mozTableRowAccessible class]; - else if (aProxy->IsTableCell()) - type = [mozTableCellAccessible class]; - else - type = GetTypeFromRole(aProxy->Role()); - - uintptr_t accWrap = reinterpret_cast(aProxy) | IS_PROXY; - mozAccessible* mozWrapper = [[type alloc] initWithAccessible:accWrap]; - aProxy->SetWrapper(reinterpret_cast(mozWrapper)); - - mozAccessible* nativeParent = nullptr; - if (aProxy->IsDoc() && aProxy->AsDoc()->IsTopLevel()) { - // If proxy is top level, the parent we need to invalidate the children of - // will be a non-remote accessible. - Accessible* outerDoc = aProxy->OuterDocOfRemoteBrowser(); - if (outerDoc) { - nativeParent = GetNativeFromGeckoAccessible(outerDoc); - } - } else { - // Non-top level proxies need proxy parents' children invalidated. - ProxyAccessible* parent = aProxy->Parent(); - nativeParent = GetNativeFromProxy(parent); - NS_ASSERTION(parent, "a non-top-level proxy is missing a parent?"); - } - - if (nativeParent) { - [nativeParent invalidateChildren]; - } -} - -void -ProxyDestroyed(ProxyAccessible* aProxy) -{ - mozAccessible* nativeParent = nil; - if (aProxy->IsDoc() && aProxy->AsDoc()->IsTopLevel()) { - // Invalidate native parent in parent process's children on proxy destruction - Accessible* outerDoc = aProxy->OuterDocOfRemoteBrowser(); - if (outerDoc) { - nativeParent = GetNativeFromGeckoAccessible(outerDoc); - } - } else { - if (!aProxy->Document()->IsShutdown()) { - // Only do if the document has not been shut down, else parent will return - // garbage since we don't shut down children from top down. - ProxyAccessible* parent = aProxy->Parent(); - // Invalidate proxy parent's children. - if (parent) { - nativeParent = GetNativeFromProxy(parent); - } - } - } - - mozAccessible* wrapper = GetNativeFromProxy(aProxy); - [wrapper expire]; - [wrapper release]; - aProxy->SetWrapper(0); - - if (nativeParent) { - [nativeParent invalidateChildren]; - } -} - -void -ProxyEvent(ProxyAccessible* aProxy, uint32_t aEventType) -{ - // ignore everything but focus-changed, value-changed, caret and selection - // events for now. - if (aEventType != nsIAccessibleEvent::EVENT_FOCUS && - aEventType != nsIAccessibleEvent::EVENT_VALUE_CHANGE && - aEventType != nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE && - aEventType != nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED && - aEventType != nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED) - return; - - mozAccessible* wrapper = GetNativeFromProxy(aProxy); - if (wrapper) - FireNativeEvent(wrapper, aEventType); -} - -void -ProxyStateChangeEvent(ProxyAccessible* aProxy, uint64_t, bool) -{ - // mac doesn't care about state change events -} - -void -ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset) -{ - mozAccessible* wrapper = GetNativeFromProxy(aTarget); - if (wrapper) - [wrapper selectedTextDidChange]; -} - -void -ProxyTextChangeEvent(ProxyAccessible*, const nsString&, int32_t, uint32_t, - bool, bool) -{ -} - -void -ProxyShowHideEvent(ProxyAccessible*, ProxyAccessible*, bool, bool) -{ -} - -void -ProxySelectionEvent(ProxyAccessible*, ProxyAccessible*, uint32_t) -{ -} -} // namespace a11y -} // namespace mozilla - -@interface GeckoNSApplication(a11y) --(void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute; -@end - -@implementation GeckoNSApplication(a11y) - --(void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute -{ - if ([attribute isEqualToString:@"AXEnhancedUserInterface"]) - mozilla::a11y::sA11yShouldBeEnabled = ([value intValue] == 1); - - return [super accessibilitySetValue:value forAttribute:attribute]; -} - -@end - diff --git a/accessible/mac/RootAccessibleWrap.h b/accessible/mac/RootAccessibleWrap.h deleted file mode 100644 index aa53e06ac0..0000000000 --- a/accessible/mac/RootAccessibleWrap.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* For documentation of the accessibility architecture, - * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html - */ - -#ifndef mozilla_a11y_RootAccessibleWrap_h__ -#define mozilla_a11y_RootAccessibleWrap_h__ - -#include "RootAccessible.h" - -namespace mozilla { -namespace a11y { - -class RootAccessibleWrap : public RootAccessible -{ -public: - RootAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell); - virtual ~RootAccessibleWrap(); - - Class GetNativeType (); - - // let's our native accessible get in touch with the - // native cocoa view that is our accessible parent. - void GetNativeWidget (void **aOutView); -}; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/RootAccessibleWrap.mm b/accessible/mac/RootAccessibleWrap.mm deleted file mode 100644 index 037545cce2..0000000000 --- a/accessible/mac/RootAccessibleWrap.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "RootAccessibleWrap.h" - -#include "mozDocAccessible.h" - -#include "nsCOMPtr.h" -#include "nsObjCExceptions.h" -#include "nsIFrame.h" -#include "nsView.h" -#include "nsIWidget.h" - -using namespace mozilla::a11y; - -RootAccessibleWrap:: - RootAccessibleWrap(nsIDocument* aDocument, nsIPresShell* aPresShell) : - RootAccessible(aDocument, aPresShell) -{ -} - -RootAccessibleWrap::~RootAccessibleWrap() -{ -} - -Class -RootAccessibleWrap::GetNativeType() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - return [mozRootAccessible class]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -void -RootAccessibleWrap::GetNativeWidget(void** aOutView) -{ - nsIFrame *frame = GetFrame(); - if (frame) { - nsView *view = frame->GetView(); - if (view) { - nsIWidget *widget = view->GetWidget(); - if (widget) { - *aOutView = (void**)widget->GetNativeData (NS_NATIVE_WIDGET); - NS_ASSERTION (*aOutView, - "Couldn't get the native NSView parent we need to connect the accessibility hierarchy!"); - } - } - } -} diff --git a/accessible/mac/TextLeafAccessibleWrap.h b/accessible/mac/TextLeafAccessibleWrap.h deleted file mode 100644 index d07b9defec..0000000000 --- a/accessible/mac/TextLeafAccessibleWrap.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_TextLeafAccessibleWrap_h__ -#define mozilla_a11y_TextLeafAccessibleWrap_h__ - -#include "TextLeafAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class TextLeafAccessible TextLeafAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/XULListboxAccessibleWrap.h b/accessible/mac/XULListboxAccessibleWrap.h deleted file mode 100644 index f7dc6cc547..0000000000 --- a/accessible/mac/XULListboxAccessibleWrap.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_XULListboxAccessibleWrap_h__ -#define mozilla_a11y_XULListboxAccessibleWrap_h__ - -#include "XULListboxAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class XULListboxAccessible XULListboxAccessibleWrap; -typedef class XULListCellAccessible XULListCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/XULMenuAccessibleWrap.h b/accessible/mac/XULMenuAccessibleWrap.h deleted file mode 100644 index 6efcf007eb..0000000000 --- a/accessible/mac/XULMenuAccessibleWrap.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_XULMenuAccessibleWrap_h__ -#define mozilla_a11y_XULMenuAccessibleWrap_h__ - -#include "XULMenuAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class XULMenuitemAccessible XULMenuitemAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/XULTreeGridAccessibleWrap.h b/accessible/mac/XULTreeGridAccessibleWrap.h deleted file mode 100644 index b3631e9adb..0000000000 --- a/accessible/mac/XULTreeGridAccessibleWrap.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_a11y_XULTreeGridAccessibleWrap_h__ -#define mozilla_a11y_XULTreeGridAccessibleWrap_h__ - -#include "XULTreeGridAccessible.h" - -namespace mozilla { -namespace a11y { - -typedef class XULTreeGridAccessible XULTreeGridAccessibleWrap; -typedef class XULTreeGridCellAccessible XULTreeGridCellAccessibleWrap; - -} // namespace a11y -} // namespace mozilla - -#endif diff --git a/accessible/mac/moz.build b/accessible/mac/moz.build deleted file mode 100644 index 8d2e7b391f..0000000000 --- a/accessible/mac/moz.build +++ /dev/null @@ -1,44 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -EXPORTS += [ - 'mozAccessibleProtocol.h', -] - -EXPORTS.mozilla.a11y += [ - 'AccessibleWrap.h', - 'HyperTextAccessibleWrap.h', -] - -SOURCES += [ - 'AccessibleWrap.mm', - 'DocAccessibleWrap.mm', - 'MacUtils.mm', - 'mozAccessible.mm', - 'mozActionElements.mm', - 'mozDocAccessible.mm', - 'mozHTMLAccessible.mm', - 'mozTableAccessible.mm', - 'mozTextAccessible.mm', - 'Platform.mm', - 'RootAccessibleWrap.mm', -] - -LOCAL_INCLUDES += [ - '/accessible/base', - '/accessible/generic', - '/accessible/html', - '/accessible/ipc', - '/accessible/ipc/other', - '/accessible/xul', - '/layout/generic', - '/layout/xul', - '/widget', - '/widget/cocoa', -] - -FINAL_LIBRARY = 'xul' - -include('/ipc/chromium/chromium-config.mozbuild') diff --git a/accessible/mac/mozAccessible.h b/accessible/mac/mozAccessible.h deleted file mode 100644 index 6d7db3fe98..0000000000 --- a/accessible/mac/mozAccessible.h +++ /dev/null @@ -1,181 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "AccessibleWrap.h" -#include "ProxyAccessible.h" - -#import - -#import "mozAccessibleProtocol.h" - -@class mozRootAccessible; - -/** - * All mozAccessibles are either abstract objects (that correspond to XUL - * widgets, HTML frames, etc) or are attached to a certain view; for example - * a document view. When we hand an object off to an AT, we always want - * to give it the represented view, in the latter case. - */ - -namespace mozilla { -namespace a11y { - -inline id -GetObjectOrRepresentedView(id aObject) -{ - return [aObject hasRepresentedView] ? [aObject representedView] : aObject; -} - -inline mozAccessible* -GetNativeFromGeckoAccessible(Accessible* aAccessible) -{ - mozAccessible* native = nil; - aAccessible->GetNativeInterface((void**)&native); - return native; -} - -inline mozAccessible* -GetNativeFromProxy(const ProxyAccessible* aProxy) -{ - return reinterpret_cast(aProxy->GetWrapper()); -} - -} // a11y -} // mozilla - -// This is OR'd with the Accessible owner to indicate the wrap-ee is a proxy. -static const uintptr_t IS_PROXY = 1; - -@interface mozAccessible : NSObject -{ - /** - * Weak reference; it owns us. - */ - uintptr_t mGeckoAccessible; - - /** - * Strong ref to array of children - */ - NSMutableArray* mChildren; - - /** - * Weak reference to the parent - */ - mozAccessible* mParent; - - /** - * The role of our gecko accessible. - */ - mozilla::a11y::role mRole; -} - -// return the Accessible for this mozAccessible if it exists. -- (mozilla::a11y::AccessibleWrap*)getGeckoAccessible; - -// return the ProxyAccessible for this mozAccessible if it exists. -- (mozilla::a11y::ProxyAccessible*)getProxyAccessible; - -// inits with the gecko owner. -- (id)initWithAccessible:(uintptr_t)aGeckoObj; - -// our accessible parent (AXParent) -- (id )parent; - -// a lazy cache of our accessible children (AXChildren). updated -- (NSArray*)children; - -// returns the size of this accessible. -- (NSValue*)size; - -// returns the position, in cocoa coordinates. -- (NSValue*)position; - -// can be overridden to report another role name. -- (NSString*)role; - -// a subrole is a more specialized variant of the role. for example, -// the role might be "textfield", while the subrole is "password textfield". -- (NSString*)subrole; - -// Return the role description, as there are a few exceptions. -- (NSString*)roleDescription; - -// returns the native window we're inside. -- (NSWindow*)window; - -// the value of this element. -- (id)value; - -// name that is associated with this accessible (for buttons, etc) -- (NSString*)title; - -// the accessible description (help text) of this particular instance. -- (NSString*)help; - -- (BOOL)isEnabled; - -// information about focus. -- (BOOL)isFocused; -- (BOOL)canBeFocused; - -// returns NO if for some reason we were unable to focus the element. -- (BOOL)focus; - -// notifications sent out to listening accessible providers. -- (void)didReceiveFocus; -- (void)valueDidChange; -- (void)selectedTextDidChange; -- (void)documentLoadComplete; - -// internal method to retrieve a child at a given index. -- (id)childAt:(uint32_t)i; - -#pragma mark - - -// invalidates and removes all our children from our cached array. -- (void)invalidateChildren; - -/** - * Append a child if they are already cached. - */ -- (void)appendChild:(mozilla::a11y::Accessible*)aAccessible; - -// makes ourselves "expired". after this point, we might be around if someone -// has retained us (e.g., a third-party), but we really contain no information. -- (void)expire; -- (BOOL)isExpired; - -#ifdef DEBUG -- (void)printHierarchy; -- (void)printHierarchyWithLevel:(unsigned)numSpaces; - -- (void)sanityCheckChildren; -- (void)sanityCheckChildren:(NSArray*)theChildren; -#endif - -// ---- NSAccessibility methods ---- // - -// whether to skip this element when traversing the accessibility -// hierarchy. -- (BOOL)accessibilityIsIgnored; - -// called by third-parties to determine the deepest child element under the mouse -- (id)accessibilityHitTest:(NSPoint)point; - -// returns the deepest unignored focused accessible element -- (id)accessibilityFocusedUIElement; - -// a mozAccessible needs to at least provide links to its parent and -// children. -- (NSArray*)accessibilityAttributeNames; - -// value for the specified attribute -- (id)accessibilityAttributeValue:(NSString*)attribute; - -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute; -- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute; - -@end - diff --git a/accessible/mac/mozAccessible.mm b/accessible/mac/mozAccessible.mm deleted file mode 100644 index 07868fea67..0000000000 --- a/accessible/mac/mozAccessible.mm +++ /dev/null @@ -1,1200 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -#import "MacUtils.h" -#import "mozView.h" - -#include "Accessible-inl.h" -#include "nsAccUtils.h" -#include "nsIAccessibleRelation.h" -#include "nsIAccessibleEditableText.h" -#include "nsIPersistentProperties2.h" -#include "Relation.h" -#include "Role.h" -#include "RootAccessible.h" -#include "TableAccessible.h" -#include "TableCellAccessible.h" -#include "mozilla/a11y/PDocAccessible.h" -#include "OuterDocAccessible.h" - -#include "mozilla/Services.h" -#include "nsRect.h" -#include "nsCocoaUtils.h" -#include "nsCoord.h" -#include "nsObjCExceptions.h" -#include "nsWhitespaceTokenizer.h" -#include - -using namespace mozilla; -using namespace mozilla::a11y; - -#define NSAccessibilityMathRootRadicandAttribute @"AXMathRootRadicand" -#define NSAccessibilityMathRootIndexAttribute @"AXMathRootIndex" -#define NSAccessibilityMathFractionNumeratorAttribute @"AXMathFractionNumerator" -#define NSAccessibilityMathFractionDenominatorAttribute @"AXMathFractionDenominator" -#define NSAccessibilityMathBaseAttribute @"AXMathBase" -#define NSAccessibilityMathSubscriptAttribute @"AXMathSubscript" -#define NSAccessibilityMathSuperscriptAttribute @"AXMathSuperscript" -#define NSAccessibilityMathUnderAttribute @"AXMathUnder" -#define NSAccessibilityMathOverAttribute @"AXMathOver" -#define NSAccessibilityMathLineThicknessAttribute @"AXMathLineThickness" -// XXX WebKit also defines the following attributes. -// See bugs 1176970 and 1176983. -// - NSAccessibilityMathFencedOpenAttribute @"AXMathFencedOpen" -// - NSAccessibilityMathFencedCloseAttribute @"AXMathFencedClose" -// - NSAccessibilityMathPrescriptsAttribute @"AXMathPrescripts" -// - NSAccessibilityMathPostscriptsAttribute @"AXMathPostscripts" - -#pragma mark - - -@implementation mozAccessible - -- (id)initWithAccessible:(uintptr_t)aGeckoAccessible -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ((self = [super init])) { - mGeckoAccessible = aGeckoAccessible; - if (aGeckoAccessible & IS_PROXY) - mRole = [self getProxyAccessible]->Role(); - else - mRole = [self getGeckoAccessible]->Role(); - } - - return self; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)dealloc -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [mChildren release]; - [super dealloc]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (mozilla::a11y::AccessibleWrap*)getGeckoAccessible -{ - // Check if mGeckoAccessible points at a proxy - if (mGeckoAccessible & IS_PROXY) - return nil; - - return reinterpret_cast(mGeckoAccessible); -} - -- (mozilla::a11y::ProxyAccessible*)getProxyAccessible -{ - // Check if mGeckoAccessible points at a proxy - if (!(mGeckoAccessible & IS_PROXY)) - return nil; - - return reinterpret_cast(mGeckoAccessible & ~IS_PROXY); -} - -#pragma mark - - -- (BOOL)accessibilityIsIgnored -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - // unknown (either unimplemented, or irrelevant) elements are marked as ignored - // as well as expired elements. - - bool noRole = [[self role] isEqualToString:NSAccessibilityUnknownRole]; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return (noRole && !(accWrap->InteractiveState() & states::FOCUSABLE)); - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return (noRole && !(proxy->State() & states::FOCUSABLE)); - - return true; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (NSArray*)additionalAccessibilityAttributeNames -{ - NSMutableArray* additional = [NSMutableArray array]; - switch (mRole) { - case roles::MATHML_ROOT: - [additional addObject:NSAccessibilityMathRootIndexAttribute]; - [additional addObject:NSAccessibilityMathRootRadicandAttribute]; - break; - case roles::MATHML_SQUARE_ROOT: - [additional addObject:NSAccessibilityMathRootRadicandAttribute]; - break; - case roles::MATHML_FRACTION: - [additional addObject:NSAccessibilityMathFractionNumeratorAttribute]; - [additional addObject:NSAccessibilityMathFractionDenominatorAttribute]; - [additional addObject:NSAccessibilityMathLineThicknessAttribute]; - break; - case roles::MATHML_SUB: - case roles::MATHML_SUP: - case roles::MATHML_SUB_SUP: - [additional addObject:NSAccessibilityMathBaseAttribute]; - [additional addObject:NSAccessibilityMathSubscriptAttribute]; - [additional addObject:NSAccessibilityMathSuperscriptAttribute]; - break; - case roles::MATHML_UNDER: - case roles::MATHML_OVER: - case roles::MATHML_UNDER_OVER: - [additional addObject:NSAccessibilityMathBaseAttribute]; - [additional addObject:NSAccessibilityMathUnderAttribute]; - [additional addObject:NSAccessibilityMathOverAttribute]; - break; - // XXX bug 1176983 - // roles::MATHML_MULTISCRIPTS should also have the following attributes: - // - NSAccessibilityMathPrescriptsAttribute - // - NSAccessibilityMathPostscriptsAttribute - // XXX bug 1176970 - // roles::MATHML_FENCED should also have the following attributes: - // - NSAccessibilityMathFencedOpenAttribute - // - NSAccessibilityMathFencedCloseAttribute - default: - break; - } - - return additional; -} - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // if we're expired, we don't support any attributes. - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return [NSArray array]; - - static NSArray* generalAttributes = nil; - - if (!generalAttributes) { - // standard attributes that are shared and supported by all generic elements. - generalAttributes = [[NSArray alloc] initWithObjects: NSAccessibilityChildrenAttribute, - NSAccessibilityParentAttribute, - NSAccessibilityRoleAttribute, - NSAccessibilityTitleAttribute, - NSAccessibilityValueAttribute, - NSAccessibilitySubroleAttribute, - NSAccessibilityRoleDescriptionAttribute, - NSAccessibilityPositionAttribute, - NSAccessibilityEnabledAttribute, - NSAccessibilitySizeAttribute, - NSAccessibilityWindowAttribute, - NSAccessibilityFocusedAttribute, - NSAccessibilityHelpAttribute, - NSAccessibilityTitleUIElementAttribute, - NSAccessibilityTopLevelUIElementAttribute, -#if DEBUG - @"AXMozDescription", -#endif - nil]; - } - - NSArray* objectAttributes = generalAttributes; - - NSArray* additionalAttributes = [self additionalAccessibilityAttributeNames]; - if ([additionalAttributes count]) - objectAttributes = [objectAttributes arrayByAddingObjectsFromArray:additionalAttributes]; - - return objectAttributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)childAt:(uint32_t)i -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - Accessible* child = accWrap->GetChildAt(i); - return child ? GetNativeFromGeckoAccessible(child) : nil; - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - ProxyAccessible* child = proxy->ChildAt(i); - return child ? GetNativeFromProxy(child) : nil; - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return nil; - -#if DEBUG - if ([attribute isEqualToString:@"AXMozDescription"]) - return [NSString stringWithFormat:@"role = %u native = %@", mRole, [self class]]; -#endif - - if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) - return [self children]; - if ([attribute isEqualToString:NSAccessibilityParentAttribute]) - return [self parent]; - -#ifdef DEBUG_hakan - NSLog (@"(%@ responding to attr %@)", self, attribute); -#endif - - if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) - return [self role]; - if ([attribute isEqualToString:NSAccessibilityPositionAttribute]) - return [self position]; - if ([attribute isEqualToString:NSAccessibilitySubroleAttribute]) - return [self subrole]; - if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) - return [NSNumber numberWithBool:[self isEnabled]]; - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) - return [self value]; - if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) - return [self roleDescription]; - if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) - return [NSNumber numberWithBool:[self isFocused]]; - if ([attribute isEqualToString:NSAccessibilitySizeAttribute]) - return [self size]; - if ([attribute isEqualToString:NSAccessibilityWindowAttribute]) - return [self window]; - if ([attribute isEqualToString:NSAccessibilityTopLevelUIElementAttribute]) - return [self window]; - if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) - return [self title]; - if ([attribute isEqualToString:NSAccessibilityTitleUIElementAttribute]) { - if (accWrap) { - Relation rel = accWrap->RelationByType(RelationType::LABELLED_BY); - Accessible* tempAcc = rel.Next(); - return tempAcc ? GetNativeFromGeckoAccessible(tempAcc) : nil; - } - nsTArray rel = proxy->RelationByType(RelationType::LABELLED_BY); - ProxyAccessible* tempProxy = rel.SafeElementAt(0); - return tempProxy ? GetNativeFromProxy(tempProxy) : nil; - } - if ([attribute isEqualToString:NSAccessibilityHelpAttribute]) - return [self help]; - - switch (mRole) { - case roles::MATHML_ROOT: - if ([attribute isEqualToString:NSAccessibilityMathRootRadicandAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathRootIndexAttribute]) - return [self childAt:1]; - break; - case roles::MATHML_SQUARE_ROOT: - if ([attribute isEqualToString:NSAccessibilityMathRootRadicandAttribute]) - return [self childAt:0]; - break; - case roles::MATHML_FRACTION: - if ([attribute isEqualToString:NSAccessibilityMathFractionNumeratorAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathFractionDenominatorAttribute]) - return [self childAt:1]; - if ([attribute isEqualToString:NSAccessibilityMathLineThicknessAttribute]) { - // WebKit sets line thickness to some logical value parsed in the - // renderer object of the element. It's not clear whether the - // exact value is relevant to assistive technologies. From a semantic - // point of view, the only important point is to distinguish between - // elements that have a fraction bar and those that do not. - // Per the MathML 3 spec, the latter happens iff the linethickness - // attribute is of the form [zero-float][optional-unit]. In that case we - // set line thickness to zero and in the other cases we set it to one. - nsAutoString thickness; - if (accWrap) { - nsCOMPtr attributes = accWrap->Attributes(); - nsAccUtils::GetAccAttr(attributes, nsGkAtoms::linethickness_, thickness); - } else { - AutoTArray attrs; - proxy->Attributes(&attrs); - for (size_t i = 0 ; i < attrs.Length() ; i++) { - if (attrs.ElementAt(i).Name() == "thickness") { - thickness = attrs.ElementAt(i).Value(); - break; - } - } - } - double value = 1.0; - if (!thickness.IsEmpty()) - value = PR_strtod(NS_LossyConvertUTF16toASCII(thickness).get(), - nullptr); - return [NSNumber numberWithInteger:(value ? 1 : 0)]; - } - break; - case roles::MATHML_SUB: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathSubscriptAttribute]) - return [self childAt:1]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathSuperscriptAttribute]) - return nil; -#endif - break; - case roles::MATHML_SUP: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathSubscriptAttribute]) - return nil; -#endif - if ([attribute isEqualToString:NSAccessibilityMathSuperscriptAttribute]) - return [self childAt:1]; - break; - case roles::MATHML_SUB_SUP: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathSubscriptAttribute]) - return [self childAt:1]; - if ([attribute isEqualToString:NSAccessibilityMathSuperscriptAttribute]) - return [self childAt:2]; - break; - case roles::MATHML_UNDER: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathUnderAttribute]) - return [self childAt:1]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathOverAttribute]) - return nil; -#endif - break; - case roles::MATHML_OVER: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; -#ifdef DEBUG - if ([attribute isEqualToString:NSAccessibilityMathUnderAttribute]) - return nil; -#endif - if ([attribute isEqualToString:NSAccessibilityMathOverAttribute]) - return [self childAt:1]; - break; - case roles::MATHML_UNDER_OVER: - if ([attribute isEqualToString:NSAccessibilityMathBaseAttribute]) - return [self childAt:0]; - if ([attribute isEqualToString:NSAccessibilityMathUnderAttribute]) - return [self childAt:1]; - if ([attribute isEqualToString:NSAccessibilityMathOverAttribute]) - return [self childAt:2]; - break; - // XXX bug 1176983 - // roles::MATHML_MULTISCRIPTS should also have the following attributes: - // - NSAccessibilityMathPrescriptsAttribute - // - NSAccessibilityMathPostscriptsAttribute - // XXX bug 1176970 - // roles::MATHML_FENCED should also have the following attributes: - // - NSAccessibilityMathFencedOpenAttribute - // - NSAccessibilityMathFencedCloseAttribute - default: - break; - } - -#ifdef DEBUG - NSLog (@"!!! %@ can't respond to attribute %@", self, attribute); -#endif - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) - return [self canBeFocused]; - - return NO; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - -#ifdef DEBUG_hakan - NSLog (@"[%@] %@='%@'", self, attribute, value); -#endif - - // we only support focusing elements so far. - if ([attribute isEqualToString:NSAccessibilityFocusedAttribute] && [value boolValue]) - [self focus]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (id)accessibilityHitTest:(NSPoint)point -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return nil; - - // Convert the given screen-global point in the cocoa coordinate system (with - // origin in the bottom-left corner of the screen) into point in the Gecko - // coordinate system (with origin in a top-left screen point). - NSScreen* mainView = [[NSScreen screens] objectAtIndex:0]; - NSPoint tmpPoint = NSMakePoint(point.x, - [mainView frame].size.height - point.y); - LayoutDeviceIntPoint geckoPoint = nsCocoaUtils:: - CocoaPointsToDevPixels(tmpPoint, nsCocoaUtils::GetBackingScaleFactor(mainView)); - - mozAccessible* nativeChild = nil; - if (accWrap) { - Accessible* child = accWrap->ChildAtPoint(geckoPoint.x, geckoPoint.y, - Accessible::eDeepestChild); - if (child) - nativeChild = GetNativeFromGeckoAccessible(child); - } else if (proxy) { - ProxyAccessible* child = proxy->ChildAtPoint(geckoPoint.x, geckoPoint.y, - Accessible::eDeepestChild); - if (child) - nativeChild = GetNativeFromProxy(child); - } - - if (nativeChild) - return nativeChild; - - // if we didn't find anything, return ourself or child view. - return GetObjectOrRepresentedView(self); -} - -- (NSArray*)accessibilityActionNames -{ - return nil; -} - -- (NSString*)accessibilityActionDescription:(NSString*)action -{ - // by default we return whatever the MacOS API know about. - // if you have custom actions, override. - return NSAccessibilityActionDescription(action); -} - -- (void)accessibilityPerformAction:(NSString*)action -{ -} - -- (id)accessibilityFocusedUIElement -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return nil; - - mozAccessible* focusedChild = nil; - if (accWrap) { - Accessible* focusedGeckoChild = accWrap->FocusedChild(); - if (focusedGeckoChild) - focusedChild = GetNativeFromGeckoAccessible(focusedGeckoChild); - } else if (proxy) { - ProxyAccessible* focusedGeckoChild = proxy->FocusedChild(); - if (focusedGeckoChild) - focusedChild = GetNativeFromProxy(focusedGeckoChild); - } - - if (focusedChild) - return GetObjectOrRepresentedView(focusedChild); - - // return ourself if we can't get a native focused child. - return GetObjectOrRepresentedView(self); -} - -#pragma mark - - -- (id )parent -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - id nativeParent = nil; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - Accessible* accessibleParent = accWrap->Parent(); - if (accessibleParent) - nativeParent = GetNativeFromGeckoAccessible(accessibleParent); - if (nativeParent) - return GetObjectOrRepresentedView(nativeParent); - - // Return native of root accessible if we have no direct parent - nativeParent = GetNativeFromGeckoAccessible(accWrap->RootAccessible()); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if (ProxyAccessible* proxyParent = proxy->Parent()) { - nativeParent = GetNativeFromProxy(proxyParent); - } - - if (nativeParent) - return GetObjectOrRepresentedView(nativeParent); - - Accessible* outerDoc = proxy->OuterDocOfRemoteBrowser(); - nativeParent = outerDoc ? - GetNativeFromGeckoAccessible(outerDoc) : nil; - } else { - return nil; - } - - NSAssert1 (nativeParent, @"!!! we can't find a parent for %@", self); - - return GetObjectOrRepresentedView(nativeParent); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)hasRepresentedView -{ - return NO; -} - -- (id)representedView -{ - return nil; -} - -- (BOOL)isRoot -{ - return NO; -} - -// gets our native children lazily. -// returns nil when there are no children. -- (NSArray*)children -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (mChildren) - return mChildren; - - // get the array of children. - mChildren = [[NSMutableArray alloc] init]; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - if (accWrap) { - uint32_t childCount = accWrap->ChildCount(); - for (uint32_t childIdx = 0; childIdx < childCount; childIdx++) { - mozAccessible* nativeChild = GetNativeFromGeckoAccessible(accWrap->GetChildAt(childIdx)); - if (nativeChild) - [mChildren addObject:nativeChild]; - } - - // children from child if this is an outerdoc - OuterDocAccessible* docOwner = accWrap->AsOuterDoc(); - if (docOwner) { - if (ProxyAccessible* proxyDoc = docOwner->RemoteChildDoc()) { - mozAccessible* nativeRemoteChild = GetNativeFromProxy(proxyDoc); - [mChildren insertObject:nativeRemoteChild atIndex:0]; - NSAssert1 (nativeRemoteChild, @"%@ found a child remote doc missing a native\n", self); - } - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - uint32_t childCount = proxy->ChildrenCount(); - for (uint32_t childIdx = 0; childIdx < childCount; childIdx++) { - mozAccessible* nativeChild = GetNativeFromProxy(proxy->ChildAt(childIdx)); - if (nativeChild) - [mChildren addObject:nativeChild]; - } - - } - - return mChildren; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)position -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsIntRect rect; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - rect = accWrap->Bounds(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - rect = proxy->Bounds(); - else - return nil; - - NSScreen* mainView = [[NSScreen screens] objectAtIndex:0]; - CGFloat scaleFactor = nsCocoaUtils::GetBackingScaleFactor(mainView); - NSPoint p = NSMakePoint(static_cast(rect.x) / scaleFactor, - [mainView frame].size.height - static_cast(rect.y + rect.height) / scaleFactor); - - return [NSValue valueWithPoint:p]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)size -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsIntRect rect; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - rect = accWrap->Bounds(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - rect = proxy->Bounds(); - else - return nil; - - CGFloat scaleFactor = - nsCocoaUtils::GetBackingScaleFactor([[NSScreen screens] objectAtIndex:0]); - return [NSValue valueWithSize:NSMakeSize(static_cast(rect.width) / scaleFactor, - static_cast(rect.height) / scaleFactor)]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSString*)role -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - if (accWrap) { - #ifdef DEBUG_A11Y - NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap), - "Does not support Text when it should"); - #endif - } else if (![self getProxyAccessible]) { - return nil; - } - -#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role, nameRule) \ - case roles::geckoRole: \ - return macRole; - - switch (mRole) { -#include "RoleMap.h" - default: - NS_NOTREACHED("Unknown role."); - return NSAccessibilityUnknownRole; - } - -#undef ROLE -} - -- (NSString*)subrole -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - - // Deal with landmarks first - nsIAtom* landmark = nullptr; - if (accWrap) - landmark = accWrap->LandmarkRole(); - else if (proxy) - landmark = proxy->LandmarkRole(); - - if (landmark) { - if (landmark == nsGkAtoms::application) - return @"AXLandmarkApplication"; - if (landmark == nsGkAtoms::banner) - return @"AXLandmarkBanner"; - if (landmark == nsGkAtoms::complementary) - return @"AXLandmarkComplementary"; - if (landmark == nsGkAtoms::contentinfo) - return @"AXLandmarkContentInfo"; - if (landmark == nsGkAtoms::form) - return @"AXLandmarkForm"; - if (landmark == nsGkAtoms::main) - return @"AXLandmarkMain"; - if (landmark == nsGkAtoms::navigation) - return @"AXLandmarkNavigation"; - if (landmark == nsGkAtoms::search) - return @"AXLandmarkSearch"; - if (landmark == nsGkAtoms::searchbox) - return @"AXSearchField"; - } - - // Now, deal with widget roles - nsIAtom* roleAtom = nullptr; - if (accWrap && accWrap->HasARIARole()) { - const nsRoleMapEntry* roleMap = accWrap->ARIARoleMap(); - roleAtom = *roleMap->roleAtom; - } - if (proxy) - roleAtom = proxy->ARIARoleAtom(); - - if (roleAtom) { - if (roleAtom == nsGkAtoms::alert) - return @"AXApplicationAlert"; - if (roleAtom == nsGkAtoms::alertdialog) - return @"AXApplicationAlertDialog"; - if (roleAtom == nsGkAtoms::article) - return @"AXDocumentArticle"; - if (roleAtom == nsGkAtoms::dialog) - return @"AXApplicationDialog"; - if (roleAtom == nsGkAtoms::document) - return @"AXDocument"; - if (roleAtom == nsGkAtoms::log_) - return @"AXApplicationLog"; - if (roleAtom == nsGkAtoms::marquee) - return @"AXApplicationMarquee"; - if (roleAtom == nsGkAtoms::math) - return @"AXDocumentMath"; - if (roleAtom == nsGkAtoms::note_) - return @"AXDocumentNote"; - if (roleAtom == nsGkAtoms::region) - return @"AXDocumentRegion"; - if (roleAtom == nsGkAtoms::status) - return @"AXApplicationStatus"; - if (roleAtom == nsGkAtoms::tabpanel) - return @"AXTabPanel"; - if (roleAtom == nsGkAtoms::timer) - return @"AXApplicationTimer"; - if (roleAtom == nsGkAtoms::tooltip) - return @"AXUserInterfaceTooltip"; - } - - switch (mRole) { - case roles::LIST: - return @"AXContentList"; // 10.6+ NSAccessibilityContentListSubrole; - - case roles::ENTRY: - if ((accWrap && accWrap->IsSearchbox()) || - (proxy && proxy->IsSearchbox())) - return @"AXSearchField"; - break; - - case roles::DEFINITION_LIST: - return @"AXDefinitionList"; // 10.6+ NSAccessibilityDefinitionListSubrole; - - case roles::TERM: - return @"AXTerm"; - - case roles::DEFINITION: - return @"AXDefinition"; - - case roles::MATHML_MATH: - return @"AXDocumentMath"; - - case roles::MATHML_FRACTION: - return @"AXMathFraction"; - - case roles::MATHML_FENCED: - // XXX bug 1176970 - // This should be AXMathFence, but doing so without implementing the - // whole fence interface seems to make VoiceOver crash, so we present it - // as a row for now. - return @"AXMathRow"; - - case roles::MATHML_SUB: - case roles::MATHML_SUP: - case roles::MATHML_SUB_SUP: - return @"AXMathSubscriptSuperscript"; - - case roles::MATHML_ROW: - case roles::MATHML_STYLE: - case roles::MATHML_ERROR: - return @"AXMathRow"; - - case roles::MATHML_UNDER: - case roles::MATHML_OVER: - case roles::MATHML_UNDER_OVER: - return @"AXMathUnderOver"; - - case roles::MATHML_SQUARE_ROOT: - return @"AXMathSquareRoot"; - - case roles::MATHML_ROOT: - return @"AXMathRoot"; - - case roles::MATHML_TEXT: - return @"AXMathText"; - - case roles::MATHML_NUMBER: - return @"AXMathNumber"; - - case roles::MATHML_IDENTIFIER: - return @"AXMathIdentifier"; - - case roles::MATHML_TABLE: - return @"AXMathTable"; - - case roles::MATHML_TABLE_ROW: - return @"AXMathTableRow"; - - case roles::MATHML_CELL: - return @"AXMathTableCell"; - - // XXX: NSAccessibility also uses subroles AXMathSeparatorOperator and - // AXMathFenceOperator. We should use the NS_MATHML_OPERATOR_FENCE and - // NS_MATHML_OPERATOR_SEPARATOR bits of nsOperatorFlags, but currently they - // are only available from the MathML layout code. Hence we just fallback - // to subrole AXMathOperator for now. - // XXX bug 1175747 WebKit also creates anonymous operators for - // which have subroles AXMathSeparatorOperator and AXMathFenceOperator. - case roles::MATHML_OPERATOR: - return @"AXMathOperator"; - - case roles::MATHML_MULTISCRIPTS: - return @"AXMathMultiscript"; - - case roles::SWITCH: - return @"AXSwitch"; - - case roles::ALERT: - return @"AXApplicationAlert"; - - case roles::SEPARATOR: - return @"AXContentSeparator"; - - case roles::PROPERTYPAGE: - return @"AXTabPanel"; - - case roles::DETAILS: - return @"AXDetails"; - - case roles::SUMMARY: - return @"AXSummary"; - - default: - break; - } - - return nil; -} - -struct RoleDescrMap -{ - NSString* role; - const nsString description; -}; - -static const RoleDescrMap sRoleDescrMap[] = { - { @"AXApplicationAlert", NS_LITERAL_STRING("alert") }, - { @"AXApplicationAlertDialog", NS_LITERAL_STRING("alertDialog") }, - { @"AXApplicationLog", NS_LITERAL_STRING("log") }, - { @"AXApplicationMarquee", NS_LITERAL_STRING("marquee") }, - { @"AXApplicationStatus", NS_LITERAL_STRING("status") }, - { @"AXApplicationTimer", NS_LITERAL_STRING("timer") }, - { @"AXContentSeparator", NS_LITERAL_STRING("separator") }, - { @"AXDefinition", NS_LITERAL_STRING("definition") }, - { @"AXDocument", NS_LITERAL_STRING("document") }, - { @"AXDocumentArticle", NS_LITERAL_STRING("article") }, - { @"AXDocumentMath", NS_LITERAL_STRING("math") }, - { @"AXDocumentNote", NS_LITERAL_STRING("note") }, - { @"AXDocumentRegion", NS_LITERAL_STRING("region") }, - { @"AXLandmarkApplication", NS_LITERAL_STRING("application") }, - { @"AXLandmarkBanner", NS_LITERAL_STRING("banner") }, - { @"AXLandmarkComplementary", NS_LITERAL_STRING("complementary") }, - { @"AXLandmarkContentInfo", NS_LITERAL_STRING("content") }, - { @"AXLandmarkMain", NS_LITERAL_STRING("main") }, - { @"AXLandmarkNavigation", NS_LITERAL_STRING("navigation") }, - { @"AXLandmarkSearch", NS_LITERAL_STRING("search") }, - { @"AXSearchField", NS_LITERAL_STRING("searchTextField") }, - { @"AXTabPanel", NS_LITERAL_STRING("tabPanel") }, - { @"AXTerm", NS_LITERAL_STRING("term") }, - { @"AXUserInterfaceTooltip", NS_LITERAL_STRING("tooltip") } -}; - -struct RoleDescrComparator -{ - const NSString* mRole; - explicit RoleDescrComparator(const NSString* aRole) : mRole(aRole) {} - int operator()(const RoleDescrMap& aEntry) const { - return [mRole compare:aEntry.role]; - } -}; - -- (NSString*)roleDescription -{ - if (mRole == roles::DOCUMENT) - return utils::LocalizedString(NS_LITERAL_STRING("htmlContent")); - - NSString* subrole = [self subrole]; - - if (subrole) { - size_t idx = 0; - if (BinarySearchIf(sRoleDescrMap, 0, ArrayLength(sRoleDescrMap), - RoleDescrComparator(subrole), &idx)) { - return utils::LocalizedString(sRoleDescrMap[idx].description); - } - } - - return NSAccessibilityRoleDescription([self role], subrole); -} - -- (NSString*)title -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsAutoString title; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->Name(title); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->Name(title); - - return nsCocoaUtils::ToNSString(title); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)value -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - nsAutoString value; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->Value(value); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->Value(value); - - return nsCocoaUtils::ToNSString(value); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)valueDidChange -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - -#ifdef DEBUG_hakan - NSLog(@"%@'s value changed!", self); -#endif - // sending out a notification is expensive, so we don't do it other than for really important objects, - // like mozTextAccessible. - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)selectedTextDidChange -{ - // Do nothing. mozTextAccessible will. -} - -- (void)documentLoadComplete -{ - id realSelf = GetObjectOrRepresentedView(self); - NSAccessibilityPostNotification(realSelf, NSAccessibilityFocusedUIElementChangedNotification); - NSAccessibilityPostNotification(realSelf, @"AXLoadComplete"); - NSAccessibilityPostNotification(realSelf, @"AXLayoutComplete"); -} - -- (NSString*)help -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // What needs to go here is actually the accDescription of an item. - // The MSAA acc_help method has nothing to do with this one. - nsAutoString helpText; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->Description(helpText); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->Description(helpText); - - return nsCocoaUtils::ToNSString(helpText); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -// objc-style description (from NSObject); not to be confused with the accessible description above. -- (NSString*)description -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - return [NSString stringWithFormat:@"(%p) %@", self, [self role]]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)isFocused -{ - return FocusMgr()->IsFocused([self getGeckoAccessible]); -} - -- (BOOL)canBeFocused -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return accWrap->InteractiveState() & states::FOCUSABLE; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return proxy->State() & states::FOCUSABLE; - - return false; -} - -- (BOOL)focus -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->TakeFocus(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->TakeFocus(); - else - return NO; - - return YES; -} - -- (BOOL)isEnabled -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return ((accWrap->InteractiveState() & states::UNAVAILABLE) == 0); - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return ((proxy->State() & states::UNAVAILABLE) == 0); - - return false; -} - -// The root accessible calls this when the focused node was -// changed to us. -- (void)didReceiveFocus -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - -#ifdef DEBUG_hakan - NSLog (@"%@ received focus!", self); -#endif - NSAccessibilityPostNotification(GetObjectOrRepresentedView(self), - NSAccessibilityFocusedUIElementChangedNotification); - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (NSWindow*)window -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // Get a pointer to the native window (NSWindow) we reside in. - NSWindow *nativeWindow = nil; - DocAccessible* docAcc = nullptr; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - docAcc = accWrap->Document(); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - Accessible* outerDoc = proxy->OuterDocOfRemoteBrowser(); - if (outerDoc) - docAcc = outerDoc->Document(); - } - - if (docAcc) - nativeWindow = static_cast(docAcc->GetNativeWindow()); - - NSAssert1(nativeWindow, @"Could not get native window for %@", self); - return nativeWindow; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)invalidateChildren -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - // make room for new children - [mChildren release]; - mChildren = nil; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)appendChild:(Accessible*)aAccessible -{ - // if mChildren is nil, then we don't even need to bother - if (!mChildren) - return; - - mozAccessible *curNative = GetNativeFromGeckoAccessible(aAccessible); - if (curNative) - [mChildren addObject:curNative]; -} - -- (void)expire -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [self invalidateChildren]; - - mGeckoAccessible = 0; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (BOOL)isExpired -{ - return ![self getGeckoAccessible] && ![self getProxyAccessible]; -} - -#pragma mark - -#pragma mark Debug methods -#pragma mark - - -#ifdef DEBUG - -// will check that our children actually reference us as their -// parent. -- (void)sanityCheckChildren:(NSArray *)children -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - NSEnumerator *iter = [children objectEnumerator]; - mozAccessible *curObj = nil; - - NSLog(@"sanity checking %@", self); - - while ((curObj = [iter nextObject])) { - id realSelf = GetObjectOrRepresentedView(self); - NSLog(@"checking %@", realSelf); - NSAssert2([curObj parent] == realSelf, - @"!!! %@ not returning %@ as AXParent, even though it is a AXChild of it!", curObj, realSelf); - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)sanityCheckChildren -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [self sanityCheckChildren:[self children]]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)printHierarchy -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [self printHierarchyWithLevel:0]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)printHierarchyWithLevel:(unsigned)level -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - NSAssert(![self isExpired], @"!!! trying to print hierarchy of expired object!"); - - // print this node - NSMutableString *indent = [NSMutableString stringWithCapacity:level]; - unsigned i=0; - for (;i - -#import "mozView.h" - -/* This protocol's primary use is so widget/cocoa can talk back to us - properly. - - ChildView owns the topmost mozRootAccessible, and needs to take care of setting up - that parent/child relationship. - - This protocol is thus used to make sure it knows it's talking to us, and not - just some random |id|. -*/ - -@protocol mozAccessible - -// returns whether this accessible is the root accessible. there is one -// root accessible per window. -- (BOOL)isRoot; - -// some mozAccessibles implement accessibility support in place of another object. for example, -// ChildView gets its support from us. -// -// instead of returning a mozAccessible to the OS when it wants an object, we need to pass the view we represent, so the -// OS doesn't get confused and think we return some random object. -- (BOOL)hasRepresentedView; -- (id)representedView; - -#ifdef DEBUG -// debug utility that will print the native accessibility tree, starting -// at this node. -- (void)printHierarchy; -#endif - -/*** general ***/ - -// returns the accessible at the specified point. -- (id)accessibilityHitTest:(NSPoint)point; - -// whether this element is flagged as ignored. -- (BOOL)accessibilityIsIgnored; - -// currently focused UI element (possibly a child accessible) -- (id)accessibilityFocusedUIElement; - -/*** attributes ***/ - -// all supported attributes -- (NSArray*)accessibilityAttributeNames; - -// value for given attribute. -- (id)accessibilityAttributeValue:(NSString*)attribute; - -// whether a particular attribute can be modified -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute; - -/*** actions ***/ - -- (NSArray*)accessibilityActionNames; -- (NSString*)accessibilityActionDescription:(NSString*)action; -- (void)accessibilityPerformAction:(NSString*)action; - -@end - diff --git a/accessible/mac/mozActionElements.h b/accessible/mac/mozActionElements.h deleted file mode 100644 index a325921eb8..0000000000 --- a/accessible/mac/mozActionElements.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#import "mozAccessible.h" - -/* Simple subclasses for things like checkboxes, buttons, etc. */ - -@interface mozButtonAccessible : mozAccessible - { - } -- (BOOL)hasPopup; -- (void)click; -- (BOOL)isTab; -@end - -@interface mozCheckboxAccessible : mozButtonAccessible -// returns one of the constants defined in CheckboxValue -- (int)isChecked; -@end - -/* Class for tabs - not individual tabs */ -@interface mozTabsAccessible : mozAccessible -{ - NSMutableArray* mTabs; -} --(id)tabs; -@end - -/** - * Accessible for a PANE - */ -@interface mozPaneAccessible : mozAccessible - -@end diff --git a/accessible/mac/mozActionElements.mm b/accessible/mac/mozActionElements.mm deleted file mode 100644 index 5decd6cccc..0000000000 --- a/accessible/mac/mozActionElements.mm +++ /dev/null @@ -1,340 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozActionElements.h" - -#import "MacUtils.h" -#include "Accessible-inl.h" -#include "DocAccessible.h" -#include "XULTabAccessible.h" - -#include "nsDeckFrame.h" -#include "nsObjCExceptions.h" - -using namespace mozilla::a11y; - -enum CheckboxValue { - // these constants correspond to the values in the OS - kUnchecked = 0, - kChecked = 1, - kMixed = 2 -}; - -@implementation mozButtonAccessible - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - static NSArray *attributes = nil; - if (!attributes) { - attributes = [[NSArray alloc] initWithObjects:NSAccessibilityParentAttribute, // required - NSAccessibilityRoleAttribute, // required - NSAccessibilityRoleDescriptionAttribute, - NSAccessibilityPositionAttribute, // required - NSAccessibilitySizeAttribute, // required - NSAccessibilityWindowAttribute, // required - NSAccessibilityPositionAttribute, // required - NSAccessibilityTopLevelUIElementAttribute, // required - NSAccessibilityHelpAttribute, - NSAccessibilityEnabledAttribute, // required - NSAccessibilityFocusedAttribute, // required - NSAccessibilityTitleAttribute, // required - NSAccessibilityChildrenAttribute, - NSAccessibilityDescriptionAttribute, -#if DEBUG - @"AXMozDescription", -#endif - nil]; - } - return attributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { - if ([self hasPopup]) - return [self children]; - return nil; - } - - if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) { - if ([self isTab]) - return utils::LocalizedString(NS_LITERAL_STRING("tab")); - - return NSAccessibilityRoleDescription([self role], nil); - } - - return [super accessibilityAttributeValue:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)accessibilityIsIgnored -{ - return ![self getGeckoAccessible] && ![self getProxyAccessible]; -} - -- (NSArray*)accessibilityActionNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([self isEnabled]) { - if ([self hasPopup]) - return [NSArray arrayWithObjects:NSAccessibilityPressAction, - NSAccessibilityShowMenuAction, - nil]; - return [NSArray arrayWithObject:NSAccessibilityPressAction]; - } - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSString*)accessibilityActionDescription:(NSString*)action -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([action isEqualToString:NSAccessibilityPressAction]) { - if ([self isTab]) - return utils::LocalizedString(NS_LITERAL_STRING("switch")); - - return @"press button"; // XXX: localize this later? - } - - if ([self hasPopup]) { - if ([action isEqualToString:NSAccessibilityShowMenuAction]) - return @"show menu"; - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (void)accessibilityPerformAction:(NSString*)action -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - if ([self isEnabled] && [action isEqualToString:NSAccessibilityPressAction]) { - // TODO: this should bring up the menu, but currently doesn't. - // once msaa and atk have merged better, they will implement - // the action needed to show the menu. - [self click]; - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)click -{ - // both buttons and checkboxes have only one action. we should really stop using arbitrary - // arrays with actions, and define constants for these actions. - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - accWrap->DoAction(0); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - proxy->DoAction(0); -} - -- (BOOL)isTab -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return accWrap->Role() == roles::PAGETAB; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return proxy->Role() == roles::PAGETAB; - - return false; -} - -- (BOOL)hasPopup -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - return accWrap->NativeState() & states::HASPOPUP; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return proxy->NativeState() & states::HASPOPUP; - - return false; -} - -@end - -@implementation mozCheckboxAccessible - -- (NSString*)accessibilityActionDescription:(NSString*)action -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([action isEqualToString:NSAccessibilityPressAction]) { - if ([self isChecked] != kUnchecked) - return @"uncheck checkbox"; // XXX: localize this later? - - return @"check checkbox"; // XXX: localize this later? - } - - return nil; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (int)isChecked -{ - uint64_t state = 0; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) - state = accWrap->NativeState(); - else if (ProxyAccessible* proxy = [self getProxyAccessible]) - state = proxy->NativeState(); - - // check if we're checked or in a mixed state - if (state & states::CHECKED) { - return (state & states::MIXED) ? kMixed : kChecked; - } - - return kUnchecked; -} - -- (id)value -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - return [NSNumber numberWithInt:[self isChecked]]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -@end - -@implementation mozTabsAccessible - -- (void)dealloc -{ - [mTabs release]; - - [super dealloc]; -} - -- (NSArray*)accessibilityAttributeNames -{ - // standard attributes that are shared and supported by root accessible (AXMain) elements. - static NSMutableArray* attributes = nil; - - if (!attributes) { - attributes = [[super accessibilityAttributeNames] mutableCopy]; - [attributes addObject:NSAccessibilityContentsAttribute]; - [attributes addObject:NSAccessibilityTabsAttribute]; - } - - return attributes; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - if ([attribute isEqualToString:NSAccessibilityContentsAttribute]) - return [super children]; - if ([attribute isEqualToString:NSAccessibilityTabsAttribute]) - return [self tabs]; - - return [super accessibilityAttributeValue:attribute]; -} - -/** - * Returns the selected tab (the mozAccessible) - */ -- (id)value -{ - mozAccessible* nativeAcc = nil; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - if (Accessible* accTab = accWrap->GetSelectedItem(0)) { - accTab->GetNativeInterface((void**)&nativeAcc); - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if (ProxyAccessible* proxyTab = proxy->GetSelectedItem(0)) { - nativeAcc = GetNativeFromProxy(proxyTab); - } - } - - return nativeAcc; -} - -/** - * Return the mozAccessibles that are the tabs. - */ -- (id)tabs -{ - if (mTabs) - return mTabs; - - NSArray* children = [self children]; - NSEnumerator* enumerator = [children objectEnumerator]; - mTabs = [[NSMutableArray alloc] init]; - - id obj; - while ((obj = [enumerator nextObject])) - if ([obj isTab]) - [mTabs addObject:obj]; - - return mTabs; -} - -- (void)invalidateChildren -{ - [super invalidateChildren]; - - [mTabs release]; - mTabs = nil; -} - -@end - -@implementation mozPaneAccessible - -- (NSUInteger)accessibilityArrayAttributeCount:(NSString*)attribute -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) - return 0; - - // By default this calls -[[mozAccessible children] count]. - // Since we don't cache mChildren. This is faster. - if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { - if (accWrap) - return accWrap->ChildCount() ? 1 : 0; - - return proxy->ChildrenCount() ? 1 : 0; - } - - return [super accessibilityArrayAttributeCount:attribute]; -} - -- (NSArray*)children -{ - if (![self getGeckoAccessible]) - return nil; - - nsDeckFrame* deckFrame = do_QueryFrame([self getGeckoAccessible]->GetFrame()); - nsIFrame* selectedFrame = deckFrame ? deckFrame->GetSelectedBox() : nullptr; - - Accessible* selectedAcc = nullptr; - if (selectedFrame) { - nsINode* node = selectedFrame->GetContent(); - selectedAcc = [self getGeckoAccessible]->Document()->GetAccessible(node); - } - - if (selectedAcc) { - mozAccessible *curNative = GetNativeFromGeckoAccessible(selectedAcc); - if (curNative) - return [NSArray arrayWithObjects:GetObjectOrRepresentedView(curNative), nil]; - } - - return nil; -} - -@end diff --git a/accessible/mac/mozDocAccessible.h b/accessible/mac/mozDocAccessible.h deleted file mode 100644 index c381773110..0000000000 --- a/accessible/mac/mozDocAccessible.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#import "mozAccessible.h" - -// our protocol that we implement (so cocoa widgets can talk to us) -#import "mozAccessibleProtocol.h" - -/* - The root accessible. There is one per window. - Created by the RootAccessibleWrap. -*/ -@interface mozRootAccessible : mozAccessible -{ - // the mozView that we're representing. - // all outside communication goes through the mozView. - // in reality, it's just piping all calls to us, and we're - // doing its dirty work! - // - // whenever someone asks who we are (e.g., a child asking - // for its parent, or our parent asking for its child), we'll - // respond the mozView. it is absolutely necessary for third- - // party tools that we do this! - // - // /hwaara - id mParallelView; // weak ref -} -@end diff --git a/accessible/mac/mozDocAccessible.mm b/accessible/mac/mozDocAccessible.mm deleted file mode 100644 index 4bae81f01c..0000000000 --- a/accessible/mac/mozDocAccessible.mm +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "RootAccessibleWrap.h" - -#import "mozDocAccessible.h" - -#import "mozView.h" - -// This must be included last: -#include "nsObjCExceptions.h" - -using namespace mozilla::a11y; - -static id -getNativeViewFromRootAccessible(Accessible* aAccessible) -{ - RootAccessibleWrap* root = - static_cast(aAccessible->AsRoot()); - id nativeView = nil; - root->GetNativeWidget ((void**)&nativeView); - return nativeView; -} - -#pragma mark - - -@implementation mozRootAccessible - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - // if we're expired, we don't support any attributes. - if (![self getGeckoAccessible]) - return [NSArray array]; - - // standard attributes that are shared and supported by root accessible (AXMain) elements. - static NSMutableArray* attributes = nil; - - if (!attributes) { - attributes = [[super accessibilityAttributeNames] mutableCopy]; - [attributes addObject:NSAccessibilityMainAttribute]; - [attributes addObject:NSAccessibilityMinimizedAttribute]; - } - - return attributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([attribute isEqualToString:NSAccessibilityMainAttribute]) - return [NSNumber numberWithBool:[[self window] isMainWindow]]; - if ([attribute isEqualToString:NSAccessibilityMinimizedAttribute]) - return [NSNumber numberWithBool:[[self window] isMiniaturized]]; - - return [super accessibilityAttributeValue:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - - -// return the AXParent that our parallell NSView tells us about. -- (id)parent -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (!mParallelView) - mParallelView = (id)[self representedView]; - - if (mParallelView) - return [mParallelView accessibilityAttributeValue:NSAccessibilityParentAttribute]; - - NSAssert(mParallelView, @"we're a root accessible w/o native view?"); - return [super parent]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)hasRepresentedView -{ - return YES; -} - -// this will return our parallell NSView. see mozDocAccessible.h -- (id)representedView -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if (mParallelView) - return (id)mParallelView; - - mParallelView = getNativeViewFromRootAccessible ([self getGeckoAccessible]); - - NSAssert(mParallelView, @"can't return root accessible's native parallel view."); - return mParallelView; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (BOOL)isRoot -{ - return YES; -} - -@end diff --git a/accessible/mac/mozHTMLAccessible.h b/accessible/mac/mozHTMLAccessible.h deleted file mode 100644 index c70a3c2a25..0000000000 --- a/accessible/mac/mozHTMLAccessible.h +++ /dev/null @@ -1,16 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -@interface mozHeadingAccessible : mozAccessible - -@end - -@interface mozLinkAccessible : mozAccessible - -@end diff --git a/accessible/mac/mozHTMLAccessible.mm b/accessible/mac/mozHTMLAccessible.mm deleted file mode 100644 index 2079a4aa6b..0000000000 --- a/accessible/mac/mozHTMLAccessible.mm +++ /dev/null @@ -1,141 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozHTMLAccessible.h" - -#import "Accessible-inl.h" -#import "HyperTextAccessible.h" - -#import "nsCocoaUtils.h" - -using namespace mozilla::a11y; - -@implementation mozHeadingAccessible - -- (NSString*)title -{ - nsAutoString title; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - mozilla::ErrorResult rv; - // XXX use the flattening API when there are available - // see bug 768298 - accWrap->GetContent()->GetTextContent(title, rv); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - proxy->Title(title); - } - - return nsCocoaUtils::ToNSString(title); -} - -- (id)value -{ - uint32_t level = 0; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - level = accWrap->GetLevelInternal(); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - level = proxy->GetLevelInternal(); - } - - return [NSNumber numberWithInt:level]; -} - -@end - -@interface mozLinkAccessible () --(NSURL*)url; -@end - -@implementation mozLinkAccessible - -- (NSArray*)accessibilityAttributeNames -{ - // if we're expired, we don't support any attributes. - if (![self getGeckoAccessible] && ![self getProxyAccessible]) - return [NSArray array]; - - static NSMutableArray* attributes = nil; - - if (!attributes) { - attributes = [[super accessibilityAttributeNames] mutableCopy]; - [attributes addObject:NSAccessibilityURLAttribute]; - } - - return attributes; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute -{ - if ([attribute isEqualToString:NSAccessibilityURLAttribute]) - return [self url]; - - return [super accessibilityAttributeValue:attribute]; -} - -- (NSArray*)accessibilityActionNames -{ - // if we're expired, we don't support any attributes. - if (![self getGeckoAccessible] && ![self getProxyAccessible]) - return [NSArray array]; - - static NSArray* actionNames = nil; - - if (!actionNames) { - actionNames = [[NSArray alloc] initWithObjects:NSAccessibilityPressAction, - nil]; - } - - return actionNames; -} - -- (void)accessibilityPerformAction:(NSString*)action -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - if (!accWrap && !proxy) { - return; - } - - if ([action isEqualToString:NSAccessibilityPressAction]) { - if (accWrap) { - accWrap->DoAction(0); - } else if (proxy) { - proxy->DoAction(0); - } - return; - } - - [super accessibilityPerformAction:action]; - -} - -- (NSString*)customDescription -{ - return @""; -} - -- (NSString*)value -{ - return @""; -} - -- (NSURL*)url -{ - nsAutoString value; - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - accWrap->Value(value); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - proxy->Value(value); - } - - NSString* urlString = value.IsEmpty() ? nil : nsCocoaUtils::ToNSString(value); - if (!urlString) - return nil; - - return [NSURL URLWithString:urlString]; -} - -@end diff --git a/accessible/mac/mozTableAccessible.h b/accessible/mac/mozTableAccessible.h deleted file mode 100644 index 435b5adc57..0000000000 --- a/accessible/mac/mozTableAccessible.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -@interface mozTablePartAccessible : mozAccessible -- (BOOL)isLayoutTablePart; -- (NSString*)role; -@end - -@interface mozTableAccessible : mozTablePartAccessible -- (NSArray*)additionalAccessibilityAttributeNames; -- (id)accessibilityAttributeValue:(NSString*)attribute; -@end - -@interface mozTableRowAccessible : mozTablePartAccessible -- (NSArray*)additionalAccessibilityAttributeNames; -- (id)accessibilityAttributeValue:(NSString*)attribute; -@end - -@interface mozTableCellAccessible : mozTablePartAccessible -- (NSArray*)additionalAccessibilityAttributeNames; -- (id)accessibilityAttributeValue:(NSString*)attribute; -@end diff --git a/accessible/mac/mozTableAccessible.mm b/accessible/mac/mozTableAccessible.mm deleted file mode 100644 index 6ad157b9f0..0000000000 --- a/accessible/mac/mozTableAccessible.mm +++ /dev/null @@ -1,281 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:expandtab:shiftwidth=2:tabstop=2: - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "Accessible-inl.h" -#import "mozTableAccessible.h" -#import "TableAccessible.h" -#import "TableCellAccessible.h" -#import "nsCocoaUtils.h" - -using namespace mozilla::a11y; - -// convert an array of Gecko accessibles to an NSArray of native accessibles -static inline NSMutableArray* -ConvertToNSArray(nsTArray& aArray) -{ - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - - // iterate through the list, and get each native accessible. - size_t totalCount = aArray.Length(); - for (size_t i = 0; i < totalCount; i++) { - Accessible* curAccessible = aArray.ElementAt(i); - mozAccessible* curNative = GetNativeFromGeckoAccessible(curAccessible); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - - return nativeArray; -} - -// convert an array of Gecko proxy accessibles to an NSArray of native accessibles -static inline NSMutableArray* -ConvertToNSArray(nsTArray& aArray) -{ - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - - // iterate through the list, and get each native accessible. - size_t totalCount = aArray.Length(); - for (size_t i = 0; i < totalCount; i++) { - ProxyAccessible* curAccessible = aArray.ElementAt(i); - mozAccessible* curNative = GetNativeFromProxy(curAccessible); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - - return nativeArray; -} - -@implementation mozTablePartAccessible -- (BOOL)isLayoutTablePart; -{ - if (Accessible* accWrap = [self getGeckoAccessible]) { - while (accWrap) { - if (accWrap->IsTable()) { - return accWrap->AsTable()->IsProbablyLayoutTable(); - } - accWrap = accWrap->Parent(); - } - return false; - } - - if (ProxyAccessible* proxy = [self getProxyAccessible]) { - while (proxy) { - if (proxy->IsTable()) { - return proxy->TableIsProbablyForLayout(); - } - proxy = proxy->Parent(); - } - } - - return false; -} - -- (NSString*)role -{ - return [self isLayoutTablePart] ? NSAccessibilityGroupRole : [super role]; -} -@end - -@implementation mozTableAccessible -- (NSArray*)additionalAccessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames]; - if ([self isLayoutTablePart]) { - return additionalAttributes; - } - - static NSArray* tableAttrs = nil; - if (!tableAttrs) { - NSMutableArray* tempArray = [NSMutableArray new]; - [tempArray addObject:NSAccessibilityRowCountAttribute]; - [tempArray addObject:NSAccessibilityColumnCountAttribute]; - [tempArray addObject:NSAccessibilityRowsAttribute]; - tableAttrs = [[NSArray alloc] initWithArray:tempArray]; - [tempArray release]; - } - - return [additionalAttributes arrayByAddingObjectsFromArray:tableAttrs]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - TableAccessible* table = accWrap->AsTable(); - if ([attribute isEqualToString:NSAccessibilityRowCountAttribute]) - return @(table->RowCount()); - if ([attribute isEqualToString:NSAccessibilityColumnCountAttribute]) - return @(table->ColCount()); - if ([attribute isEqualToString:NSAccessibilityRowsAttribute]) { - // Create a new array with the list of table rows. - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - uint32_t totalCount = accWrap->ChildCount(); - for (uint32_t i = 0; i < totalCount; i++) { - if (accWrap->GetChildAt(i)->IsTableRow()) { - mozAccessible* curNative = - GetNativeFromGeckoAccessible(accWrap->GetChildAt(i)); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - } - return nativeArray; - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:NSAccessibilityRowCountAttribute]) - return @(proxy->TableRowCount()); - if ([attribute isEqualToString:NSAccessibilityColumnCountAttribute]) - return @(proxy->TableColumnCount()); - if ([attribute isEqualToString:NSAccessibilityRowsAttribute]) { - // Create a new array with the list of table rows. - NSMutableArray* nativeArray = [[NSMutableArray alloc] init]; - uint32_t totalCount = proxy->ChildrenCount(); - for (uint32_t i = 0; i < totalCount; i++) { - if (proxy->ChildAt(i)->IsTableRow()) { - mozAccessible* curNative = - GetNativeFromProxy(proxy->ChildAt(i)); - if (curNative) - [nativeArray addObject:GetObjectOrRepresentedView(curNative)]; - } - } - return nativeArray; - } - } - - return [super accessibilityAttributeValue:attribute]; -} -@end - -@implementation mozTableRowAccessible -- (NSArray*)additionalAccessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames]; - if ([self isLayoutTablePart]) { - return additionalAttributes; - } - - static NSArray* tableRowAttrs = nil; - if (!tableRowAttrs) { - NSMutableArray* tempArray = [NSMutableArray new]; - [tempArray addObject:NSAccessibilityIndexAttribute]; - tableRowAttrs = [[NSArray alloc] initWithArray:tempArray]; - [tempArray release]; - } - - return [additionalAttributes arrayByAddingObjectsFromArray:tableRowAttrs]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - if ([attribute isEqualToString:NSAccessibilityIndexAttribute]) { - // Count the number of rows before that one to obtain the row index. - uint32_t index = 0; - Accessible* parent = accWrap->Parent(); - if (parent) { - for (int32_t i = accWrap->IndexInParent() - 1; i >= 0; i--) { - if (parent->GetChildAt(i)->IsTableRow()) { - index++; - } - } - } - return [NSNumber numberWithUnsignedInteger:index]; - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:NSAccessibilityIndexAttribute]) { - // Count the number of rows before that one to obtain the row index. - uint32_t index = 0; - ProxyAccessible* parent = proxy->Parent(); - if (parent) { - for (int32_t i = proxy->IndexInParent() - 1; i >= 0; i--) { - if (parent->ChildAt(i)->IsTableRow()) { - index++; - } - } - } - return [NSNumber numberWithUnsignedInteger:index]; - } - } - - return [super accessibilityAttributeValue:attribute]; -} -@end - -@implementation mozTableCellAccessible -- (NSArray*)additionalAccessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames]; - if ([self isLayoutTablePart]) { - return additionalAttributes; - } - - static NSArray* tableCellAttrs = nil; - if (!tableCellAttrs) { - NSMutableArray* tempArray = [NSMutableArray new]; - [tempArray addObject:NSAccessibilityRowIndexRangeAttribute]; - [tempArray addObject:NSAccessibilityColumnIndexRangeAttribute]; - [tempArray addObject:NSAccessibilityRowHeaderUIElementsAttribute]; - [tempArray addObject:NSAccessibilityColumnHeaderUIElementsAttribute]; - tableCellAttrs = [[NSArray alloc] initWithArray:tempArray]; - [tempArray release]; - } - - return [additionalAttributes arrayByAddingObjectsFromArray:tableCellAttrs]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - TableCellAccessible* cell = accWrap->AsTableCell(); - if ([attribute isEqualToString:NSAccessibilityRowIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(cell->RowIdx(), - cell->RowExtent())]; - if ([attribute isEqualToString:NSAccessibilityColumnIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(cell->ColIdx(), - cell->ColExtent())]; - if ([attribute isEqualToString:NSAccessibilityRowHeaderUIElementsAttribute]) { - AutoTArray headerCells; - cell->RowHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - if ([attribute isEqualToString:NSAccessibilityColumnHeaderUIElementsAttribute]) { - AutoTArray headerCells; - cell->ColHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:NSAccessibilityRowIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(proxy->RowIdx(), - proxy->RowExtent())]; - if ([attribute isEqualToString:NSAccessibilityColumnIndexRangeAttribute]) - return [NSValue valueWithRange:NSMakeRange(proxy->ColIdx(), - proxy->ColExtent())]; - if ([attribute isEqualToString:NSAccessibilityRowHeaderUIElementsAttribute]) { - nsTArray headerCells; - proxy->RowHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - if ([attribute isEqualToString:NSAccessibilityColumnHeaderUIElementsAttribute]) { - nsTArray headerCells; - proxy->ColHeaderCells(&headerCells); - return ConvertToNSArray(headerCells); - } - } - - return [super accessibilityAttributeValue:attribute]; -} -@end diff --git a/accessible/mac/mozTextAccessible.h b/accessible/mac/mozTextAccessible.h deleted file mode 100644 index 8bc23ae8d5..0000000000 --- a/accessible/mac/mozTextAccessible.h +++ /dev/null @@ -1,17 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import "mozAccessible.h" - -#import "HyperTextAccessible.h" - -@interface mozTextAccessible : mozAccessible -{ -} -@end - -@interface mozTextLeafAccessible : mozAccessible -{ -} -@end diff --git a/accessible/mac/mozTextAccessible.mm b/accessible/mac/mozTextAccessible.mm deleted file mode 100644 index 1f433b802e..0000000000 --- a/accessible/mac/mozTextAccessible.mm +++ /dev/null @@ -1,627 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "Accessible-inl.h" -#include "HyperTextAccessible-inl.h" -#include "TextLeafAccessible.h" - -#include "nsCocoaUtils.h" -#include "nsObjCExceptions.h" - -#import "mozTextAccessible.h" - -using namespace mozilla; -using namespace mozilla::a11y; - -inline bool -ToNSRange(id aValue, NSRange* aRange) -{ - NS_PRECONDITION(aRange, "aRange is nil"); - - if ([aValue isKindOfClass:[NSValue class]] && - strcmp([(NSValue*)aValue objCType], @encode(NSRange)) == 0) { - *aRange = [aValue rangeValue]; - return true; - } - - return false; -} - -inline NSString* -ToNSString(id aValue) -{ - if ([aValue isKindOfClass:[NSString class]]) { - return aValue; - } - - return nil; -} - -@interface mozTextAccessible () -- (NSString*)subrole; -- (NSString*)selectedText; -- (NSValue*)selectedTextRange; -- (NSValue*)visibleCharacterRange; -- (long)textLength; -- (BOOL)isReadOnly; -- (NSNumber*)caretLineNumber; -- (void)setText:(NSString*)newText; -- (NSString*)text; -- (NSString*)stringFromRange:(NSRange*)range; -@end - -@implementation mozTextAccessible - -- (BOOL)accessibilityIsIgnored -{ - return ![self getGeckoAccessible] && ![self getProxyAccessible]; -} - -- (NSArray*)accessibilityAttributeNames -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - static NSMutableArray* supportedAttributes = nil; - if (!supportedAttributes) { - // text-specific attributes to supplement the standard one - supportedAttributes = [[NSMutableArray alloc] initWithObjects: - NSAccessibilitySelectedTextAttribute, // required - NSAccessibilitySelectedTextRangeAttribute, // required - NSAccessibilityNumberOfCharactersAttribute, // required - NSAccessibilityVisibleCharacterRangeAttribute, // required - NSAccessibilityInsertionPointLineNumberAttribute, - @"AXRequired", - @"AXInvalid", - nil - ]; - [supportedAttributes addObjectsFromArray:[super accessibilityAttributeNames]]; - } - return supportedAttributes; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - if ([attribute isEqualToString:NSAccessibilityNumberOfCharactersAttribute]) - return [NSNumber numberWithInt:[self textLength]]; - - if ([attribute isEqualToString:NSAccessibilityInsertionPointLineNumberAttribute]) - return [self caretLineNumber]; - - if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) - return [self selectedTextRange]; - - if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute]) - return [self selectedText]; - - if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) - return @""; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { - // Apple's SpeechSynthesisServer expects AXValue to return an AXStaticText - // object's AXSelectedText attribute. See bug 674612 for details. - // Also if there is no selected text, we return the full text. - // See bug 369710 for details. - if ([[self role] isEqualToString:NSAccessibilityStaticTextRole]) { - NSString* selectedText = [self selectedText]; - return (selectedText && [selectedText length]) ? selectedText : [self text]; - } - - return [self text]; - } - - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - if ([attribute isEqualToString:@"AXRequired"]) { - return [NSNumber numberWithBool:!!(accWrap->State() & states::REQUIRED)]; - } - - if ([attribute isEqualToString:@"AXInvalid"]) { - return [NSNumber numberWithBool:!!(accWrap->State() & states::INVALID)]; - } - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - if ([attribute isEqualToString:@"AXRequired"]) { - return [NSNumber numberWithBool:!!(proxy->State() & states::REQUIRED)]; - } - - if ([attribute isEqualToString:@"AXInvalid"]) { - return [NSNumber numberWithBool:!!(proxy->State() & states::INVALID)]; - } - } - - if ([attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) - return [self visibleCharacterRange]; - - // let mozAccessible handle all other attributes - return [super accessibilityAttributeValue:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSArray*)accessibilityParameterizedAttributeNames -{ - static NSArray* supportedParametrizedAttributes = nil; - // text specific parametrized attributes - if (!supportedParametrizedAttributes) { - supportedParametrizedAttributes = [[NSArray alloc] initWithObjects: - NSAccessibilityStringForRangeParameterizedAttribute, - NSAccessibilityLineForIndexParameterizedAttribute, - NSAccessibilityRangeForLineParameterizedAttribute, - NSAccessibilityAttributedStringForRangeParameterizedAttribute, - NSAccessibilityBoundsForRangeParameterizedAttribute, -#if DEBUG - NSAccessibilityRangeForPositionParameterizedAttribute, - NSAccessibilityRangeForIndexParameterizedAttribute, - NSAccessibilityRTFForRangeParameterizedAttribute, - NSAccessibilityStyleRangeForIndexParameterizedAttribute, -#endif - nil - ]; - } - return supportedParametrizedAttributes; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute forParameter:(id)parameter -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - if ([attribute isEqualToString:NSAccessibilityStringForRangeParameterizedAttribute]) { - NSRange range; - if (!ToNSRange(parameter, &range)) { -#if DEBUG - NSLog(@"%@: range not set", attribute); -#endif - return @""; - } - - return [self stringFromRange:&range]; - } - - if ([attribute isEqualToString:NSAccessibilityRangeForLineParameterizedAttribute]) { - // XXX: actually get the integer value for the line # - return [NSValue valueWithRange:NSMakeRange(0, [self textLength])]; - } - - if ([attribute isEqualToString:NSAccessibilityAttributedStringForRangeParameterizedAttribute]) { - NSRange range; - if (!ToNSRange(parameter, &range)) { -#if DEBUG - NSLog(@"%@: range not set", attribute); -#endif - return @""; - } - - return [[[NSAttributedString alloc] initWithString:[self stringFromRange:&range]] autorelease]; - } - - if ([attribute isEqualToString:NSAccessibilityLineForIndexParameterizedAttribute]) { - // XXX: actually return the line # - return [NSNumber numberWithInt:0]; - } - - if ([attribute isEqualToString:NSAccessibilityBoundsForRangeParameterizedAttribute]) { - NSRange range; - if (!ToNSRange(parameter, &range)) { -#if DEBUG - NSLog(@"%@:no range", attribute); -#endif - return nil; - } - - int32_t start = range.location; - int32_t end = start + range.length; - DesktopIntRect bounds; - if (textAcc) { - bounds = - DesktopIntRect::FromUnknownRect(textAcc->TextBounds(start, end)); - } else if (proxy) { - bounds = - DesktopIntRect::FromUnknownRect(proxy->TextBounds(start, end)); - } - - return [NSValue valueWithRect:nsCocoaUtils::GeckoRectToCocoaRect(bounds)]; - } - -#if DEBUG - NSLog(@"unhandled attribute:%@ forParameter:%@", attribute, parameter); -#endif - - return nil; -} - -- (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) - return ![self isReadOnly]; - - if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute] || - [attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] || - [attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) - return YES; - - return [super accessibilityIsAttributeSettable:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { - [self setText:ToNSString(value)]; - - return; - } - - if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute]) { - NSString* stringValue = ToNSString(value); - if (!stringValue) - return; - - int32_t start = 0, end = 0; - nsString text; - if (textAcc) { - textAcc->SelectionBoundsAt(0, &start, &end); - textAcc->DeleteText(start, end - start); - nsCocoaUtils::GetStringForNSString(stringValue, text); - textAcc->InsertText(text, start); - } else if (proxy) { - nsString data; - proxy->SelectionBoundsAt(0, data, &start, &end); - proxy->DeleteText(start, end - start); - nsCocoaUtils::GetStringForNSString(stringValue, text); - proxy->InsertText(text, start); - } - } - - if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) { - NSRange range; - if (!ToNSRange(value, &range)) - return; - - if (textAcc) { - textAcc->SetSelectionBoundsAt(0, range.location, - range.location + range.length); - } else if (proxy) { - proxy->SetSelectionBoundsAt(0, range.location, - range.location + range.length); - } - return; - } - - if ([attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute]) { - NSRange range; - if (!ToNSRange(value, &range)) - return; - - if (textAcc) { - textAcc->ScrollSubstringTo(range.location, range.location + range.length, - nsIAccessibleScrollType::SCROLL_TYPE_TOP_EDGE); - } else if (proxy) { - proxy->ScrollSubstringTo(range.location, range.location + range.length, - nsIAccessibleScrollType::SCROLL_TYPE_TOP_EDGE); - } - return; - } - - [super accessibilitySetValue:value forAttribute:attribute]; - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (NSString*)subrole -{ - if(mRole == roles::PASSWORD_TEXT) - return NSAccessibilitySecureTextFieldSubrole; - - return nil; -} - -#pragma mark - - -- (BOOL)isReadOnly -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - if ([[self role] isEqualToString:NSAccessibilityStaticTextRole]) - return YES; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (textAcc) - return (accWrap->State() & states::READONLY) == 0; - - if (ProxyAccessible* proxy = [self getProxyAccessible]) - return (proxy->State() & states::READONLY) == 0; - - return NO; - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(NO); -} - -- (NSNumber*)caretLineNumber -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - - int32_t lineNumber = -1; - if (textAcc) { - lineNumber = textAcc->CaretLineNumber() - 1; - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - lineNumber = proxy->CaretLineNumber() - 1; - } - - return (lineNumber >= 0) ? [NSNumber numberWithInt:lineNumber] : nil; -} - -- (void)setText:(NSString*)aNewString -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - - nsString text; - nsCocoaUtils::GetStringForNSString(aNewString, text); - if (textAcc) { - textAcc->ReplaceText(text); - } else if (ProxyAccessible* proxy = [self getProxyAccessible]) { - proxy->ReplaceText(text); - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (NSString*)text -{ - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - // A password text field returns an empty value - if (mRole == roles::PASSWORD_TEXT) - return @""; - - nsAutoString text; - if (textAcc) { - textAcc->TextSubstring(0, nsIAccessibleText::TEXT_OFFSET_END_OF_TEXT, text); - } else if (proxy) { - proxy->TextSubstring(0, nsIAccessibleText::TEXT_OFFSET_END_OF_TEXT, text); - } - - return nsCocoaUtils::ToNSString(text); -} - -- (long)textLength -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return 0; - - return textAcc ? textAcc->CharacterCount() : proxy->CharacterCount(); - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(0); -} - -- (long)selectedTextLength -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return 0; - - int32_t start = 0, end = 0; - if (textAcc) { - textAcc->SelectionBoundsAt(0, &start, &end); - } else if (proxy) { - nsString data; - proxy->SelectionBoundsAt(0, data, &start, &end); - } - return (end - start); - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(0); -} - -- (NSString*)selectedText -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - int32_t start = 0, end = 0; - nsAutoString selText; - if (textAcc) { - textAcc->SelectionBoundsAt(0, &start, &end); - if (start != end) { - textAcc->TextSubstring(start, end, selText); - } - } else if (proxy) { - proxy->SelectionBoundsAt(0, selText, &start, &end); - } - - return nsCocoaUtils::ToNSString(selText); - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)selectedTextRange -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - - int32_t start = 0; - int32_t end = 0; - int32_t count = 0; - if (textAcc) { - count = textAcc->SelectionCount(); - if (count) { - textAcc->SelectionBoundsAt(0, &start, &end); - return [NSValue valueWithRange:NSMakeRange(start, end - start)]; - } - - start = textAcc->CaretOffset(); - return [NSValue valueWithRange:NSMakeRange(start != -1 ? start : 0, 0)]; - } - - if (proxy) { - count = proxy->SelectionCount(); - if (count) { - nsString data; - proxy->SelectionBoundsAt(0, data, &start, &end); - return [NSValue valueWithRange:NSMakeRange(start, end - start)]; - } - - start = proxy->CaretOffset(); - return [NSValue valueWithRange:NSMakeRange(start != -1 ? start : 0, 0)]; - } - - return [NSValue valueWithRange:NSMakeRange(0, 0)]; - - NS_OBJC_END_TRY_ABORT_BLOCK_NIL; -} - -- (NSValue*)visibleCharacterRange -{ - // XXX this won't work with Textarea and such as we actually don't give - // the visible character range. - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return 0; - - return [NSValue valueWithRange: - NSMakeRange(0, textAcc ? - textAcc->CharacterCount() : proxy->CharacterCount())]; -} - -- (void)valueDidChange -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - NSAccessibilityPostNotification(GetObjectOrRepresentedView(self), - NSAccessibilityValueChangedNotification); - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -- (void)selectedTextDidChange -{ - NSAccessibilityPostNotification(GetObjectOrRepresentedView(self), - NSAccessibilitySelectedTextChangedNotification); -} - -- (NSString*)stringFromRange:(NSRange*)range -{ - NS_PRECONDITION(range, "no range"); - - AccessibleWrap* accWrap = [self getGeckoAccessible]; - ProxyAccessible* proxy = [self getProxyAccessible]; - HyperTextAccessible* textAcc = accWrap? accWrap->AsHyperText() : nullptr; - if (!textAcc && !proxy) - return nil; - - nsAutoString text; - if (textAcc) { - textAcc->TextSubstring(range->location, - range->location + range->length, text); - } else if (proxy) { - proxy->TextSubstring(range->location, - range->location + range->length, text); - } - - return nsCocoaUtils::ToNSString(text); -} - -@end - -@implementation mozTextLeafAccessible - -- (NSArray*)accessibilityAttributeNames -{ - static NSMutableArray* supportedAttributes = nil; - if (!supportedAttributes) { - supportedAttributes = [[super accessibilityAttributeNames] mutableCopy]; - [supportedAttributes removeObject:NSAccessibilityChildrenAttribute]; - } - - return supportedAttributes; -} - -- (id)accessibilityAttributeValue:(NSString*)attribute -{ - if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) - return @""; - - if ([attribute isEqualToString:NSAccessibilityValueAttribute]) - return [self text]; - - return [super accessibilityAttributeValue:attribute]; -} - -- (NSString*)text -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - return nsCocoaUtils::ToNSString(accWrap->AsTextLeaf()->Text()); - } - - if (ProxyAccessible* proxy = [self getProxyAccessible]) { - nsString text; - proxy->Text(&text); - return nsCocoaUtils::ToNSString(text); - } - - return nil; -} - -- (long)textLength -{ - if (AccessibleWrap* accWrap = [self getGeckoAccessible]) { - return accWrap->AsTextLeaf()->Text().Length(); - } - - if (ProxyAccessible* proxy = [self getProxyAccessible]) { - nsString text; - proxy->Text(&text); - return text.Length(); - } - - return 0; -} - -@end diff --git a/accessible/moz.build b/accessible/moz.build index 53367e175b..c22a085f01 100644 --- a/accessible/moz.build +++ b/accessible/moz.build @@ -9,8 +9,6 @@ if 'gtk' in toolkit: DIRS += ['atk'] elif toolkit == 'windows': DIRS += ['windows'] -elif toolkit == 'cocoa': - DIRS += ['mac'] else: DIRS += ['other'] diff --git a/accessible/xpcom/moz.build b/accessible/xpcom/moz.build index 64879fef39..8c52ce5475 100644 --- a/accessible/xpcom/moz.build +++ b/accessible/xpcom/moz.build @@ -42,10 +42,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': LOCAL_INCLUDES += [ '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/accessible/xul/moz.build b/accessible/xul/moz.build index 7cfb8a2959..138847f9cb 100644 --- a/accessible/xul/moz.build +++ b/accessible/xul/moz.build @@ -37,10 +37,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': '/accessible/windows/ia2', '/accessible/windows/msaa', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/accessible/mac', - ] else: LOCAL_INCLUDES += [ '/accessible/other', diff --git a/application/xulrunner/stub/moz.build b/application/xulrunner/stub/moz.build index 1838241206..690edcd377 100644 --- a/application/xulrunner/stub/moz.build +++ b/application/xulrunner/stub/moz.build @@ -16,9 +16,6 @@ SOURCES += [ 'nsXULStub.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - FINAL_TARGET = 'dist/XUL.framework/Versions/%(MOZILLA_VERSION)s' % CONFIG - DEFINES['XPCOM_GLUE'] = True LOCAL_INCLUDES += [ @@ -44,7 +41,3 @@ if CONFIG['OS_ARCH'] == 'WINNT': ] DISABLE_STL_WRAPPING = True - -# Need to link with CoreFoundation on Mac -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - OS_LIBS += CONFIG['TK_LIBS'] diff --git a/build/gyp.mozbuild b/build/gyp.mozbuild index cc5977510e..08c9976ac4 100644 --- a/build/gyp.mozbuild +++ b/build/gyp.mozbuild @@ -87,7 +87,6 @@ flavors = { 'WINNT': 'win', 'Android': 'android', 'Linux': 'linux', - 'Darwin': 'mac' if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa' else 'ios', 'SunOS': 'solaris', 'GNU/kFreeBSD': 'freebsd', 'DragonFly': 'dragonfly', diff --git a/db/sqlite3/src/moz.build b/db/sqlite3/src/moz.build index 1ffc326f8a..327e77677a 100644 --- a/db/sqlite3/src/moz.build +++ b/db/sqlite3/src/moz.build @@ -45,10 +45,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': DEFINES['SQLITE_WIN32_GETVERSIONEX'] = 0 DEFINES['SQLITE_ALLOW_URI_AUTHORITY'] = 1 -# -DSQLITE_ENABLE_LOCKING_STYLE=1 to help with AFP folders -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DEFINES['SQLITE_ENABLE_LOCKING_STYLE'] = 1 - # sqlite defaults this to on on __APPLE_ but it breaks on newer iOS SDKs if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': DEFINES['SQLITE_ENABLE_LOCKING_STYLE'] = 0 diff --git a/embedding/components/build/moz.build b/embedding/components/build/moz.build index 361fd8768a..c66f0c79ee 100644 --- a/embedding/components/build/moz.build +++ b/embedding/components/build/moz.build @@ -22,11 +22,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': LOCAL_INCLUDES += [ '../printingui/win', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DEFINES['PROXY_PRINTING'] = 1 - LOCAL_INCLUDES += [ - '../printingui/mac', - ] if CONFIG['MOZ_PDF_PRINTING']: DEFINES['PROXY_PRINTING'] = 1 diff --git a/embedding/components/printingui/mac/moz.build b/embedding/components/printingui/mac/moz.build deleted file mode 100644 index c2fe2f4731..0000000000 --- a/embedding/components/printingui/mac/moz.build +++ /dev/null @@ -1,15 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -UNIFIED_SOURCES += [ - 'nsPrintProgress.cpp', - 'nsPrintProgressParams.cpp', -] - -SOURCES += [ - 'nsPrintingPromptServiceX.mm', -] - -FINAL_LIBRARY = 'xul' diff --git a/embedding/components/printingui/mac/nsPrintProgress.cpp b/embedding/components/printingui/mac/nsPrintProgress.cpp deleted file mode 100644 index 0ae0a63d9a..0000000000 --- a/embedding/components/printingui/mac/nsPrintProgress.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsPrintProgress.h" - -#include "nsIBaseWindow.h" -#include "nsXPCOM.h" -#include "nsISupportsPrimitives.h" -#include "nsIComponentManager.h" -#include "nsPIDOMWindow.h" - -NS_IMPL_ADDREF(nsPrintProgress) -NS_IMPL_RELEASE(nsPrintProgress) - -NS_INTERFACE_MAP_BEGIN(nsPrintProgress) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIPrintStatusFeedback) - NS_INTERFACE_MAP_ENTRY(nsIPrintProgress) - NS_INTERFACE_MAP_ENTRY(nsIPrintStatusFeedback) - NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener) -NS_INTERFACE_MAP_END_THREADSAFE - - -nsPrintProgress::nsPrintProgress() -{ - m_closeProgress = false; - m_processCanceled = false; - m_pendingStateFlags = -1; - m_pendingStateValue = NS_OK; -} - -nsPrintProgress::~nsPrintProgress() -{ - (void)ReleaseListeners(); -} - -NS_IMETHODIMP nsPrintProgress::OpenProgressDialog(mozIDOMWindowProxy *parent, - const char *dialogURL, - nsISupports *parameters, - nsIObserver *openDialogObserver, - bool *notifyOnOpen) -{ - MOZ_ASSERT_UNREACHABLE("The nsPrintingPromptService::ShowProgress " - "implementation for OS X returns " - "NS_ERROR_NOT_IMPLEMENTED, so we should never get " - "here."); - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::CloseProgressDialog(bool forceClose) -{ - MOZ_ASSERT_UNREACHABLE("The nsPrintingPromptService::ShowProgress " - "implementation for OS X returns " - "NS_ERROR_NOT_IMPLEMENTED, so we should never get " - "here."); - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::GetPrompter(nsIPrompt **_retval) -{ - NS_ENSURE_ARG_POINTER(_retval); - *_retval = nullptr; - - if (! m_closeProgress && m_dialog) { - nsCOMPtr window = do_QueryInterface(m_dialog); - MOZ_ASSERT(window); - return window->GetPrompter(_retval); - } - - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP nsPrintProgress::GetProcessCanceledByUser(bool *aProcessCanceledByUser) -{ - NS_ENSURE_ARG_POINTER(aProcessCanceledByUser); - *aProcessCanceledByUser = m_processCanceled; - return NS_OK; -} -NS_IMETHODIMP nsPrintProgress::SetProcessCanceledByUser(bool aProcessCanceledByUser) -{ - m_processCanceled = aProcessCanceledByUser; - OnStateChange(nullptr, nullptr, nsIWebProgressListener::STATE_STOP, NS_OK); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::RegisterListener(nsIWebProgressListener * listener) -{ - if (!listener) //Nothing to do with a null listener! - return NS_OK; - - m_listenerList.AppendObject(listener); - if (m_closeProgress || m_processCanceled) - listener->OnStateChange(nullptr, nullptr, - nsIWebProgressListener::STATE_STOP, NS_OK); - else - { - listener->OnStatusChange(nullptr, nullptr, NS_OK, m_pendingStatus.get()); - if (m_pendingStateFlags != -1) - listener->OnStateChange(nullptr, nullptr, m_pendingStateFlags, m_pendingStateValue); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::UnregisterListener(nsIWebProgressListener *listener) -{ - if (listener) - m_listenerList.RemoveObject(listener); - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::DoneIniting() -{ - if (m_observer) { - m_observer->Observe(nullptr, nullptr, nullptr); - } - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aStateFlags, nsresult aStatus) -{ - m_pendingStateFlags = aStateFlags; - m_pendingStateValue = aStatus; - - uint32_t count = m_listenerList.Count(); - for (uint32_t i = count - 1; i < count; i --) - { - nsCOMPtr progressListener = m_listenerList.SafeObjectAt(i); - if (progressListener) - progressListener->OnStateChange(aWebProgress, aRequest, aStateFlags, aStatus); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, int32_t aCurSelfProgress, int32_t aMaxSelfProgress, int32_t aCurTotalProgress, int32_t aMaxTotalProgress) -{ - uint32_t count = m_listenerList.Count(); - for (uint32_t i = count - 1; i < count; i --) - { - nsCOMPtr progressListener = m_listenerList.SafeObjectAt(i); - if (progressListener) - progressListener->OnProgressChange(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location, uint32_t aFlags) -{ - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const char16_t *aMessage) -{ - if (aMessage && *aMessage) - m_pendingStatus = aMessage; - - uint32_t count = m_listenerList.Count(); - for (uint32_t i = count - 1; i < count; i --) - { - nsCOMPtr progressListener = m_listenerList.SafeObjectAt(i); - if (progressListener) - progressListener->OnStatusChange(aWebProgress, aRequest, aStatus, aMessage); - } - - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t state) -{ - return NS_OK; -} - -nsresult nsPrintProgress::ReleaseListeners() -{ - m_listenerList.Clear(); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgress::ShowStatusString(const char16_t *status) -{ - return OnStatusChange(nullptr, nullptr, NS_OK, status); -} - -NS_IMETHODIMP nsPrintProgress::StartMeteors() -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::StopMeteors() -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::ShowProgress(int32_t percent) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::SetDocShell(nsIDocShell *shell, - mozIDOMWindowProxy *window) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP nsPrintProgress::CloseWindow() -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - diff --git a/embedding/components/printingui/mac/nsPrintProgress.h b/embedding/components/printingui/mac/nsPrintProgress.h deleted file mode 100644 index 938558c3e1..0000000000 --- a/embedding/components/printingui/mac/nsPrintProgress.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsPrintProgress_h -#define __nsPrintProgress_h - -#include "nsIPrintProgress.h" - -#include "nsCOMArray.h" -#include "nsCOMPtr.h" -#include "nsIPrintStatusFeedback.h" -#include "nsIObserver.h" -#include "nsString.h" - -class nsPrintProgress : public nsIPrintProgress, public nsIPrintStatusFeedback -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIPRINTPROGRESS - NS_DECL_NSIWEBPROGRESSLISTENER - NS_DECL_NSIPRINTSTATUSFEEDBACK - - nsPrintProgress(); - -protected: - virtual ~nsPrintProgress(); - -private: - nsresult ReleaseListeners(); - - bool m_closeProgress; - bool m_processCanceled; - nsString m_pendingStatus; - int32_t m_pendingStateFlags; - nsresult m_pendingStateValue; - // XXX This member is read-only. - nsCOMPtr m_dialog; - nsCOMArray m_listenerList; - nsCOMPtr m_observer; -}; - -#endif diff --git a/embedding/components/printingui/mac/nsPrintProgressParams.cpp b/embedding/components/printingui/mac/nsPrintProgressParams.cpp deleted file mode 100644 index eba86b2987..0000000000 --- a/embedding/components/printingui/mac/nsPrintProgressParams.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsPrintProgressParams.h" -#include "nsReadableUtils.h" - - -NS_IMPL_ISUPPORTS(nsPrintProgressParams, nsIPrintProgressParams) - -nsPrintProgressParams::nsPrintProgressParams() -{ -} - -nsPrintProgressParams::~nsPrintProgressParams() -{ -} - -NS_IMETHODIMP nsPrintProgressParams::GetDocTitle(char16_t * *aDocTitle) -{ - NS_ENSURE_ARG(aDocTitle); - - *aDocTitle = ToNewUnicode(mDocTitle); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgressParams::SetDocTitle(const char16_t * aDocTitle) -{ - mDocTitle = aDocTitle; - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgressParams::GetDocURL(char16_t * *aDocURL) -{ - NS_ENSURE_ARG(aDocURL); - - *aDocURL = ToNewUnicode(mDocURL); - return NS_OK; -} - -NS_IMETHODIMP nsPrintProgressParams::SetDocURL(const char16_t * aDocURL) -{ - mDocURL = aDocURL; - return NS_OK; -} - diff --git a/embedding/components/printingui/mac/nsPrintProgressParams.h b/embedding/components/printingui/mac/nsPrintProgressParams.h deleted file mode 100644 index 65c00d98f0..0000000000 --- a/embedding/components/printingui/mac/nsPrintProgressParams.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsPrintProgressParams_h -#define __nsPrintProgressParams_h - -#include "nsIPrintProgressParams.h" -#include "nsString.h" - -class nsPrintProgressParams : public nsIPrintProgressParams -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIPRINTPROGRESSPARAMS - - nsPrintProgressParams(); - -protected: - virtual ~nsPrintProgressParams(); - -private: - nsString mDocTitle; - nsString mDocURL; -}; - -#endif diff --git a/embedding/components/printingui/mac/nsPrintingPromptService.h b/embedding/components/printingui/mac/nsPrintingPromptService.h deleted file mode 100644 index 0334db2230..0000000000 --- a/embedding/components/printingui/mac/nsPrintingPromptService.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsPrintingPromptService_h -#define __nsPrintingPromptService_h - -// {E042570C-62DE-4bb6-A6E0-798E3C07B4DF} -#define NS_PRINTINGPROMPTSERVICE_CID \ - {0xe042570c, 0x62de, 0x4bb6, { 0xa6, 0xe0, 0x79, 0x8e, 0x3c, 0x7, 0xb4, 0xdf}} -#define NS_PRINTINGPROMPTSERVICE_CONTRACTID \ - "@mozilla.org/embedcomp/printingprompt-service;1" - -#include "nsCOMPtr.h" -#include "nsIPrintingPromptService.h" -#include "nsPIPromptService.h" -#include "nsIWindowWatcher.h" - -// Printing Progress Includes -#include "nsPrintProgress.h" -#include "nsIWebProgressListener.h" - -class nsPrintingPromptService: public nsIPrintingPromptService, - public nsIWebProgressListener -{ -public: - nsPrintingPromptService(); - - nsresult Init(); - - NS_DECL_NSIPRINTINGPROMPTSERVICE - NS_DECL_NSIWEBPROGRESSLISTENER - NS_DECL_ISUPPORTS - -protected: - virtual ~nsPrintingPromptService(); - -private: - nsCOMPtr mPrintProgress; -}; - -#endif diff --git a/embedding/components/printingui/mac/nsPrintingPromptServiceX.mm b/embedding/components/printingui/mac/nsPrintingPromptServiceX.mm deleted file mode 100644 index 3b956100be..0000000000 --- a/embedding/components/printingui/mac/nsPrintingPromptServiceX.mm +++ /dev/null @@ -1,128 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsPrintingPromptService.h" - -#include "nsCOMPtr.h" -#include "nsServiceManagerUtils.h" -#include "nsObjCExceptions.h" - -#include "nsIPrintingPromptService.h" -#include "nsIFactory.h" -#include "nsIPrintDialogService.h" -#include "nsPIDOMWindow.h" - -//***************************************************************************** -// nsPrintingPromptService -//***************************************************************************** - -NS_IMPL_ISUPPORTS(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener) - -nsPrintingPromptService::nsPrintingPromptService() -{ -} - -nsPrintingPromptService::~nsPrintingPromptService() -{ -} - -nsresult nsPrintingPromptService::Init() -{ - return NS_OK; -} - -//***************************************************************************** -// nsPrintingPromptService::nsIPrintingPromptService -//***************************************************************************** - -NS_IMETHODIMP -nsPrintingPromptService::ShowPrintDialog(mozIDOMWindowProxy *parent, nsIWebBrowserPrint *webBrowserPrint, nsIPrintSettings *printSettings) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - nsCOMPtr dlgPrint(do_GetService( - NS_PRINTDIALOGSERVICE_CONTRACTID)); - if (dlgPrint) { - return dlgPrint->Show(nsPIDOMWindowOuter::From(parent), printSettings, - webBrowserPrint); - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsPrintingPromptService::ShowProgress(mozIDOMWindowProxy* parent, - nsIWebBrowserPrint* webBrowserPrint, // ok to be null - nsIPrintSettings* printSettings, // ok to be null - nsIObserver* openDialogObserver, // ok to be null - bool isForPrinting, - nsIWebProgressListener** webProgressListener, - nsIPrintProgressParams** printProgressParams, - bool* notifyOnOpen) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP -nsPrintingPromptService::ShowPageSetup(mozIDOMWindowProxy *parent, nsIPrintSettings *printSettings, nsIObserver *aObs) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - nsCOMPtr dlgPrint(do_GetService( - NS_PRINTDIALOGSERVICE_CONTRACTID)); - if (dlgPrint) { - return dlgPrint->ShowPageSetup(nsPIDOMWindowOuter::From(parent), printSettings); - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsPrintingPromptService::ShowPrinterProperties(mozIDOMWindowProxy *parent, const char16_t *printerName, nsIPrintSettings *printSettings) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - - -//***************************************************************************** -// nsPrintingPromptService::nsIWebProgressListener -//***************************************************************************** - -NS_IMETHODIMP -nsPrintingPromptService::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aStateFlags, nsresult aStatus) -{ - return NS_OK; -} - -/* void onProgressChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress); */ -NS_IMETHODIMP -nsPrintingPromptService::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, int32_t aCurSelfProgress, int32_t aMaxSelfProgress, int32_t aCurTotalProgress, int32_t aMaxTotalProgress) -{ - return NS_OK; -} - -/* void onLocationChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI location, in unsigned long aFlags); */ -NS_IMETHODIMP -nsPrintingPromptService::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location, uint32_t aFlags) -{ - return NS_OK; -} - -/* void onStatusChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage); */ -NS_IMETHODIMP -nsPrintingPromptService::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const char16_t *aMessage) -{ - return NS_OK; -} - -/* void onSecurityChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long state); */ -NS_IMETHODIMP -nsPrintingPromptService::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t state) -{ - return NS_OK; -} diff --git a/embedding/components/printingui/moz.build b/embedding/components/printingui/moz.build index c75471555e..e0d6316931 100644 --- a/embedding/components/printingui/moz.build +++ b/embedding/components/printingui/moz.build @@ -10,7 +10,5 @@ DIRS += ['ipc'] if CONFIG['NS_PRINTING']: if toolkit == 'windows': DIRS += ['win'] - elif toolkit == 'cocoa': - DIRS += ['mac'] elif CONFIG['MOZ_PDF_PRINTING']: DIRS += ['unixshared'] diff --git a/gfx/cairo/cairo/src/moz.build b/gfx/cairo/cairo/src/moz.build index c5f936ad6b..6c81ce79a7 100644 --- a/gfx/cairo/cairo/src/moz.build +++ b/gfx/cairo/cairo/src/moz.build @@ -16,7 +16,7 @@ EXPORTS.cairo += [ 'pixman-rename.h', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] not in ('cocoa', 'uikit'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] not in ('uikit'): EXPORTS.cairo += [ 'cairo-pdf.h', ] @@ -56,7 +56,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': ] else: DEFINES['CAIRO_OMIT_WIN32_PRINTING'] = True -elif CONFIG['MOZ_WIDGET_TOOLKIT'] in {'cocoa', 'uikit'}: +elif CONFIG['MOZ_WIDGET_TOOLKIT'] in {'uikit'}: EXPORTS.cairo += [ 'cairo-quartz-image.h', 'cairo-quartz.h', diff --git a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp b/gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp deleted file mode 100644 index 8834773e4c..0000000000 --- a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MacIOSurfaceTextureHostBasic.h" -#include "mozilla/gfx/MacIOSurface.h" -#include "MacIOSurfaceHelpers.h" - -namespace mozilla { -namespace layers { - -MacIOSurfaceTextureSourceBasic::MacIOSurfaceTextureSourceBasic( - BasicCompositor* aCompositor, - MacIOSurface* aSurface) - : mCompositor(aCompositor) - , mSurface(aSurface) -{ - MOZ_COUNT_CTOR(MacIOSurfaceTextureSourceBasic); -} - -MacIOSurfaceTextureSourceBasic::~MacIOSurfaceTextureSourceBasic() -{ - MOZ_COUNT_DTOR(MacIOSurfaceTextureSourceBasic); -} - -gfx::IntSize -MacIOSurfaceTextureSourceBasic::GetSize() const -{ - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -gfx::SurfaceFormat -MacIOSurfaceTextureSourceBasic::GetFormat() const -{ - // Set the format the same way as CreateSourceSurfaceFromMacIOSurface. - return mSurface->GetFormat() == gfx::SurfaceFormat::NV12 - ? gfx::SurfaceFormat::B8G8R8X8 : gfx::SurfaceFormat::B8G8R8A8; -} - -MacIOSurfaceTextureHostBasic::MacIOSurfaceTextureHostBasic( - TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor -) - : TextureHost(aFlags) -{ - mSurface = MacIOSurface::LookupSurface(aDescriptor.surfaceId(), - aDescriptor.scaleFactor(), - !aDescriptor.isOpaque()); -} - -gfx::SourceSurface* -MacIOSurfaceTextureSourceBasic::GetSurface(gfx::DrawTarget* aTarget) -{ - if (!mSourceSurface) { - mSourceSurface = CreateSourceSurfaceFromMacIOSurface(mSurface); - } - return mSourceSurface; -} - -void -MacIOSurfaceTextureSourceBasic::SetCompositor(Compositor* aCompositor) -{ - mCompositor = AssertBasicCompositor(aCompositor); -} - -bool -MacIOSurfaceTextureHostBasic::Lock() -{ - if (!mCompositor) { - return false; - } - - if (!mTextureSource) { - mTextureSource = new MacIOSurfaceTextureSourceBasic(mCompositor, mSurface); - } - return true; -} - -void -MacIOSurfaceTextureHostBasic::SetCompositor(Compositor* aCompositor) -{ - BasicCompositor* compositor = AssertBasicCompositor(aCompositor); - if (!compositor) { - mTextureSource = nullptr; - return; - } - mCompositor = compositor; - if (mTextureSource) { - mTextureSource->SetCompositor(compositor); - } -} - -gfx::SurfaceFormat -MacIOSurfaceTextureHostBasic::GetFormat() const { - return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8X8; -} - -gfx::IntSize -MacIOSurfaceTextureHostBasic::GetSize() const { - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.h b/gfx/layers/basic/MacIOSurfaceTextureHostBasic.h deleted file mode 100644 index 7949aecfca..0000000000 --- a/gfx/layers/basic/MacIOSurfaceTextureHostBasic.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_MACIOSURFACETEXTUREHOST_BASIC_H -#define MOZILLA_GFX_MACIOSURFACETEXTUREHOST_BASIC_H - -#include "mozilla/layers/BasicCompositor.h" -#include "mozilla/layers/TextureHostBasic.h" - -class MacIOSurface; - -namespace mozilla { -namespace layers { - -class BasicCompositor; - -/** - * A texture source meant for use with BasicCompositor. - * - * It does not own any GL texture, and attaches its shared handle to one of - * the compositor's temporary textures when binding. - */ -class MacIOSurfaceTextureSourceBasic - : public TextureSourceBasic, - public TextureSource -{ -public: - MacIOSurfaceTextureSourceBasic(BasicCompositor* aCompositor, - MacIOSurface* aSurface); - virtual ~MacIOSurfaceTextureSourceBasic(); - - virtual const char* Name() const override { return "MacIOSurfaceTextureSourceBasic"; } - - virtual TextureSourceBasic* AsSourceBasic() override { return this; } - - virtual gfx::IntSize GetSize() const override; - virtual gfx::SurfaceFormat GetFormat() const override; - virtual gfx::SourceSurface* GetSurface(gfx::DrawTarget* aTarget) override; - - virtual void DeallocateDeviceData() override { } - - virtual void SetCompositor(Compositor* aCompositor) override; - -protected: - RefPtr mCompositor; - RefPtr mSurface; - RefPtr mSourceSurface; -}; - -/** - * A TextureHost for shared MacIOSurface - * - * Most of the logic actually happens in MacIOSurfaceTextureSourceBasic. - */ -class MacIOSurfaceTextureHostBasic : public TextureHost -{ -public: - MacIOSurfaceTextureHostBasic(TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor); - - virtual void SetCompositor(Compositor* aCompositor) override; - - virtual Compositor* GetCompositor() override { return mCompositor; } - - virtual bool Lock() override; - - virtual gfx::SurfaceFormat GetFormat() const override; - - virtual bool BindTextureSource(CompositableTextureSourceRef& aTexture) override - { - aTexture = mTextureSource; - return !!aTexture; - } - - virtual already_AddRefed GetAsSurface() override - { - return nullptr; // XXX - implement this (for MOZ_DUMP_PAINTING) - } - - virtual gfx::IntSize GetSize() const override; - -#ifdef MOZ_LAYERS_HAVE_LOG - virtual const char* Name() override { return "MacIOSurfaceTextureHostBasic"; } -#endif - -protected: - RefPtr mCompositor; - RefPtr mTextureSource; - RefPtr mSurface; -}; - -} // namespace layers -} // namespace mozilla - -#endif // MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_BASIC_H diff --git a/gfx/layers/ipc/ShadowLayerUtilsMac.cpp b/gfx/layers/ipc/ShadowLayerUtilsMac.cpp deleted file mode 100644 index cc5199ea82..0000000000 --- a/gfx/layers/ipc/ShadowLayerUtilsMac.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/gfx/Point.h" -#include "mozilla/layers/PLayerTransaction.h" -#include "mozilla/layers/ShadowLayers.h" -#include "mozilla/layers/LayerManagerComposite.h" -#include "mozilla/layers/CompositorTypes.h" - -#include "gfx2DGlue.h" -#include "gfxPlatform.h" - -using namespace mozilla::gl; - -namespace mozilla { -namespace layers { - -/*static*/ void -ShadowLayerForwarder::PlatformSyncBeforeUpdate() -{ -} - -/*static*/ void -LayerManagerComposite::PlatformSyncBeforeReplyUpdate() -{ -} - -/*static*/ bool -LayerManagerComposite::SupportsDirectTexturing() -{ - return false; -} - - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index f0fedf404c..e8da1af4d5 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -117,7 +117,6 @@ EXPORTS.mozilla.layers += [ 'AxisPhysicsModel.h', 'AxisPhysicsMSDModel.h', 'basic/BasicCompositor.h', - 'basic/MacIOSurfaceTextureHostBasic.h', 'basic/TextureHostBasic.h', 'BSPTree.h', 'BufferTexture.h', @@ -186,8 +185,6 @@ EXPORTS.mozilla.layers += [ 'LayersTypes.h', 'opengl/CompositingRenderTargetOGL.h', 'opengl/CompositorOGL.h', - 'opengl/MacIOSurfaceTextureClientOGL.h', - 'opengl/MacIOSurfaceTextureHostOGL.h', 'opengl/TextureClientOGL.h', 'opengl/TextureHostOGL.h', 'PersistentBufferProvider.h', @@ -213,21 +210,6 @@ if CONFIG['MOZ_X11']: 'opengl/X11TextureSourceOGL.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - EXPORTS.mozilla.layers += [ - 'opengl/GLManager.h', - ] - EXPORTS += [ - 'MacIOSurfaceHelpers.h', - 'MacIOSurfaceImage.h', - ] - SOURCES += [ - 'ipc/ShadowLayerUtilsMac.cpp', - 'MacIOSurfaceHelpers.cpp', - 'MacIOSurfaceImage.cpp', - 'opengl/GLManager.cpp', - ] - SOURCES += [ 'apz/public/IAPZCTreeManager.cpp', 'apz/src/APZCTreeManager.cpp', @@ -379,13 +361,6 @@ if CONFIG['_MSC_VER'] and CONFIG['CPU_ARCH'] == 'x86_64': ]: SOURCES[src].no_pgo = True -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'basic/MacIOSurfaceTextureHostBasic.cpp', - 'opengl/MacIOSurfaceTextureClientOGL.cpp', - 'opengl/MacIOSurfaceTextureHostOGL.cpp', - ] - IPDL_SOURCES = [ 'ipc/LayersMessages.ipdlh', 'ipc/LayersSurfaces.ipdlh', diff --git a/gfx/layers/opengl/GLManager.cpp b/gfx/layers/opengl/GLManager.cpp deleted file mode 100644 index e4c0b361fb..0000000000 --- a/gfx/layers/opengl/GLManager.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "GLManager.h" -#include "CompositorOGL.h" // for CompositorOGL -#include "GLContext.h" // for GLContext -#include "mozilla/Attributes.h" // for override -#include "mozilla/RefPtr.h" // for RefPtr -#include "mozilla/layers/Compositor.h" // for Compositor -#include "mozilla/layers/LayerManagerComposite.h" -#include "mozilla/layers/LayersTypes.h" -#include "mozilla/mozalloc.h" // for operator new, etc - -using namespace mozilla::gl; - -namespace mozilla { -namespace layers { - -class GLManagerCompositor : public GLManager -{ -public: - explicit GLManagerCompositor(CompositorOGL* aCompositor) - : mImpl(aCompositor) - {} - - virtual GLContext* gl() const override - { - return mImpl->gl(); - } - - virtual void ActivateProgram(ShaderProgramOGL *aProg) override - { - mImpl->ActivateProgram(aProg); - } - - virtual ShaderProgramOGL* GetProgram(GLenum aTarget, gfx::SurfaceFormat aFormat) override - { - ShaderConfigOGL config = ShaderConfigFromTargetAndFormat(aTarget, aFormat); - return mImpl->GetShaderProgramFor(config); - } - - virtual const gfx::Matrix4x4& GetProjMatrix() const override - { - return mImpl->GetProjMatrix(); - } - - virtual void BindAndDrawQuad(ShaderProgramOGL *aProg, - const gfx::Rect& aLayerRect, - const gfx::Rect& aTextureRect) override - { - mImpl->BindAndDrawQuad(aProg, aLayerRect, aTextureRect); - } - -private: - RefPtr mImpl; -}; - -/* static */ GLManager* -GLManager::CreateGLManager(LayerManagerComposite* aManager) -{ - if (aManager && aManager->GetCompositor()->GetBackendType() == LayersBackend::LAYERS_OPENGL) { - return new GLManagerCompositor(aManager->GetCompositor()->AsCompositorOGL()); - } - return nullptr; -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/opengl/GLManager.h b/gfx/layers/opengl/GLManager.h deleted file mode 100644 index 7c872758e9..0000000000 --- a/gfx/layers/opengl/GLManager.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_GLMANAGER_H -#define MOZILLA_GFX_GLMANAGER_H - -#include "mozilla/gfx/Types.h" // for SurfaceFormat -#include "OGLShaderProgram.h" - -namespace mozilla { -namespace gl { -class GLContext; -} // namespace gl - -namespace layers { - -class LayerManagerComposite; - -/** - * Minimal interface to allow widgets to draw using OpenGL. Abstracts - * CompositorOGL. Call CreateGLManager with a LayerManagerComposite - * backed by a CompositorOGL. - */ -class GLManager -{ -public: - static GLManager* CreateGLManager(LayerManagerComposite* aManager); - - virtual ~GLManager() {} - - virtual gl::GLContext* gl() const = 0; - virtual ShaderProgramOGL* GetProgram(GLenum aTarget, gfx::SurfaceFormat aFormat) = 0; - virtual void ActivateProgram(ShaderProgramOGL* aPrg) = 0; - virtual const gfx::Matrix4x4& GetProjMatrix() const = 0; - virtual void BindAndDrawQuad(ShaderProgramOGL *aProg, const gfx::Rect& aLayerRect, - const gfx::Rect& aTextureRect) = 0; -}; - -} // namespace layers -} // namespace mozilla - -#endif diff --git a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp deleted file mode 100644 index dd522e6503..0000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MacIOSurfaceTextureClientOGL.h" -#include "mozilla/gfx/MacIOSurface.h" -#include "MacIOSurfaceHelpers.h" -#include "gfxPlatform.h" - -namespace mozilla { -namespace layers { - -using namespace gfx; - -MacIOSurfaceTextureData::MacIOSurfaceTextureData(MacIOSurface* aSurface, - BackendType aBackend) - : mSurface(aSurface) - , mBackend(aBackend) -{ - MOZ_ASSERT(mSurface); -} - -MacIOSurfaceTextureData::~MacIOSurfaceTextureData() -{} - -// static -MacIOSurfaceTextureData* -MacIOSurfaceTextureData::Create(MacIOSurface* aSurface, BackendType aBackend) -{ - MOZ_ASSERT(aSurface); - if (!aSurface) { - return nullptr; - } - return new MacIOSurfaceTextureData(aSurface, aBackend); -} - -MacIOSurfaceTextureData* -MacIOSurfaceTextureData::Create(const IntSize& aSize, - SurfaceFormat aFormat, - BackendType aBackend) -{ - if (aFormat != SurfaceFormat::B8G8R8A8 && - aFormat != SurfaceFormat::B8G8R8X8) { - return nullptr; - } - - RefPtr surf = MacIOSurface::CreateIOSurface(aSize.width, aSize.height, - 1.0, - aFormat == SurfaceFormat::B8G8R8A8); - if (!surf) { - return nullptr; - } - - return Create(surf, aBackend); -} - -bool -MacIOSurfaceTextureData::Serialize(SurfaceDescriptor& aOutDescriptor) -{ - aOutDescriptor = SurfaceDescriptorMacIOSurface(mSurface->GetIOSurfaceID(), - mSurface->GetContentsScaleFactor(), - !mSurface->HasAlpha()); - return true; -} - -void -MacIOSurfaceTextureData::FillInfo(TextureData::Info& aInfo) const -{ - aInfo.size = gfx::IntSize(mSurface->GetDevicePixelWidth(), mSurface->GetDevicePixelHeight()); - aInfo.format = mSurface->HasAlpha() ? SurfaceFormat::B8G8R8A8 : SurfaceFormat::B8G8R8X8; - aInfo.hasIntermediateBuffer = false; - aInfo.hasSynchronization = false; - aInfo.supportsMoz2D = true; - aInfo.canExposeMappedData = false; -} - -bool -MacIOSurfaceTextureData::Lock(OpenMode) -{ - mSurface->Lock(false); - return true; -} - -void -MacIOSurfaceTextureData::Unlock() -{ - mSurface->Unlock(false); -} - -already_AddRefed -MacIOSurfaceTextureData::GetAsSurface() -{ - RefPtr surf = CreateSourceSurfaceFromMacIOSurface(mSurface); - return surf->GetDataSurface(); -} - -already_AddRefed -MacIOSurfaceTextureData::BorrowDrawTarget() -{ - MOZ_ASSERT(mBackend != BackendType::NONE); - if (mBackend == BackendType::NONE) { - // shouldn't happen, but degrade gracefully - return nullptr; - } - return Factory::CreateDrawTargetForData( - mBackend, - (unsigned char*)mSurface->GetBaseAddress(), - IntSize(mSurface->GetWidth(), mSurface->GetHeight()), - mSurface->GetBytesPerRow(), - mSurface->HasAlpha() ? SurfaceFormat::B8G8R8A8 : SurfaceFormat::B8G8R8X8, - true); -} - -void -MacIOSurfaceTextureData::Deallocate(LayersIPCChannel*) -{ - mSurface = nullptr; -} - -void -MacIOSurfaceTextureData::Forget(LayersIPCChannel*) -{ - mSurface = nullptr; -} - -bool -MacIOSurfaceTextureData::UpdateFromSurface(gfx::SourceSurface* aSurface) -{ - RefPtr dt = BorrowDrawTarget(); - if (!dt) { - return false; - } - - dt->CopySurface(aSurface, IntRect(IntPoint(), aSurface->GetSize()), IntPoint()); - return true; -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h deleted file mode 100644 index 21e4459537..0000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H -#define MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H - -#include "mozilla/layers/TextureClientOGL.h" - -class MacIOSurface; - -namespace mozilla { -namespace layers { - -class MacIOSurfaceTextureData : public TextureData -{ -public: - static MacIOSurfaceTextureData* Create(MacIOSurface* aSurface, - gfx::BackendType aBackend); - - static MacIOSurfaceTextureData* - Create(const gfx::IntSize& aSize, gfx::SurfaceFormat aFormat, - gfx::BackendType aBackend); - - ~MacIOSurfaceTextureData(); - - virtual void FillInfo(TextureData::Info& aInfo) const override; - - virtual bool Lock(OpenMode) override; - - virtual void Unlock() override; - - virtual already_AddRefed BorrowDrawTarget() override; - - virtual bool Serialize(SurfaceDescriptor& aOutDescriptor) override; - - virtual void Deallocate(LayersIPCChannel*) override; - - virtual void Forget(LayersIPCChannel*) override; - - virtual bool UpdateFromSurface(gfx::SourceSurface* aSurface) override; - - // For debugging purposes only. - already_AddRefed GetAsSurface(); - -protected: - MacIOSurfaceTextureData(MacIOSurface* aSurface, - gfx::BackendType aBackend); - - RefPtr mSurface; - gfx::BackendType mBackend; -}; - -} // namespace layers -} // namespace mozilla - -#endif // MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp deleted file mode 100644 index 9736618f7e..0000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MacIOSurfaceTextureHostOGL.h" -#include "mozilla/gfx/MacIOSurface.h" -#include "GLContextCGL.h" - -namespace mozilla { -namespace layers { - -MacIOSurfaceTextureHostOGL::MacIOSurfaceTextureHostOGL(TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor) - : TextureHost(aFlags) -{ - MOZ_COUNT_CTOR(MacIOSurfaceTextureHostOGL); - mSurface = MacIOSurface::LookupSurface(aDescriptor.surfaceId(), - aDescriptor.scaleFactor(), - !aDescriptor.isOpaque()); -} - -MacIOSurfaceTextureHostOGL::~MacIOSurfaceTextureHostOGL() -{ - MOZ_COUNT_DTOR(MacIOSurfaceTextureHostOGL); -} - -GLTextureSource* -MacIOSurfaceTextureHostOGL::CreateTextureSourceForPlane(size_t aPlane) -{ - MOZ_ASSERT(mSurface); - - GLuint textureHandle; - gl::GLContext* gl = mCompositor->gl(); - gl->fGenTextures(1, &textureHandle); - gl->fBindTexture(LOCAL_GL_TEXTURE_RECTANGLE_ARB, textureHandle); - gl->fTexParameteri(LOCAL_GL_TEXTURE_RECTANGLE_ARB, LOCAL_GL_TEXTURE_WRAP_T, LOCAL_GL_CLAMP_TO_EDGE); - gl->fTexParameteri(LOCAL_GL_TEXTURE_RECTANGLE_ARB, LOCAL_GL_TEXTURE_WRAP_S, LOCAL_GL_CLAMP_TO_EDGE); - - mSurface->CGLTexImageIOSurface2D(gl::GLContextCGL::Cast(gl)->GetCGLContext(), aPlane); - - return new GLTextureSource(mCompositor, textureHandle, LOCAL_GL_TEXTURE_RECTANGLE_ARB, - gfx::IntSize(mSurface->GetDevicePixelWidth(aPlane), - mSurface->GetDevicePixelHeight(aPlane)), - // XXX: This isn't really correct (but isn't used), we should be using the - // format of the individual plane, not of the whole buffer. - mSurface->GetFormat()); -} - -bool -MacIOSurfaceTextureHostOGL::Lock() -{ - if (!gl() || !gl()->MakeCurrent() || !mSurface) { - return false; - } - - if (!mTextureSource) { - mTextureSource = CreateTextureSourceForPlane(0); - - RefPtr prev = mTextureSource; - for (size_t i = 1; i < mSurface->GetPlaneCount(); i++) { - RefPtr next = CreateTextureSourceForPlane(i); - prev->SetNextSibling(next); - prev = next; - } - } - return true; -} - -void -MacIOSurfaceTextureHostOGL::SetCompositor(Compositor* aCompositor) -{ - CompositorOGL* glCompositor = AssertGLCompositor(aCompositor); - if (!glCompositor) { - mTextureSource = nullptr; - mCompositor = nullptr; - return; - } - - if (mCompositor != glCompositor) { - // Cannot share GL texture identifiers across compositors. - mTextureSource = nullptr; - } - mCompositor = glCompositor; -} - -gfx::SurfaceFormat -MacIOSurfaceTextureHostOGL::GetFormat() const { - if (!mSurface) { - return gfx::SurfaceFormat::UNKNOWN; - } - return mSurface->GetFormat(); -} - -gfx::SurfaceFormat -MacIOSurfaceTextureHostOGL::GetReadFormat() const { - if (!mSurface) { - return gfx::SurfaceFormat::UNKNOWN; - } - return mSurface->GetReadFormat(); -} - -gfx::IntSize -MacIOSurfaceTextureHostOGL::GetSize() const { - if (!mSurface) { - return gfx::IntSize(); - } - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -gl::GLContext* -MacIOSurfaceTextureHostOGL::gl() const -{ - return mCompositor ? mCompositor->gl() : nullptr; -} - -MacIOSurfaceTextureSourceOGL::MacIOSurfaceTextureSourceOGL( - CompositorOGL* aCompositor, - MacIOSurface* aSurface) - : mCompositor(aCompositor) - , mSurface(aSurface) -{ - MOZ_ASSERT(aCompositor); - MOZ_COUNT_CTOR(MacIOSurfaceTextureSourceOGL); -} - -MacIOSurfaceTextureSourceOGL::~MacIOSurfaceTextureSourceOGL() -{ - MOZ_COUNT_DTOR(MacIOSurfaceTextureSourceOGL); -} - -gfx::IntSize -MacIOSurfaceTextureSourceOGL::GetSize() const -{ - return gfx::IntSize(mSurface->GetDevicePixelWidth(), - mSurface->GetDevicePixelHeight()); -} - -gfx::SurfaceFormat -MacIOSurfaceTextureSourceOGL::GetFormat() const -{ - return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 - : gfx::SurfaceFormat::R8G8B8X8; -} - -void -MacIOSurfaceTextureSourceOGL::BindTexture(GLenum aTextureUnit, - gfx::SamplingFilter aSamplingFilter) -{ - gl::GLContext* gl = this->gl(); - if (!gl || !gl->MakeCurrent()) { - NS_WARNING("Trying to bind a texture without a working GLContext"); - return; - } - GLuint tex = mCompositor->GetTemporaryTexture(GetTextureTarget(), aTextureUnit); - - gl->fActiveTexture(aTextureUnit); - gl->fBindTexture(LOCAL_GL_TEXTURE_RECTANGLE_ARB, tex); - mSurface->CGLTexImageIOSurface2D(gl::GLContextCGL::Cast(gl)->GetCGLContext()); - ApplySamplingFilterToBoundTexture(gl, aSamplingFilter, LOCAL_GL_TEXTURE_RECTANGLE_ARB); -} - -void -MacIOSurfaceTextureSourceOGL::SetCompositor(Compositor* aCompositor) -{ - mCompositor = AssertGLCompositor(aCompositor); - if (mCompositor && mNextSibling) { - mNextSibling->SetCompositor(aCompositor); - } -} - -gl::GLContext* -MacIOSurfaceTextureSourceOGL::gl() const -{ - return mCompositor ? mCompositor->gl() : nullptr; -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h deleted file mode 100644 index 55e2f5019a..0000000000 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H -#define MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H - -#include "mozilla/layers/CompositorOGL.h" -#include "mozilla/layers/TextureHostOGL.h" - -class MacIOSurface; - -namespace mozilla { -namespace layers { - -/** - * A texture source meant for use with MacIOSurfaceTextureHostOGL. - * - * It does not own any GL texture, and attaches its shared handle to one of - * the compositor's temporary textures when binding. - */ -class MacIOSurfaceTextureSourceOGL : public TextureSource - , public TextureSourceOGL -{ -public: - MacIOSurfaceTextureSourceOGL(CompositorOGL* aCompositor, - MacIOSurface* aSurface); - virtual ~MacIOSurfaceTextureSourceOGL(); - - virtual const char* Name() const override { return "MacIOSurfaceTextureSourceOGL"; } - - virtual TextureSourceOGL* AsSourceOGL() override { return this; } - - virtual void BindTexture(GLenum activetex, - gfx::SamplingFilter aSamplingFilter) override; - - virtual bool IsValid() const override { return !!gl(); } - - virtual gfx::IntSize GetSize() const override; - - virtual gfx::SurfaceFormat GetFormat() const override; - - virtual GLenum GetTextureTarget() const override { return LOCAL_GL_TEXTURE_RECTANGLE_ARB; } - - virtual GLenum GetWrapMode() const override { return LOCAL_GL_CLAMP_TO_EDGE; } - - // MacIOSurfaceTextureSourceOGL doesn't own any gl texture - virtual void DeallocateDeviceData() override {} - - virtual void SetCompositor(Compositor* aCompositor) override; - - gl::GLContext* gl() const; - -protected: - RefPtr mCompositor; - RefPtr mSurface; -}; - -/** - * A TextureHost for shared MacIOSurface - * - * Most of the logic actually happens in MacIOSurfaceTextureSourceOGL. - */ -class MacIOSurfaceTextureHostOGL : public TextureHost -{ -public: - MacIOSurfaceTextureHostOGL(TextureFlags aFlags, - const SurfaceDescriptorMacIOSurface& aDescriptor); - virtual ~MacIOSurfaceTextureHostOGL(); - - // MacIOSurfaceTextureSourceOGL doesn't own any GL texture - virtual void DeallocateDeviceData() override {} - - virtual void SetCompositor(Compositor* aCompositor) override; - - virtual Compositor* GetCompositor() override { return mCompositor; } - - virtual bool Lock() override; - - virtual gfx::SurfaceFormat GetFormat() const override; - virtual gfx::SurfaceFormat GetReadFormat() const override; - - virtual bool BindTextureSource(CompositableTextureSourceRef& aTexture) override - { - aTexture = mTextureSource; - return !!aTexture; - } - - virtual already_AddRefed GetAsSurface() override - { - return nullptr; // XXX - implement this (for MOZ_DUMP_PAINTING) - } - - gl::GLContext* gl() const; - - virtual gfx::IntSize GetSize() const override; - -#ifdef MOZ_LAYERS_HAVE_LOG - virtual const char* Name() override { return "MacIOSurfaceTextureHostOGL"; } -#endif - -protected: - GLTextureSource* CreateTextureSourceForPlane(size_t aPlane); - - RefPtr mCompositor; - RefPtr mTextureSource; - RefPtr mSurface; -}; - -} // namespace layers -} // namespace mozilla - -#endif // MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_H diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py index 08d6ed9ab7..2b963bf5b9 100644 --- a/gfx/skia/generate_mozbuild.py +++ b/gfx/skia/generate_mozbuild.py @@ -69,7 +69,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): if CONFIG['MOZ_WIDGET_TOOLKIT'] in { 'android', - 'cocoa', 'gtk2', 'gtk3', 'uikit', @@ -455,7 +454,7 @@ def write_mozbuild(sources): f.write("if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'):\n") write_sources(f, sources['android'], 4) - f.write("if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'cocoa', 'uikit'}:\n") + f.write("if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'uikit'}:\n") write_sources(f, sources['mac'], 4) f.write("if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:\n") diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build index 56570e61fb..2d44a743a8 100644 --- a/gfx/skia/moz.build +++ b/gfx/skia/moz.build @@ -528,7 +528,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): 'skia/src/ports/SkFontHost_cairo.cpp', 'skia/src/ports/SkFontHost_FreeType_common.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'cocoa', 'uikit'}: +if CONFIG['MOZ_WIDGET_TOOLKIT'] in {'uikit'}: SOURCES += [ 'skia/src/ports/SkDebug_stdio.cpp', 'skia/src/ports/SkOSFile_posix.cpp', @@ -679,7 +679,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): if CONFIG['MOZ_WIDGET_TOOLKIT'] in { 'android', - 'cocoa', 'gtk2', 'gtk3', 'uikit', diff --git a/image/decoders/icon/mac/moz.build b/image/decoders/icon/mac/moz.build deleted file mode 100644 index f36d6ca53d..0000000000 --- a/image/decoders/icon/mac/moz.build +++ /dev/null @@ -1,10 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -SOURCES += [ - 'nsIconChannelCocoa.mm', -] - -FINAL_LIBRARY = 'xul' diff --git a/image/decoders/icon/mac/nsIconChannel.h b/image/decoders/icon/mac/nsIconChannel.h deleted file mode 100644 index 9fef171193..0000000000 --- a/image/decoders/icon/mac/nsIconChannel.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_image_encoders_icon_mac_nsIconChannel_h -#define mozilla_image_encoders_icon_mac_nsIconChannel_h - -#include "mozilla/Attributes.h" - -#include "nsCOMPtr.h" -#include "nsXPIDLString.h" -#include "nsIChannel.h" -#include "nsILoadGroup.h" -#include "nsILoadInfo.h" -#include "nsIInterfaceRequestor.h" -#include "nsIInterfaceRequestorUtils.h" -#include "nsIInputStreamPump.h" -#include "nsIStreamListener.h" -#include "nsIURI.h" - -class nsIFile; - -class nsIconChannel final : public nsIChannel, public nsIStreamListener -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIREQUEST - NS_DECL_NSICHANNEL - NS_DECL_NSIREQUESTOBSERVER - NS_DECL_NSISTREAMLISTENER - - nsIconChannel(); - - nsresult Init(nsIURI* uri); - -protected: - virtual ~nsIconChannel(); - - nsCOMPtr mUrl; - nsCOMPtr mOriginalURI; - nsCOMPtr mLoadGroup; - nsCOMPtr mCallbacks; - nsCOMPtr mOwner; - nsCOMPtr mLoadInfo; - - nsCOMPtr mPump; - nsCOMPtr mListener; - - nsresult MakeInputStream(nsIInputStream** _retval, bool nonBlocking); - - nsresult ExtractIconInfoFromUrl(nsIFile** aLocalFile, - uint32_t* aDesiredImageSize, - nsACString& aContentType, - nsACString& aFileExtension); -}; - -#endif // mozilla_image_encoders_icon_mac_nsIconChannel_h diff --git a/image/decoders/icon/mac/nsIconChannelCocoa.mm b/image/decoders/icon/mac/nsIconChannelCocoa.mm deleted file mode 100644 index 9c2686cdd2..0000000000 --- a/image/decoders/icon/mac/nsIconChannelCocoa.mm +++ /dev/null @@ -1,565 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsContentUtils.h" -#include "nsIconChannel.h" -#include "mozilla/EndianUtils.h" -#include "nsIIconURI.h" -#include "nsIServiceManager.h" -#include "nsIInterfaceRequestor.h" -#include "nsIInterfaceRequestorUtils.h" -#include "nsXPIDLString.h" -#include "nsMimeTypes.h" -#include "nsMemory.h" -#include "nsIStringStream.h" -#include "nsIURL.h" -#include "nsNetCID.h" -#include "nsIPipe.h" -#include "nsIOutputStream.h" -#include "nsIMIMEService.h" -#include "nsCExternalHandlerService.h" -#include "nsILocalFileMac.h" -#include "nsIFileURL.h" -#include "nsTArray.h" -#include "nsObjCExceptions.h" -#include "nsProxyRelease.h" -#include "nsContentSecurityManager.h" - -#include - -// nsIconChannel methods -nsIconChannel::nsIconChannel() -{ -} - -nsIconChannel::~nsIconChannel() -{ - if (mLoadInfo) { - NS_ReleaseOnMainThread(mLoadInfo.forget()); - } -} - -NS_IMPL_ISUPPORTS(nsIconChannel, - nsIChannel, - nsIRequest, - nsIRequestObserver, - nsIStreamListener) - -nsresult -nsIconChannel::Init(nsIURI* uri) -{ - NS_ASSERTION(uri, "no uri"); - mUrl = uri; - mOriginalURI = uri; - nsresult rv; - mPump = do_CreateInstance(NS_INPUTSTREAMPUMP_CONTRACTID, &rv); - return rv; -} - -//////////////////////////////////////////////////////////////////////////////// -// nsIRequest methods: - -NS_IMETHODIMP -nsIconChannel::GetName(nsACString& result) -{ - return mUrl->GetSpec(result); -} - -NS_IMETHODIMP -nsIconChannel::IsPending(bool* result) -{ - return mPump->IsPending(result); -} - -NS_IMETHODIMP -nsIconChannel::GetStatus(nsresult* status) -{ - return mPump->GetStatus(status); -} - -NS_IMETHODIMP -nsIconChannel::Cancel(nsresult status) -{ - return mPump->Cancel(status); -} - -NS_IMETHODIMP -nsIconChannel::Suspend(void) -{ - return mPump->Suspend(); -} - -NS_IMETHODIMP -nsIconChannel::Resume(void) -{ - return mPump->Resume(); -} - -// nsIRequestObserver methods -NS_IMETHODIMP -nsIconChannel::OnStartRequest(nsIRequest* aRequest, - nsISupports* aContext) -{ - if (mListener) { - return mListener->OnStartRequest(this, aContext); - } - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::OnStopRequest(nsIRequest* aRequest, - nsISupports* aContext, - nsresult aStatus) -{ - if (mListener) { - mListener->OnStopRequest(this, aContext, aStatus); - mListener = nullptr; - } - - // Remove from load group - if (mLoadGroup) { - mLoadGroup->RemoveRequest(this, nullptr, aStatus); - } - - return NS_OK; -} - -// nsIStreamListener methods -NS_IMETHODIMP -nsIconChannel::OnDataAvailable(nsIRequest* aRequest, - nsISupports* aContext, - nsIInputStream* aStream, - uint64_t aOffset, - uint32_t aCount) -{ - if (mListener) { - return mListener->OnDataAvailable(this, aContext, aStream, aOffset, aCount); - } - return NS_OK; -} - -//////////////////////////////////////////////////////////////////////////////// -// nsIChannel methods: - -NS_IMETHODIMP -nsIconChannel::GetOriginalURI(nsIURI** aURI) -{ - *aURI = mOriginalURI; - NS_ADDREF(*aURI); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetOriginalURI(nsIURI* aURI) -{ - NS_ENSURE_ARG_POINTER(aURI); - mOriginalURI = aURI; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetURI(nsIURI** aURI) -{ - *aURI = mUrl; - NS_IF_ADDREF(*aURI); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::Open(nsIInputStream** _retval) -{ - return MakeInputStream(_retval, false); -} - -NS_IMETHODIMP -nsIconChannel::Open2(nsIInputStream** aStream) -{ - nsCOMPtr listener; - nsresult rv = nsContentSecurityManager::doContentSecurityCheck(this, listener); - NS_ENSURE_SUCCESS(rv, rv); - return Open(aStream); -} - -nsresult -nsIconChannel::ExtractIconInfoFromUrl(nsIFile** aLocalFile, - uint32_t* aDesiredImageSize, - nsACString& aContentType, - nsACString& aFileExtension) -{ - nsresult rv = NS_OK; - nsCOMPtr iconURI (do_QueryInterface(mUrl, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - iconURI->GetImageSize(aDesiredImageSize); - iconURI->GetContentType(aContentType); - iconURI->GetFileExtension(aFileExtension); - - nsCOMPtr url; - rv = iconURI->GetIconURL(getter_AddRefs(url)); - if (NS_FAILED(rv) || !url) return NS_OK; - - nsCOMPtr fileURL = do_QueryInterface(url, &rv); - if (NS_FAILED(rv) || !fileURL) return NS_OK; - - nsCOMPtr file; - rv = fileURL->GetFile(getter_AddRefs(file)); - if (NS_FAILED(rv) || !file) return NS_OK; - - nsCOMPtr localFileMac (do_QueryInterface(file, &rv)); - if (NS_FAILED(rv) || !localFileMac) return NS_OK; - - *aLocalFile = file; - NS_IF_ADDREF(*aLocalFile); - - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::AsyncOpen(nsIStreamListener* aListener, - nsISupports* ctxt) -{ - MOZ_ASSERT(!mLoadInfo || - mLoadInfo->GetSecurityMode() == 0 || - mLoadInfo->GetInitialSecurityCheckDone() || - (mLoadInfo->GetSecurityMode() == nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL && - nsContentUtils::IsSystemPrincipal(mLoadInfo->LoadingPrincipal())), - "security flags in loadInfo but asyncOpen2() not called"); - - nsCOMPtr inStream; - nsresult rv = MakeInputStream(getter_AddRefs(inStream), true); - NS_ENSURE_SUCCESS(rv, rv); - - // Init our stream pump - rv = mPump->Init(inStream, int64_t(-1), int64_t(-1), 0, 0, false); - NS_ENSURE_SUCCESS(rv, rv); - - rv = mPump->AsyncRead(this, ctxt); - if (NS_SUCCEEDED(rv)) { - // Store our real listener - mListener = aListener; - // Add ourself to the load group, if available - if (mLoadGroup) { - mLoadGroup->AddRequest(this, nullptr); - } - } - - return rv; -} - -NS_IMETHODIMP -nsIconChannel::AsyncOpen2(nsIStreamListener* aListener) -{ - nsCOMPtr listener = aListener; - nsresult rv = nsContentSecurityManager::doContentSecurityCheck(this, listener); - NS_ENSURE_SUCCESS(rv, rv); - return AsyncOpen(listener, nullptr); -} - -nsresult -nsIconChannel::MakeInputStream(nsIInputStream** _retval, - bool aNonBlocking) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - nsXPIDLCString contentType; - nsAutoCString fileExt; - nsCOMPtr fileloc; // file we want an icon for - uint32_t desiredImageSize; - nsresult rv = ExtractIconInfoFromUrl(getter_AddRefs(fileloc), - &desiredImageSize, contentType, fileExt); - NS_ENSURE_SUCCESS(rv, rv); - - bool fileExists = false; - if (fileloc) { - // ensure that we DO NOT resolve aliases, very important for file views - fileloc->SetFollowLinks(false); - fileloc->Exists(&fileExists); - } - - NSImage* iconImage = nil; - - // first try to get the icon from the file if it exists - if (fileExists) { - nsCOMPtr localFileMac(do_QueryInterface(fileloc, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - CFURLRef macURL; - if (NS_SUCCEEDED(localFileMac->GetCFURL(&macURL))) { - iconImage = [[NSWorkspace sharedWorkspace] - iconForFile:[(NSURL*)macURL path]]; - ::CFRelease(macURL); - } - } - - // if we don't have an icon yet try to get one by extension - if (!iconImage && !fileExt.IsEmpty()) { - NSString* fileExtension = [NSString stringWithUTF8String:fileExt.get()]; - iconImage = [[NSWorkspace sharedWorkspace] iconForFileType:fileExtension]; - } - - // If we still don't have an icon, get the generic document icon. - if (!iconImage) { - iconImage = [[NSWorkspace sharedWorkspace] - iconForFileType:NSFileTypeUnknown]; - } - - if (!iconImage) { - return NS_ERROR_FAILURE; - } - - // we have an icon now, size it - NSRect desiredSizeRect = NSMakeRect(0, 0, desiredImageSize, desiredImageSize); - [iconImage setSize:desiredSizeRect.size]; - - [iconImage lockFocus]; - NSBitmapImageRep* bitmapRep = [[[NSBitmapImageRep alloc] - initWithFocusedViewRect:desiredSizeRect] - autorelease]; - [iconImage unlockFocus]; - - // we expect the following things to be true about our bitmapRep - NS_ENSURE_TRUE(![bitmapRep isPlanar] && - // Not necessarily: on a HiDPI-capable system, we'll get - // a 2x bitmap - // (unsigned int)[bitmapRep bytesPerPlane] == - // desiredImageSize * desiredImageSize * 4 && - [bitmapRep bitsPerPixel] == 32 && - [bitmapRep samplesPerPixel] == 4 && - [bitmapRep hasAlpha] == YES, - NS_ERROR_UNEXPECTED); - - // check what size we actually got, and ensure it isn't too big to return - uint32_t actualImageSize = [bitmapRep bytesPerRow] / 4; - NS_ENSURE_TRUE(actualImageSize < 256, NS_ERROR_UNEXPECTED); - - // now we can validate the amount of data - NS_ENSURE_TRUE((unsigned int)[bitmapRep bytesPerPlane] == - actualImageSize * actualImageSize * 4, - NS_ERROR_UNEXPECTED); - - // rgba, pre-multiplied data - uint8_t* bitmapRepData = (uint8_t*)[bitmapRep bitmapData]; - - // create our buffer - int32_t bufferCapacity = 2 + [bitmapRep bytesPerPlane]; - AutoTArray iconBuffer; // initial size is for - // 16x16 - iconBuffer.SetLength(bufferCapacity); - - uint8_t* iconBufferPtr = iconBuffer.Elements(); - - // write header data into buffer - *iconBufferPtr++ = actualImageSize; - *iconBufferPtr++ = actualImageSize; - - uint32_t dataCount = [bitmapRep bytesPerPlane]; - uint32_t index = 0; - while (index < dataCount) { - // get data from the bitmap - uint8_t r = bitmapRepData[index++]; - uint8_t g = bitmapRepData[index++]; - uint8_t b = bitmapRepData[index++]; - uint8_t a = bitmapRepData[index++]; - - // write data out to our buffer - // non-cairo uses native image format, but the A channel is ignored. - // cairo uses ARGB (highest to lowest bits) -#if MOZ_LITTLE_ENDIAN - *iconBufferPtr++ = b; - *iconBufferPtr++ = g; - *iconBufferPtr++ = r; - *iconBufferPtr++ = a; -#else - *iconBufferPtr++ = a; - *iconBufferPtr++ = r; - *iconBufferPtr++ = g; - *iconBufferPtr++ = b; -#endif - } - - NS_ASSERTION(iconBufferPtr == iconBuffer.Elements() + bufferCapacity, - "buffer size miscalculation"); - - // Now, create a pipe and stuff our data into it - nsCOMPtr inStream; - nsCOMPtr outStream; - rv = NS_NewPipe(getter_AddRefs(inStream), getter_AddRefs(outStream), - bufferCapacity, bufferCapacity, aNonBlocking); - - if (NS_SUCCEEDED(rv)) { - uint32_t written; - rv = outStream->Write((char*)iconBuffer.Elements(), bufferCapacity, - &written); - if (NS_SUCCEEDED(rv)) { - NS_IF_ADDREF(*_retval = inStream); - } - } - - // Drop notification callbacks to prevent cycles. - mCallbacks = nullptr; - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsIconChannel::GetLoadFlags(uint32_t* aLoadAttributes) -{ - return mPump->GetLoadFlags(aLoadAttributes); -} - -NS_IMETHODIMP -nsIconChannel::SetLoadFlags(uint32_t aLoadAttributes) -{ - return mPump->SetLoadFlags(aLoadAttributes); -} - -NS_IMETHODIMP -nsIconChannel::GetContentType(nsACString& aContentType) -{ - aContentType.AssignLiteral(IMAGE_ICON_MS); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetContentType(const nsACString& aContentType) -{ - //It doesn't make sense to set the content-type on this type - // of channel... - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsIconChannel::GetContentCharset(nsACString& aContentCharset) -{ - aContentCharset.AssignLiteral(IMAGE_ICON_MS); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetContentCharset(const nsACString& aContentCharset) -{ - //It doesn't make sense to set the content-type on this type - // of channel... - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsIconChannel::GetContentDisposition(uint32_t* aContentDisposition) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel::SetContentDisposition(uint32_t aContentDisposition) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel:: - GetContentDispositionFilename(nsAString& aContentDispositionFilename) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel:: - SetContentDispositionFilename(const nsAString& aContentDispositionFilename) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel:: - GetContentDispositionHeader(nsACString& aContentDispositionHeader) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsIconChannel::GetContentLength(int64_t* aContentLength) -{ - *aContentLength = 0; - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsIconChannel::SetContentLength(int64_t aContentLength) -{ - NS_NOTREACHED("nsIconChannel::SetContentLength"); - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP -nsIconChannel::GetLoadGroup(nsILoadGroup** aLoadGroup) -{ - *aLoadGroup = mLoadGroup; - NS_IF_ADDREF(*aLoadGroup); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetLoadGroup(nsILoadGroup* aLoadGroup) -{ - mLoadGroup = aLoadGroup; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetOwner(nsISupports** aOwner) -{ - *aOwner = mOwner.get(); - NS_IF_ADDREF(*aOwner); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetOwner(nsISupports* aOwner) -{ - mOwner = aOwner; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetLoadInfo(nsILoadInfo** aLoadInfo) -{ - NS_IF_ADDREF(*aLoadInfo = mLoadInfo); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::SetLoadInfo(nsILoadInfo* aLoadInfo) -{ - mLoadInfo = aLoadInfo; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel:: - GetNotificationCallbacks(nsIInterfaceRequestor** aNotificationCallbacks) -{ - *aNotificationCallbacks = mCallbacks.get(); - NS_IF_ADDREF(*aNotificationCallbacks); - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel:: - SetNotificationCallbacks(nsIInterfaceRequestor* aNotificationCallbacks) -{ - mCallbacks = aNotificationCallbacks; - return NS_OK; -} - -NS_IMETHODIMP -nsIconChannel::GetSecurityInfo(nsISupports** aSecurityInfo) -{ - *aSecurityInfo = nullptr; - return NS_OK; -} - diff --git a/image/decoders/icon/moz.build b/image/decoders/icon/moz.build index 5a173d3169..56465dd274 100644 --- a/image/decoders/icon/moz.build +++ b/image/decoders/icon/moz.build @@ -21,8 +21,5 @@ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: if CONFIG['OS_ARCH'] == 'WINNT': platform = 'win' -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - platform = 'mac' - if platform: LOCAL_INCLUDES += [platform] diff --git a/image/decoders/moz.build b/image/decoders/moz.build index 907b81bda8..5a07bf765f 100644 --- a/image/decoders/moz.build +++ b/image/decoders/moz.build @@ -13,9 +13,6 @@ if 'gtk' in toolkit: if CONFIG['OS_ARCH'] == 'WINNT': DIRS += ['icon/win', 'icon'] -if toolkit == 'cocoa': - DIRS += ['icon/mac', 'icon'] - UNIFIED_SOURCES += [ 'EXIF.cpp', 'iccjpeg.c', diff --git a/intl/locale/mac/moz.build b/intl/locale/mac/moz.build deleted file mode 100644 index 422fd3e3cd..0000000000 --- a/intl/locale/mac/moz.build +++ /dev/null @@ -1,15 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -UNIFIED_SOURCES += [ - 'nsCollationMacUC.cpp', - 'nsDateTimeFormatMac.cpp', - 'nsMacCharset.cpp', -] - -FINAL_LIBRARY = 'xul' -LOCAL_INCLUDES += [ - '..', -] diff --git a/intl/locale/mac/nsCollationMacUC.cpp b/intl/locale/mac/nsCollationMacUC.cpp deleted file mode 100644 index d230f4d771..0000000000 --- a/intl/locale/mac/nsCollationMacUC.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsCollationMacUC.h" -#include "nsILocaleService.h" -#include "nsIPrefBranch.h" -#include "nsIPrefService.h" -#include "nsIServiceManager.h" -#include "prmem.h" -#include "nsString.h" - -NS_IMPL_ISUPPORTS(nsCollationMacUC, nsICollation) - -nsCollationMacUC::nsCollationMacUC() - : mInit(false) - , mHasCollator(false) - , mLocaleICU(nullptr) - , mLastStrength(-1) - , mCollatorICU(nullptr) -{ } - -nsCollationMacUC::~nsCollationMacUC() -{ -#ifdef DEBUG - nsresult res = -#endif - CleanUpCollator(); - NS_ASSERTION(NS_SUCCEEDED(res), "CleanUpCollator failed"); - if (mLocaleICU) { - free(mLocaleICU); - mLocaleICU = nullptr; - } -} - -nsresult nsCollationMacUC::ConvertStrength(const int32_t aNSStrength, - UCollationStrength* aICUStrength, - UColAttributeValue* aCaseLevelOut) -{ - NS_ENSURE_ARG_POINTER(aICUStrength); - NS_ENSURE_TRUE((aNSStrength < 4), NS_ERROR_FAILURE); - - UCollationStrength strength = UCOL_DEFAULT; - UColAttributeValue caseLevel = UCOL_OFF; - switch (aNSStrength) { - case kCollationCaseInSensitive: - strength = UCOL_PRIMARY; - break; - case kCollationCaseInsensitiveAscii: - strength = UCOL_SECONDARY; - break; - case kCollationAccentInsenstive: - caseLevel = UCOL_ON; - strength = UCOL_PRIMARY; - break; - case kCollationCaseSensitive: - strength = UCOL_TERTIARY; - break; - default: - NS_WARNING("Bad aNSStrength passed to ConvertStrength."); - return NS_ERROR_FAILURE; - } - - *aICUStrength = strength; - *aCaseLevelOut = caseLevel; - - return NS_OK; -} - -nsresult nsCollationMacUC::ConvertLocaleICU(nsILocale* aNSLocale, char** aICULocale) -{ - NS_ENSURE_ARG_POINTER(aNSLocale); - NS_ENSURE_ARG_POINTER(aICULocale); - - nsAutoString localeString; - nsresult res = aNSLocale->GetCategory(NS_LITERAL_STRING("NSILOCALE_COLLATE"), localeString); - NS_ENSURE_TRUE(NS_SUCCEEDED(res) && !localeString.IsEmpty(), - NS_ERROR_FAILURE); - NS_LossyConvertUTF16toASCII tmp(localeString); - tmp.ReplaceChar('-', '_'); - char* locale = (char*)malloc(tmp.Length() + 1); - if (!locale) { - return NS_ERROR_OUT_OF_MEMORY; - } - strcpy(locale, tmp.get()); - - *aICULocale = locale; - - return NS_OK; -} - -nsresult nsCollationMacUC::EnsureCollator(const int32_t newStrength) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - if (mHasCollator && (mLastStrength == newStrength)) - return NS_OK; - - nsresult res; - res = CleanUpCollator(); - NS_ENSURE_SUCCESS(res, res); - - NS_ENSURE_TRUE(mLocaleICU, NS_ERROR_NOT_INITIALIZED); - - UErrorCode status; - status = U_ZERO_ERROR; - mCollatorICU = ucol_open(mLocaleICU, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - - UCollationStrength strength; - UColAttributeValue caseLevel; - res = ConvertStrength(newStrength, &strength, &caseLevel); - NS_ENSURE_SUCCESS(res, res); - - status = U_ZERO_ERROR; - ucol_setAttribute(mCollatorICU, UCOL_STRENGTH, strength, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_CASE_LEVEL, caseLevel, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_ALTERNATE_HANDLING, UCOL_DEFAULT, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_NUMERIC_COLLATION, UCOL_OFF, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_NORMALIZATION_MODE, UCOL_ON, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - ucol_setAttribute(mCollatorICU, UCOL_CASE_FIRST, UCOL_DEFAULT, &status); - NS_ENSURE_TRUE(U_SUCCESS(status), NS_ERROR_FAILURE); - - mHasCollator = true; - - mLastStrength = newStrength; - return NS_OK; -} - -nsresult nsCollationMacUC::CleanUpCollator(void) -{ - if (mHasCollator) { - ucol_close(mCollatorICU); - mHasCollator = false; - } - - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::Initialize(nsILocale* locale) -{ - NS_ENSURE_TRUE((!mInit), NS_ERROR_ALREADY_INITIALIZED); - nsCOMPtr appLocale; - - nsresult rv; - if (!locale) { - nsCOMPtr localeService = do_GetService(NS_LOCALESERVICE_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - rv = localeService->GetApplicationLocale(getter_AddRefs(appLocale)); - NS_ENSURE_SUCCESS(rv, rv); - locale = appLocale; - } - - rv = ConvertLocaleICU(locale, &mLocaleICU); - NS_ENSURE_SUCCESS(rv, rv); - - mInit = true; - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::AllocateRawSortKey(int32_t strength, const nsAString& stringIn, - uint8_t** key, uint32_t* outLen) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - NS_ENSURE_ARG_POINTER(key); - NS_ENSURE_ARG_POINTER(outLen); - - nsresult res = EnsureCollator(strength); - NS_ENSURE_SUCCESS(res, res); - - uint32_t stringInLen = stringIn.Length(); - - const UChar* str = (const UChar*)stringIn.BeginReading(); - - int32_t keyLength = ucol_getSortKey(mCollatorICU, str, stringInLen, nullptr, 0); - NS_ENSURE_TRUE((stringInLen == 0 || keyLength > 0), NS_ERROR_FAILURE); - - // Since key is freed elsewhere with PR_Free, allocate with PR_Malloc. - uint8_t* newKey = (uint8_t*)PR_Malloc(keyLength + 1); - if (!newKey) { - return NS_ERROR_OUT_OF_MEMORY; - } - - keyLength = ucol_getSortKey(mCollatorICU, str, stringInLen, newKey, keyLength + 1); - NS_ENSURE_TRUE((stringInLen == 0 || keyLength > 0), NS_ERROR_FAILURE); - - *key = newKey; - *outLen = keyLength; - - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::CompareString(int32_t strength, const nsAString& string1, - const nsAString& string2, int32_t* result) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - NS_ENSURE_ARG_POINTER(result); - *result = 0; - - nsresult rv = EnsureCollator(strength); - NS_ENSURE_SUCCESS(rv, rv); - - UCollationResult uresult; - uresult = ucol_strcoll(mCollatorICU, - (const UChar*)string1.BeginReading(), - string1.Length(), - (const UChar*)string2.BeginReading(), - string2.Length()); - int32_t res; - switch (uresult) { - case UCOL_LESS: - res = -1; - break; - case UCOL_EQUAL: - res = 0; - break; - case UCOL_GREATER: - res = 1; - break; - default: - MOZ_CRASH("ucol_strcoll returned bad UCollationResult"); - } - *result = res; - return NS_OK; -} - -NS_IMETHODIMP nsCollationMacUC::CompareRawSortKey(const uint8_t* key1, uint32_t len1, - const uint8_t* key2, uint32_t len2, - int32_t* result) -{ - NS_ENSURE_TRUE(mInit, NS_ERROR_NOT_INITIALIZED); - NS_ENSURE_ARG_POINTER(key1); - NS_ENSURE_ARG_POINTER(key2); - NS_ENSURE_ARG_POINTER(result); - *result = 0; - - int32_t tmpResult = strcmp((const char*)key1, (const char*)key2); - int32_t res; - if (tmpResult < 0) { - res = -1; - } else if (tmpResult > 0) { - res = 1; - } else { - res = 0; - } - *result = res; - return NS_OK; -} diff --git a/intl/locale/mac/nsCollationMacUC.h b/intl/locale/mac/nsCollationMacUC.h deleted file mode 100644 index 46bb0145de..0000000000 --- a/intl/locale/mac/nsCollationMacUC.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef nsCollationMacUC_h_ -#define nsCollationMacUC_h_ - -#include "nsICollation.h" -#include "nsCollation.h" -#include "mozilla/Attributes.h" - -#include "unicode/ucol.h" - -class nsCollationMacUC final : public nsICollation { - -public: - nsCollationMacUC(); - - // nsISupports interface - NS_DECL_ISUPPORTS - - // nsICollation interface - NS_DECL_NSICOLLATION - -protected: - ~nsCollationMacUC(); - - nsresult ConvertLocaleICU(nsILocale* aNSLocale, char** aICULocale); - nsresult ConvertStrength(const int32_t aStrength, - UCollationStrength* aStrengthOut, - UColAttributeValue* aCaseLevelOut); - nsresult EnsureCollator(const int32_t newStrength); - nsresult CleanUpCollator(void); - -private: - bool mInit; - bool mHasCollator; - char* mLocaleICU; - int32_t mLastStrength; - UCollator* mCollatorICU; -}; - -#endif /* nsCollationMacUC_h_ */ diff --git a/intl/locale/mac/nsDateTimeFormatMac.cpp b/intl/locale/mac/nsDateTimeFormatMac.cpp deleted file mode 100644 index 6ee73292d7..0000000000 --- a/intl/locale/mac/nsDateTimeFormatMac.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include "nsIServiceManager.h" -#include "nsDateTimeFormatMac.h" -#include -#include "nsIComponentManager.h" -#include "nsILocaleService.h" -#include "nsCRT.h" -#include "plstr.h" -#include "nsUnicharUtils.h" -#include "nsTArray.h" - - -NS_IMPL_ISUPPORTS(nsDateTimeFormatMac, nsIDateTimeFormat) - -nsresult nsDateTimeFormatMac::Initialize(nsILocale* locale) -{ - nsAutoString localeStr; - nsAutoString category(NS_LITERAL_STRING("NSILOCALE_TIME")); - nsresult res; - - // use cached info if match with stored locale - if (nullptr == locale) { - if (!mLocale.IsEmpty() && - mLocale.Equals(mAppLocale, nsCaseInsensitiveStringComparator())) { - return NS_OK; - } - } - else { - res = locale->GetCategory(category, localeStr); - if (NS_SUCCEEDED(res) && !localeStr.IsEmpty()) { - if (!mLocale.IsEmpty() && - mLocale.Equals(localeStr, - nsCaseInsensitiveStringComparator())) { - return NS_OK; - } - } - } - - // get application locale - nsCOMPtr localeService = - do_GetService(NS_LOCALESERVICE_CONTRACTID, &res); - if (NS_SUCCEEDED(res)) { - nsCOMPtr appLocale; - res = localeService->GetApplicationLocale(getter_AddRefs(appLocale)); - if (NS_SUCCEEDED(res)) { - res = appLocale->GetCategory(category, localeStr); - if (NS_SUCCEEDED(res) && !localeStr.IsEmpty()) { - mAppLocale = localeStr; // cache app locale name - } - } - } - - // use app default if no locale specified - if (nullptr == locale) { - mUseDefaultLocale = true; - } - else { - mUseDefaultLocale = false; - res = locale->GetCategory(category, localeStr); - } - - if (NS_SUCCEEDED(res) && !localeStr.IsEmpty()) { - mLocale.Assign(localeStr); // cache locale name - } - - return res; -} - -// performs a locale sensitive date formatting operation on the time_t parameter -nsresult nsDateTimeFormatMac::FormatTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const time_t timetTime, - nsAString& stringOut) -{ - struct tm tmTime; - return FormatTMTime(locale, dateFormatSelector, timeFormatSelector, localtime_r(&timetTime, &tmTime), stringOut); -} - -// performs a locale sensitive date formatting operation on the struct tm parameter -nsresult nsDateTimeFormatMac::FormatTMTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const struct tm* tmTime, - nsAString& stringOut) -{ - nsresult res = NS_OK; - - // set up locale data - (void) Initialize(locale); - - // return, nothing to format - if (dateFormatSelector == kDateFormatNone && timeFormatSelector == kTimeFormatNone) { - stringOut.Truncate(); - return NS_OK; - } - - NS_ASSERTION(tmTime->tm_mon >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_mday >= 1, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_hour >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_min >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_sec >= 0, "tm is not set correctly"); - NS_ASSERTION(tmTime->tm_wday >= 0, "tm is not set correctly"); - - // Got the locale for the formatter: - CFLocaleRef formatterLocale; - if (!locale) { - formatterLocale = CFLocaleCopyCurrent(); - } else { - CFStringRef localeStr = CFStringCreateWithCharacters(nullptr, - reinterpret_cast(mLocale.get()), - mLocale.Length()); - formatterLocale = CFLocaleCreate(nullptr, localeStr); - CFRelease(localeStr); - } - - // Get the date style for the formatter: - CFDateFormatterStyle dateStyle; - switch (dateFormatSelector) { - case kDateFormatLong: - dateStyle = kCFDateFormatterLongStyle; - break; - case kDateFormatShort: - dateStyle = kCFDateFormatterShortStyle; - break; - case kDateFormatYearMonth: - case kDateFormatWeekday: - dateStyle = kCFDateFormatterNoStyle; // formats handled below - break; - case kDateFormatNone: - dateStyle = kCFDateFormatterNoStyle; - break; - default: - NS_ERROR("Unknown nsDateFormatSelector"); - res = NS_ERROR_FAILURE; - dateStyle = kCFDateFormatterNoStyle; - } - - // Get the time style for the formatter: - CFDateFormatterStyle timeStyle; - switch (timeFormatSelector) { - case kTimeFormatSeconds: - case kTimeFormatSecondsForce24Hour: // 24 hour part fixed below - timeStyle = kCFDateFormatterMediumStyle; - break; - case kTimeFormatNoSeconds: - case kTimeFormatNoSecondsForce24Hour: // 24 hour part fixed below - timeStyle = kCFDateFormatterShortStyle; - break; - case kTimeFormatNone: - timeStyle = kCFDateFormatterNoStyle; - break; - default: - NS_ERROR("Unknown nsTimeFormatSelector"); - res = NS_ERROR_FAILURE; - timeStyle = kCFDateFormatterNoStyle; - } - - // Create the formatter and fix up its formatting as necessary: - CFDateFormatterRef formatter = - CFDateFormatterCreate(nullptr, formatterLocale, dateStyle, timeStyle); - - CFRelease(formatterLocale); - - if (dateFormatSelector == kDateFormatYearMonth || - dateFormatSelector == kDateFormatWeekday) { - CFStringRef dateFormat = - dateFormatSelector == kDateFormatYearMonth ? CFSTR("yyyy/MM ") : CFSTR("EEE "); - - CFStringRef oldFormat = CFDateFormatterGetFormat(formatter); - CFMutableStringRef newFormat = CFStringCreateMutableCopy(nullptr, 0, oldFormat); - CFStringInsert(newFormat, 0, dateFormat); - CFDateFormatterSetFormat(formatter, newFormat); - CFRelease(newFormat); // note we don't own oldFormat - } - - if (timeFormatSelector == kTimeFormatSecondsForce24Hour || - timeFormatSelector == kTimeFormatNoSecondsForce24Hour) { - // Replace "h" with "H", and remove "a": - CFStringRef oldFormat = CFDateFormatterGetFormat(formatter); - CFMutableStringRef newFormat = CFStringCreateMutableCopy(nullptr, 0, oldFormat); - CFIndex replaceCount = CFStringFindAndReplace(newFormat, - CFSTR("h"), CFSTR("H"), - CFRangeMake(0, CFStringGetLength(newFormat)), - 0); - NS_ASSERTION(replaceCount <= 2, "Unexpected number of \"h\" occurrences"); - replaceCount = CFStringFindAndReplace(newFormat, - CFSTR("a"), CFSTR(""), - CFRangeMake(0, CFStringGetLength(newFormat)), - 0); - NS_ASSERTION(replaceCount <= 1, "Unexpected number of \"a\" occurrences"); - CFDateFormatterSetFormat(formatter, newFormat); - CFRelease(newFormat); // note we don't own oldFormat - } - - // Now get the formatted date: - CFGregorianDate date; - date.second = tmTime->tm_sec; - date.minute = tmTime->tm_min; - date.hour = tmTime->tm_hour; - date.day = tmTime->tm_mday; // Mac is 1-based, tm is 1-based - date.month = tmTime->tm_mon + 1; // Mac is 1-based, tm is 0-based - date.year = tmTime->tm_year + 1900; - - CFTimeZoneRef timeZone = CFTimeZoneCopySystem(); // tmTime is in local time - CFAbsoluteTime absTime = CFGregorianDateGetAbsoluteTime(date, timeZone); - CFRelease(timeZone); - - CFStringRef formattedDate = CFDateFormatterCreateStringWithAbsoluteTime(nullptr, - formatter, - absTime); - - CFIndex stringLen = CFStringGetLength(formattedDate); - - AutoTArray stringBuffer; - stringBuffer.SetLength(stringLen + 1); - CFStringGetCharacters(formattedDate, CFRangeMake(0, stringLen), stringBuffer.Elements()); - stringOut.Assign(reinterpret_cast(stringBuffer.Elements()), stringLen); - - CFRelease(formattedDate); - CFRelease(formatter); - - return res; -} - -// performs a locale sensitive date formatting operation on the PRTime parameter -nsresult nsDateTimeFormatMac::FormatPRTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRTime prTime, - nsAString& stringOut) -{ - PRExplodedTime explodedTime; - PR_ExplodeTime(prTime, PR_LocalTimeParameters, &explodedTime); - - return FormatPRExplodedTime(locale, dateFormatSelector, timeFormatSelector, &explodedTime, stringOut); -} - -// performs a locale sensitive date formatting operation on the PRExplodedTime parameter -nsresult nsDateTimeFormatMac::FormatPRExplodedTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRExplodedTime* explodedTime, - nsAString& stringOut) -{ - struct tm tmTime; - memset( &tmTime, 0, sizeof(tmTime) ); - - tmTime.tm_yday = explodedTime->tm_yday; - tmTime.tm_wday = explodedTime->tm_wday; - tmTime.tm_year = explodedTime->tm_year; - tmTime.tm_year -= 1900; - tmTime.tm_mon = explodedTime->tm_month; - tmTime.tm_mday = explodedTime->tm_mday; - tmTime.tm_hour = explodedTime->tm_hour; - tmTime.tm_min = explodedTime->tm_min; - tmTime.tm_sec = explodedTime->tm_sec; - - return FormatTMTime(locale, dateFormatSelector, timeFormatSelector, &tmTime, stringOut); -} - diff --git a/intl/locale/mac/nsDateTimeFormatMac.h b/intl/locale/mac/nsDateTimeFormatMac.h deleted file mode 100644 index dfdf703780..0000000000 --- a/intl/locale/mac/nsDateTimeFormatMac.h +++ /dev/null @@ -1,61 +0,0 @@ - -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifndef nsDateTimeFormatMac_h__ -#define nsDateTimeFormatMac_h__ - - -#include "nsCOMPtr.h" -#include "nsIDateTimeFormat.h" - - -class nsDateTimeFormatMac : public nsIDateTimeFormat { - -public: - NS_DECL_THREADSAFE_ISUPPORTS - - // performs a locale sensitive date formatting operation on the time_t parameter - NS_IMETHOD FormatTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const time_t timetTime, - nsAString& stringOut) override; - - // performs a locale sensitive date formatting operation on the struct tm parameter - NS_IMETHOD FormatTMTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const struct tm* tmTime, - nsAString& stringOut) override; - // performs a locale sensitive date formatting operation on the PRTime parameter - NS_IMETHOD FormatPRTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRTime prTime, - nsAString& stringOut) override; - - // performs a locale sensitive date formatting operation on the PRExplodedTime parameter - NS_IMETHOD FormatPRExplodedTime(nsILocale* locale, - const nsDateFormatSelector dateFormatSelector, - const nsTimeFormatSelector timeFormatSelector, - const PRExplodedTime* explodedTime, - nsAString& stringOut) override; - - nsDateTimeFormatMac() {} - -protected: - virtual ~nsDateTimeFormatMac() {} - -private: - // init this interface to a specified locale - NS_IMETHOD Initialize(nsILocale* locale); - - nsString mLocale; - nsString mAppLocale; - bool mUseDefaultLocale; -}; - -#endif /* nsDateTimeFormatMac_h__ */ diff --git a/intl/locale/mac/nsMacCharset.cpp b/intl/locale/mac/nsMacCharset.cpp deleted file mode 100644 index 956560fba8..0000000000 --- a/intl/locale/mac/nsMacCharset.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include "nsIPlatformCharset.h" -#include "nsCOMPtr.h" -#include "nsIServiceManager.h" -#include "nsReadableUtils.h" -#include "nsPlatformCharset.h" -#include "nsEncoderDecoderUtils.h" - -NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset) - -nsPlatformCharset::nsPlatformCharset() -{ -} -nsPlatformCharset::~nsPlatformCharset() -{ -} - -NS_IMETHODIMP -nsPlatformCharset::GetCharset(nsPlatformCharsetSel selector, nsACString& oResult) -{ - oResult.AssignLiteral("UTF-8"); - return NS_OK; -} - -NS_IMETHODIMP -nsPlatformCharset::GetDefaultCharsetForLocale(const nsAString& localeName, nsACString &oResult) -{ - oResult.AssignLiteral("UTF-8"); - return NS_OK; -} - -NS_IMETHODIMP -nsPlatformCharset::Init() -{ - return NS_OK; -} - -nsresult -nsPlatformCharset::MapToCharset(nsAString& inANSICodePage, nsACString& outCharset) -{ - return NS_OK; -} - -nsresult -nsPlatformCharset::InitGetCharset(nsACString &oString) -{ - return NS_OK; -} - -nsresult -nsPlatformCharset::VerifyCharset(nsCString &aCharset) -{ - return NS_OK; -} diff --git a/intl/locale/moz.build b/intl/locale/moz.build index 94a30873ba..4b3b3c0b88 100644 --- a/intl/locale/moz.build +++ b/intl/locale/moz.build @@ -9,8 +9,6 @@ toolkit = CONFIG['MOZ_WIDGET_TOOLKIT'] if toolkit == 'windows': DIRS += ['windows'] -elif toolkit == 'cocoa': - DIRS += ['mac'] else: DIRS += ['unix'] diff --git a/intl/lwbrk/moz.build b/intl/lwbrk/moz.build index da701be5e5..dc7c2df1a2 100644 --- a/intl/lwbrk/moz.build +++ b/intl/lwbrk/moz.build @@ -32,10 +32,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': SOURCES += [ 'nsUniscribeBreaker.cpp', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - UNIFIED_SOURCES += [ - 'nsCarbonBreaker.cpp', - ] else: SOURCES += [ 'nsRuleBreaker.cpp', diff --git a/intl/lwbrk/nsCarbonBreaker.cpp b/intl/lwbrk/nsCarbonBreaker.cpp deleted file mode 100644 index 1b37bc1298..0000000000 --- a/intl/lwbrk/nsCarbonBreaker.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include -#include "nsDebug.h" -#include "nscore.h" - -void -NS_GetComplexLineBreaks(const char16_t* aText, uint32_t aLength, - uint8_t* aBreakBefore) -{ - NS_ASSERTION(aText, "aText shouldn't be null"); - - memset(aBreakBefore, 0, aLength * sizeof(uint8_t)); - - CFStringRef str = ::CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, reinterpret_cast(aText), aLength, kCFAllocatorNull); - if (!str) { - return; - } - - CFStringTokenizerRef st = ::CFStringTokenizerCreate(kCFAllocatorDefault, str, - ::CFRangeMake(0, aLength), - kCFStringTokenizerUnitLineBreak, - nullptr); - if (!st) { - ::CFRelease(str); - return; - } - - CFStringTokenizerTokenType tt = ::CFStringTokenizerAdvanceToNextToken(st); - while (tt != kCFStringTokenizerTokenNone) { - CFRange r = ::CFStringTokenizerGetCurrentTokenRange(st); - if (r.location != 0) { // Ignore leading edge - aBreakBefore[r.location] = true; - } - tt = CFStringTokenizerAdvanceToNextToken(st); - } - - ::CFRelease(st); - ::CFRelease(str); -} diff --git a/js/xpconnect/shell/moz.build b/js/xpconnect/shell/moz.build index c1789fdc71..3361b7d810 100644 --- a/js/xpconnect/shell/moz.build +++ b/js/xpconnect/shell/moz.build @@ -14,11 +14,6 @@ SOURCES += [ 'xpcshell.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'xpcshellMacUtils.mm', - ] - include('/ipc/chromium/chromium-config.mozbuild') LOCAL_INCLUDES += [ diff --git a/js/xpconnect/shell/xpcshellMacUtils.h b/js/xpconnect/shell/xpcshellMacUtils.h deleted file mode 100644 index 2e6b5cb359..0000000000 --- a/js/xpconnect/shell/xpcshellMacUtils.h +++ /dev/null @@ -1,8 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// Functions to setup and release the Mac memory pool -void InitAutoreleasePool(); -void FinishAutoreleasePool(); diff --git a/js/xpconnect/shell/xpcshellMacUtils.mm b/js/xpconnect/shell/xpcshellMacUtils.mm deleted file mode 100644 index 61d6a9ea9a..0000000000 --- a/js/xpconnect/shell/xpcshellMacUtils.mm +++ /dev/null @@ -1,18 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include - -static NSAutoreleasePool *pool = NULL; - -void InitAutoreleasePool() -{ - pool = [[NSAutoreleasePool alloc] init]; -} - -void FinishAutoreleasePool() -{ - [pool release]; -} diff --git a/layout/build/moz.build b/layout/build/moz.build index d7996af8d9..3e76edc491 100644 --- a/layout/build/moz.build +++ b/layout/build/moz.build @@ -63,10 +63,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': LOCAL_INCLUDES += [ '/dom/system/windows', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/dom/system/mac', - ] elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: LOCAL_INCLUDES += [ '/widget/gtk', diff --git a/layout/reftests/reftest.list b/layout/reftests/reftest.list index 0ce1387547..c94b9524c8 100644 --- a/layout/reftests/reftest.list +++ b/layout/reftests/reftest.list @@ -350,9 +350,6 @@ include text-svgglyphs/reftest.list # text-transform/ include text-transform/reftest.list -# theme (osx) -include ../../toolkit/themes/osx/reftests/reftest.list - include ../../toolkit/content/tests/reftests/reftest.list # -moz-transform/ diff --git a/mailnews/base/ispdata/moz.build b/mailnews/base/ispdata/moz.build index 7de5dc2e32..363c2ba0c2 100644 --- a/mailnews/base/ispdata/moz.build +++ b/mailnews/base/ispdata/moz.build @@ -2,6 +2,4 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -# Disable movemail for Thunderbird on OSX -if CONFIG['MOZ_MOVEMAIL'] and not (CONFIG['MOZ_THUNDERBIRD'] and CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa'): - FINAL_TARGET_FILES.isp += ['movemail.rdf'] +# Stub. This was configuring special snowflake OSX stuff. \ No newline at end of file diff --git a/mailnews/base/src/moz.build b/mailnews/base/src/moz.build index 91bf235c34..65853daf96 100644 --- a/mailnews/base/src/moz.build +++ b/mailnews/base/src/moz.build @@ -61,8 +61,6 @@ if CONFIG['OS_ARCH'] == 'WINNT': if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'qt'): SOURCES += ['nsMessengerUnixIntegration.cpp'] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += ['nsMessengerOSXIntegration.mm'] EXTRA_COMPONENTS += [ 'folderLookupService.js', diff --git a/mailnews/base/src/nsMessengerOSXIntegration.h b/mailnews/base/src/nsMessengerOSXIntegration.h deleted file mode 100644 index 91f42f2a2a..0000000000 --- a/mailnews/base/src/nsMessengerOSXIntegration.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __nsMessengerOSXIntegration_h -#define __nsMessengerOSXIntegration_h - -#include "nsIMessengerOSIntegration.h" -#include "nsIFolderListener.h" -#include "nsIAtom.h" -#include "nsITimer.h" -#include "nsCOMPtr.h" -#include "nsStringGlue.h" -#include "nsIObserver.h" -#include "nsIAlertsService.h" -#include "mozINewMailListener.h" - -#define NS_MESSENGEROSXINTEGRATION_CID \ - {0xaa83266, 0x4225, 0x4c4b, \ - {0x93, 0xf8, 0x94, 0xb1, 0x82, 0x58, 0x6f, 0x93}} - -class nsIStringBundle; - -class nsMessengerOSXIntegration : public nsIMessengerOSIntegration, - public nsIFolderListener, - public nsIObserver, - public mozINewMailListener -{ -public: - nsMessengerOSXIntegration(); - virtual nsresult Init(); - - NS_DECL_ISUPPORTS - NS_DECL_NSIMESSENGEROSINTEGRATION - NS_DECL_NSIFOLDERLISTENER - NS_DECL_NSIOBSERVER - NS_DECL_MOZINEWMAILLISTENER - -private: - virtual ~nsMessengerOSXIntegration(); - - nsCOMPtr mBiffStateAtom; - nsCOMPtr mNewMailReceivedAtom; - nsresult ShowAlertMessage(const nsAString& aAlertTitle, const nsAString& aAlertText, const nsACString& aFolderURI); - nsresult OnAlertFinished(); - nsresult OnAlertClicked(const char16_t * aAlertCookie); -#ifdef MOZ_SUITE - nsresult OnAlertClickedSimple(); -#endif - nsresult GetStringBundle(nsIStringBundle **aBundle); - void FillToolTipInfo(nsIMsgFolder *aFolder, int32_t aNewCount); - nsresult GetFirstFolderWithNewMail(nsIMsgFolder* aFolder, nsCString& aFolderURI); - nsresult BadgeDockIcon(); - nsresult RestoreDockIcon(); - nsresult BounceDockIcon(); - nsresult GetNewMailAuthors(nsIMsgFolder* aFolder, nsString& aAuthors, int32_t aNewCount, int32_t* aNotDisplayed); - - int32_t mUnreadTotal; - int32_t mUnreadChat; -}; - -#endif // __nsMessengerOSXIntegration_h diff --git a/mailnews/base/src/nsMessengerOSXIntegration.mm b/mailnews/base/src/nsMessengerOSXIntegration.mm deleted file mode 100644 index a38716e179..0000000000 --- a/mailnews/base/src/nsMessengerOSXIntegration.mm +++ /dev/null @@ -1,700 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nscore.h" -#include "nsMsgUtils.h" -#include "nsArrayUtils.h" -#include "nsMessengerOSXIntegration.h" -#include "nsIMsgMailSession.h" -#include "nsIMsgIncomingServer.h" -#include "nsIMsgIdentity.h" -#include "nsIMsgAccount.h" -#include "nsIMsgFolder.h" -#include "nsCOMPtr.h" -#include "nsMsgBaseCID.h" -#include "nsMsgFolderFlags.h" -#include "nsDirectoryServiceDefs.h" -#include "nsIDirectoryService.h" -#include "MailNewsTypes.h" -#include "nsIWindowMediator.h" -#include "nsIDOMChromeWindow.h" -#include "mozIDOMWindow.h" -#include "nsPIDOMWindow.h" -#include "nsIDocShell.h" -#include "nsIBaseWindow.h" -#include "nsIWidget.h" -#include "nsIObserverService.h" -#include "nsIPrefService.h" -#include "nsIPrefBranch.h" -#include "nsIMessengerWindowService.h" -#include "prprf.h" -#include "nsIAlertsService.h" -#include "nsIStringBundle.h" -#include "nsToolkitCompsCID.h" -#include "nsIMsgDatabase.h" -#include "nsIMsgHdr.h" -#include "nsISupportsPrimitives.h" -#include "nsIWindowWatcher.h" -#include "nsMsgLocalCID.h" -#include "nsIMsgMailNewsUrl.h" -#include "nsIMsgWindow.h" -#include "nsIMsgAccountManager.h" -#include "nsIMessenger.h" -#include "nsObjCExceptions.h" -#include "nsComponentManagerUtils.h" -#include "nsServiceManagerUtils.h" -#include "mozINewMailNotificationService.h" -#include "mozilla/mailnews/MimeHeaderParser.h" - -#include -#import - -#define kBiffAnimateDockIconPref "mail.biff.animate_dock_icon" -#define kMaxDisplayCount 10 - -using namespace mozilla::mailnews; - -// HACK: Limitations in Focus/SetFocus on Mac (see bug 465446) -nsresult FocusAppNative() -{ - ProcessSerialNumber psn; - - if (::GetCurrentProcess(&psn) != 0) - return NS_ERROR_FAILURE; - - if (::SetFrontProcess(&psn) != 0) - return NS_ERROR_FAILURE; - - return NS_OK; -} - -static void openMailWindow(const nsCString& aUri) -{ - nsresult rv; - nsCOMPtr mailSession ( do_GetService(NS_MSGMAILSESSION_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - nsCOMPtr topMostMsgWindow; - rv = mailSession->GetTopmostMsgWindow(getter_AddRefs(topMostMsgWindow)); - if (topMostMsgWindow) - { - if (!aUri.IsEmpty()) - { - nsCOMPtr msgUri(do_CreateInstance(NS_MAILBOXURL_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - rv = msgUri->SetSpec(aUri); - if (NS_FAILED(rv)) - return; - - bool isMessageUri = false; - msgUri->GetIsMessageUri(&isMessageUri); - if (isMessageUri) - { - nsCOMPtr wwatch(do_GetService(NS_WINDOWWATCHER_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - // SeaMonkey only supports message uris, whereas Thunderbird only - // supports message headers. This should be simplified/removed when - // bug 507593 is implemented. -#ifdef MOZ_SUITE - nsCOMPtr newWindow; - wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul", - "_blank", "all,chrome,dialog=no,status,toolbar", msgUri, - getter_AddRefs(newWindow)); -#else - nsCOMPtr messenger(do_CreateInstance(NS_MESSENGER_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - return; - - nsCOMPtr msgHdr; - messenger->MsgHdrFromURI(aUri, getter_AddRefs(msgHdr)); - if (msgHdr) - { - nsCOMPtr newWindow; - wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul", - "_blank", "all,chrome,dialog=no,status,toolbar", msgHdr, - getter_AddRefs(newWindow)); - } -#endif - } - else - { - nsCOMPtr windowCommands; - topMostMsgWindow->GetWindowCommands(getter_AddRefs(windowCommands)); - if (windowCommands) - windowCommands->SelectFolder(aUri); - } - } - - FocusAppNative(); - nsCOMPtr domWindow; - topMostMsgWindow->GetDomWindow(getter_AddRefs(domWindow)); - if (domWindow) { - nsCOMPtr privateWindow = nsPIDOMWindowOuter::From(domWindow); - privateWindow->Focus(); - } - } - else - { - // the user doesn't have a mail window open already so open one for them... - nsCOMPtr messengerWindowService = - do_GetService(NS_MESSENGERWINDOWSERVICE_CONTRACTID); - // if we want to preselect the first account with new mail, - // here is where we would try to generate a uri to pass in - // (and add code to the messenger window service to make that work) - if (messengerWindowService) - messengerWindowService->OpenMessengerWindowWithUri( - "mail:3pane", aUri.get(), nsMsgKey_None); - } -} - -nsMessengerOSXIntegration::nsMessengerOSXIntegration() -{ - mBiffStateAtom = MsgGetAtom("BiffState"); - mNewMailReceivedAtom = MsgGetAtom("NewMailReceived"); - mUnreadTotal = 0; -} - -nsMessengerOSXIntegration::~nsMessengerOSXIntegration() -{ - RestoreDockIcon(); -} - -NS_IMPL_ADDREF(nsMessengerOSXIntegration) -NS_IMPL_RELEASE(nsMessengerOSXIntegration) - -NS_INTERFACE_MAP_BEGIN(nsMessengerOSXIntegration) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIMessengerOSIntegration) - NS_INTERFACE_MAP_ENTRY(nsIMessengerOSIntegration) - NS_INTERFACE_MAP_ENTRY(nsIFolderListener) - NS_INTERFACE_MAP_ENTRY(nsIObserver) - NS_INTERFACE_MAP_ENTRY(mozINewMailListener) -NS_INTERFACE_MAP_END - - -nsresult -nsMessengerOSXIntegration::Init() -{ - nsresult rv; - nsCOMPtr observerService = do_GetService("@mozilla.org/observer-service;1", &rv); - NS_ENSURE_SUCCESS(rv, rv); - return observerService->AddObserver(this, "mail-startup-done", false); -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemPropertyChanged(nsIMsgFolder *, nsIAtom *, char const *, char const *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemUnicharPropertyChanged(nsIMsgFolder *, nsIAtom *, const char16_t *, const char16_t *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemRemoved(nsIMsgFolder *, nsISupports *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData) -{ - if (!strcmp(aTopic, "alertfinished")) - return OnAlertFinished(); - - if (!strcmp(aTopic, "alertclickcallback")) - return OnAlertClicked(aData); - -#ifdef MOZ_SUITE - // SeaMonkey does most of the GUI work in JS code when clicking on a mail - // notification, so it needs an extra function here - if (!strcmp(aTopic, "alertclicksimplecallback")) - return OnAlertClickedSimple(); -#endif - - if (!strcmp(aTopic, "mail-startup-done")) { - nsresult rv; - nsCOMPtr observerService = do_GetService("@mozilla.org/observer-service;1", &rv); - if (NS_SUCCEEDED(rv)) { - observerService->RemoveObserver(this, "mail-startup-done"); - - nsCOMPtr pref(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); - } - - // Register with the new mail service for changes to the unread message count - nsCOMPtr newmail - = do_GetService(MOZ_NEWMAILNOTIFICATIONSERVICE_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); // This should really be an assert with a helpful message - rv = newmail->AddListener(this, mozINewMailNotificationService::count); - NS_ENSURE_SUCCESS(rv, rv); // This should really be an assert with a helpful message - - // Get the initial unread count. Ignore return value; if code above didn't fail, this won't - rv = newmail->GetMessageCount(&mUnreadTotal); - BadgeDockIcon(); - - // register with the mail sesson for folder events - // we care about new count, biff status - nsCOMPtr mailSession = do_GetService(NS_MSGMAILSESSION_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - return mailSession->AddFolderListener(this, nsIFolderListener::boolPropertyChanged | nsIFolderListener::intPropertyChanged); - } - - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::GetStringBundle(nsIStringBundle **aBundle) -{ - NS_ENSURE_ARG_POINTER(aBundle); - nsresult rv; - nsCOMPtr bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv); - nsCOMPtr bundle; - if (bundleService && NS_SUCCEEDED(rv)) - bundleService->CreateBundle("chrome://messenger/locale/messenger.properties", getter_AddRefs(bundle)); - bundle.swap(*aBundle); - return rv; -} - -void -nsMessengerOSXIntegration::FillToolTipInfo(nsIMsgFolder *aFolder, int32_t aNewCount) -{ - if (aFolder) - { - nsString authors; - int32_t numNotDisplayed; - nsresult rv = GetNewMailAuthors(aFolder, authors, aNewCount, &numNotDisplayed); - - // If all senders are vetoed, the authors string will be empty. - if (NS_FAILED(rv) || authors.IsEmpty()) - return; - - // If this isn't the root folder, get it so we can report for it. - // GetRootFolder always returns the server's root, so calling on the root itself is fine. - nsCOMPtr rootFolder; - aFolder->GetRootFolder(getter_AddRefs(rootFolder)); - if (!rootFolder) - return; - - nsString accountName; - rootFolder->GetPrettiestName(accountName); - - nsCOMPtr bundle; - GetStringBundle(getter_AddRefs(bundle)); - if (bundle) - { - nsAutoString numNewMsgsText; - numNewMsgsText.AppendInt(aNewCount); - nsString finalText; - nsCString uri; - aFolder->GetURI(uri); - - if (numNotDisplayed > 0) - { - nsAutoString numNotDisplayedText; - numNotDisplayedText.AppendInt(numNotDisplayed); - const char16_t *formatStrings[3] = { numNewMsgsText.get(), authors.get(), numNotDisplayedText.get() }; - bundle->FormatStringFromName(u"macBiffNotification_messages_extra", - formatStrings, - 3, - getter_Copies(finalText)); - } - else - { - const char16_t *formatStrings[2] = { numNewMsgsText.get(), authors.get() }; - - if (aNewCount == 1) - { - bundle->FormatStringFromName(u"macBiffNotification_message", - formatStrings, - 2, - getter_Copies(finalText)); - // Since there is only 1 message, use the most recent mail's URI instead of the folder's - nsCOMPtr db; - rv = aFolder->GetMsgDatabase(getter_AddRefs(db)); - if (NS_SUCCEEDED(rv) && db) - { - uint32_t numNewKeys; - uint32_t *newMessageKeys; - rv = db->GetNewList(&numNewKeys, &newMessageKeys); - if (NS_SUCCEEDED(rv)) - { - nsCOMPtr hdr; - rv = db->GetMsgHdrForKey(newMessageKeys[numNewKeys - 1], - getter_AddRefs(hdr)); - if (NS_SUCCEEDED(rv) && hdr) - aFolder->GetUriForMsg(hdr, uri); - } - NS_Free(newMessageKeys); - } - } - else - bundle->FormatStringFromName(u"macBiffNotification_messages", - formatStrings, - 2, - getter_Copies(finalText)); - } - ShowAlertMessage(accountName, finalText, uri); - } // if we got a bundle - } // if we got a folder -} - -nsresult -nsMessengerOSXIntegration::ShowAlertMessage(const nsAString& aAlertTitle, - const nsAString& aAlertText, - const nsACString& aFolderURI) -{ - nsresult rv; - - nsCOMPtr alertsService (do_GetService(NS_ALERTSERVICE_CONTRACTID, &rv)); - // If we have an nsIAlertsService implementation, use it: - if (NS_SUCCEEDED(rv)) - { - alertsService->ShowAlertNotification(EmptyString(), - aAlertTitle, aAlertText, true, - NS_ConvertASCIItoUTF16(aFolderURI), - this, EmptyString(), - NS_LITERAL_STRING("auto"), - EmptyString(), EmptyString(), - nullptr, - false, - false); - } - - BounceDockIcon(); - - if (NS_FAILED(rv)) - OnAlertFinished(); - - return rv; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemIntPropertyChanged(nsIMsgFolder *aFolder, - nsIAtom *aProperty, - int64_t aOldValue, - int64_t aNewValue) -{ - // if we got new mail show an alert - if (aNewValue == nsIMsgFolder::nsMsgBiffState_NewMail) - { - bool performingBiff = false; - nsCOMPtr server; - aFolder->GetServer(getter_AddRefs(server)); - if (server) - server->GetPerformingBiff(&performingBiff); - if (!performingBiff) - return NS_OK; // kick out right now... - - // Biff happens for the root folder, but we want info for the child with new mail - nsCString folderUri; - GetFirstFolderWithNewMail(aFolder, folderUri); - nsCOMPtr childFolder; - nsresult rv = aFolder->GetChildWithURI(folderUri, true, true, - getter_AddRefs(childFolder)); - if (NS_FAILED(rv) || !childFolder) - return NS_ERROR_FAILURE; - - int32_t numNewMessages = 0; - childFolder->GetNumNewMessages(true, &numNewMessages); - FillToolTipInfo(childFolder, numNewMessages); - } - else if (mNewMailReceivedAtom == aProperty) - { - FillToolTipInfo(aFolder, aNewValue); - } - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::OnAlertClicked(const char16_t* aAlertCookie) -{ - openMailWindow(NS_ConvertUTF16toUTF8(aAlertCookie)); - return NS_OK; -} - -#ifdef MOZ_SUITE -nsresult -nsMessengerOSXIntegration::OnAlertClickedSimple() -{ - // SeaMonkey only function; only focus the app here, rest of the work will - // be done in suite/mailnews/mailWidgets.xml - FocusAppNative(); - return NS_OK; -} -#endif - -nsresult -nsMessengerOSXIntegration::OnAlertFinished() -{ - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::BounceDockIcon() -{ - nsresult rv; - nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - bool bounceDockIcon = false; - rv = prefBranch->GetBoolPref(kBiffAnimateDockIconPref, &bounceDockIcon); - NS_ENSURE_SUCCESS(rv, rv); - - if (!bounceDockIcon) - return NS_OK; - - nsCOMPtr mediator(do_GetService(NS_WINDOWMEDIATOR_CONTRACTID)); - if (mediator) - { - nsCOMPtr domWindow; - mediator->GetMostRecentWindow(u"mail:3pane", getter_AddRefs(domWindow)); - if (domWindow) - { - nsCOMPtr chromeWindow(do_QueryInterface(domWindow)); - chromeWindow->GetAttention(); - } - } - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::RestoreDockIcon() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - id tile = [[NSApplication sharedApplication] dockTile]; - [tile setBadgeLabel: nil]; - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -nsresult -nsMessengerOSXIntegration::BadgeDockIcon() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - int32_t unreadCount = mUnreadTotal; - // If count is less than one, we should restore the original dock icon. - if (unreadCount < 1) - { - RestoreDockIcon(); - return NS_OK; - } - - // Draw the number, first giving extensions a chance to modify. - // Extensions might wish to transform "1000" into "100+" or some - // other short string. Getting back the empty string will cause - // nothing to be drawn and us to return early. - nsresult rv; - nsCOMPtr os - (do_GetService("@mozilla.org/observer-service;1", &rv)); - if (NS_FAILED(rv)) - { - RestoreDockIcon(); - return rv; - } - - nsCOMPtr str - (do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID, &rv)); - if (NS_FAILED(rv)) - { - RestoreDockIcon(); - return rv; - } - - nsAutoString total; - total.AppendInt(unreadCount); - str->SetData(total); - os->NotifyObservers(str, "before-unread-count-display", - total.get()); - nsAutoString badgeString; - str->GetData(badgeString); - if (badgeString.IsEmpty()) - { - RestoreDockIcon(); - return NS_OK; - } - - id tile = [[NSApplication sharedApplication] dockTile]; - [tile setBadgeLabel:[NSString stringWithFormat:@"%S", (const unichar*)badgeString.get()]]; - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldFlag, uint32_t newFlag) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemAdded(nsIMsgFolder *, nsISupports *) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemBoolPropertyChanged(nsIMsgFolder *aItem, - nsIAtom *aProperty, - bool aOldValue, - bool aNewValue) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsMessengerOSXIntegration::OnItemEvent(nsIMsgFolder *, nsIAtom *) -{ - return NS_OK; -} - -nsresult -nsMessengerOSXIntegration::GetNewMailAuthors(nsIMsgFolder* aFolder, - nsString& aAuthors, - int32_t aNewCount, - int32_t* aNotDisplayed) -{ - // Get a list of names or email addresses for the folder's authors - // with new mail. Note that we only process the most recent "new" - // mail (aNewCount), working from most recently added. Duplicates - // are removed, and names are displayed to a set limit - // (kMaxDisplayCount) with the remaining count being returned in - // aNotDisplayed. Extension developers can listen for - // "newmail-notification-requested" and then make a decision about - // including a given author or not. As a result, it is possible that - // the resulting length of aAuthors will be 0. - nsCOMPtr db; - nsresult rv = aFolder->GetMsgDatabase(getter_AddRefs(db)); - uint32_t numNewKeys = 0; - if (NS_SUCCEEDED(rv) && db) - { - nsCOMPtr os = - do_GetService("@mozilla.org/observer-service;1", &rv); - NS_ENSURE_SUCCESS(rv, rv); - - // Get proper l10n list separator -- ", " in English - nsCOMPtr bundle; - GetStringBundle(getter_AddRefs(bundle)); - if (!bundle) - return NS_ERROR_FAILURE; - - uint32_t *newMessageKeys; - rv = db->GetNewList(&numNewKeys, &newMessageKeys); - if (NS_SUCCEEDED(rv)) - { - nsString listSeparator; - bundle->GetStringFromName(u"macBiffNotification_separator", getter_Copies(listSeparator)); - - int32_t displayed = 0; - for (int32_t i = numNewKeys - 1; i >= 0; i--, aNewCount--) - { - if (0 == aNewCount || displayed == kMaxDisplayCount) - break; - - nsCOMPtr hdr; - rv = db->GetMsgHdrForKey(newMessageKeys[i], - getter_AddRefs(hdr)); - if (NS_SUCCEEDED(rv) && hdr) - { - nsString author; - rv = hdr->GetMime2DecodedAuthor(author); - if (NS_FAILED(rv)) - continue; - - nsString name; - ExtractName(DecodedHeader(author), name); - - // Give extensions a chance to suppress notifications for this author - nsCOMPtr notify = - do_CreateInstance(NS_SUPPORTS_PRBOOL_CONTRACTID); - - notify->SetData(true); - os->NotifyObservers(notify, "newmail-notification-requested", - author.get()); - - bool includeSender; - notify->GetData(&includeSender); - - // Don't add unwanted or duplicate names - if (includeSender && aAuthors.Find(name, true) == -1) - { - if (displayed > 0) - aAuthors.Append(listSeparator); - aAuthors.Append(name); - displayed++; - } - } - } - } - NS_Free(newMessageKeys); - } - *aNotDisplayed = aNewCount; - return rv; -} - -nsresult -nsMessengerOSXIntegration::GetFirstFolderWithNewMail(nsIMsgFolder* aFolder, nsCString& aFolderURI) -{ - // Find the subfolder in aFolder with new mail and return the folderURI - if (aFolder) - { - nsCOMPtr msgFolder; - // enumerate over the folders under this root folder till we find one with new mail.... - nsCOMPtr allFolders; - nsresult rv = aFolder->GetDescendants(getter_AddRefs(allFolders)); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr enumerator; - rv = allFolders->Enumerate(getter_AddRefs(enumerator)); - if (NS_SUCCEEDED(rv) && enumerator) - { - nsCOMPtr supports; - int32_t numNewMessages = 0; - bool hasMore = false; - while (NS_SUCCEEDED(enumerator->HasMoreElements(&hasMore)) && hasMore) - { - rv = enumerator->GetNext(getter_AddRefs(supports)); - if (NS_SUCCEEDED(rv) && supports) - { - msgFolder = do_QueryInterface(supports, &rv); - if (msgFolder) - { - numNewMessages = 0; - msgFolder->GetNumNewMessages(false, &numNewMessages); - if (numNewMessages) - break; // kick out of the while loop - } - } // if we have a folder - } // if we have more potential folders to enumerate - } // if enumerator - - if (msgFolder) - msgFolder->GetURI(aFolderURI); - } - - return NS_OK; -} - -/* - * Method implementations for mozINewMailListener - */ -NS_IMETHODIMP -nsMessengerOSXIntegration::OnCountChanged(uint32_t count) -{ - mUnreadTotal = count; - BadgeDockIcon(); - return NS_OK; -} diff --git a/mailnews/build/moz.build b/mailnews/build/moz.build index 9620e8f3d4..9561fd33d8 100644 --- a/mailnews/build/moz.build +++ b/mailnews/build/moz.build @@ -35,10 +35,6 @@ if CONFIG['OS_ARCH'] == 'WINNT': else: OS_LIBS += CONFIG['MOZ_ZLIB_LIBS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - OS_LIBS += CONFIG['TK_LIBS'] - OS_LIBS += ['-framework Cocoa'] - LOCAL_INCLUDES += [ '/mailnews/addrbook/src', '/mailnews/base/search/src', diff --git a/mailnews/compose/src/moz.build b/mailnews/compose/src/moz.build index dcb9960a66..831a0340f4 100644 --- a/mailnews/compose/src/moz.build +++ b/mailnews/compose/src/moz.build @@ -35,16 +35,6 @@ SOURCES += [ 'nsURLFetcher.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'nsMsgAppleDoubleEncode.cpp', - 'nsMsgAppleEncode.cpp', - ] - EXPORTS += [ - 'nsMsgAppleCodes.h', - 'nsMsgAppleDouble.h', - ] - EXTRA_COMPONENTS += [ 'nsSMTPProtocolHandler.js', 'nsSMTPProtocolHandler.manifest', diff --git a/mailnews/compose/src/nsMsgAppleCodes.h b/mailnews/compose/src/nsMsgAppleCodes.h deleted file mode 100644 index d8ca2f327c..0000000000 --- a/mailnews/compose/src/nsMsgAppleCodes.h +++ /dev/null @@ -1,106 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* -** AD_Codes.h -** -** --------------- -** -** Head file for Apple Decode/Encode essential codes. -** -** -*/ - -#ifndef ad_codes_h -#define ad_codes_h - -/* -** applefile definitions used -*/ -#if PRAGMA_STRUCT_ALIGN - #pragma options align=mac68k -#endif - -#define APPLESINGLE_MAGIC 0x00051600L -#define APPLEDOUBLE_MAGIC 0x00051607L -#define VERSION 0x00020000 - -#define NUM_ENTRIES 6 - -#define ENT_DFORK 1L -#define ENT_RFORK 2L -#define ENT_NAME 3L -#define ENT_COMMENT 4L -#define ENT_DATES 8L -#define ENT_FINFO 9L -#define CONVERT_TIME 1265437696L - -/* -** data type used in the encoder/decoder. -*/ -typedef struct ap_header -{ - int32_t magic; - int32_t version; - char fill[16]; - int16_t entries; - -} ap_header; - -typedef struct ap_entry -{ - int32_t id; - int32_t offset; - int32_t length; - -} ap_entry; - -typedef struct ap_dates -{ - int32_t create, modify, backup, access; - -} ap_dates; - -typedef struct myFInfo /* the mac FInfo structure for the cross platform. */ -{ - int32_t fdType, fdCreator; - int16_t fdFlags; - int32_t fdLocation; /* it really should be a pointer, but just a place-holder */ - int16_t fdFldr; - -} myFInfo; - -PR_BEGIN_EXTERN_C -/* -** string utils. -*/ -int write_stream(appledouble_encode_object *p_ap_encode_obj, const char *s,int len); - -int fill_apple_mime_header(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_file_infor(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_header(appledouble_encode_object* p_ap_encode_obj, bool firstTime); -int ap_encode_data( appledouble_encode_object* p_ap_encode_obj, bool firstTime); - -/* -** the prototypes for the ap_decoder. -*/ -int fetch_a_line(appledouble_decode_object* p_ap_decode_obj, char *buff); -int ParseFileHeader(appledouble_decode_object* p_ap_decode_obj); -int ap_seek_part_start(appledouble_decode_object* p_ap_decode_obj); -void parse_param(char *p, char **param, char**define, char **np); -int ap_seek_to_boundary(appledouble_decode_object* p_ap_decode_obj, bool firstime); -int ap_parse_header(appledouble_decode_object* p_ap_decode_obj,bool firstime); -int ap_decode_file_infor(appledouble_decode_object* p_ap_decode_obj); -int ap_decode_process_header(appledouble_decode_object* p_ap_decode_obj, bool firstime); -int ap_decode_process_data( appledouble_decode_object* p_ap_decode_obj, bool firstime); - -PR_END_EXTERN_C - -#if PRAGMA_STRUCT_ALIGN - #pragma options align=reset -#endif - -#endif /* ad_codes_h */ diff --git a/mailnews/compose/src/nsMsgAppleDouble.h b/mailnews/compose/src/nsMsgAppleDouble.h deleted file mode 100644 index f4ae934add..0000000000 --- a/mailnews/compose/src/nsMsgAppleDouble.h +++ /dev/null @@ -1,207 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* -* AppleDouble.h -* ------------- -* -* The header file for a stream based apple single/double encodor/decodor. -* -* 2aug95 mym -* -*/ - - -#ifndef AppleDouble_h -#define AppleDouble_h - -#include "msgCore.h" -#include "nsComposeStrings.h" -#include "nsIOutputStream.h" -#include "nsCOMPtr.h" - -#include - -#define NOERR 0 -#define errDone 1 - /* Done with current operation. */ -#define errEOB 2 - /* End of a buffer. */ -#define errEOP 3 - /* End of a Part. */ - - -#define errFileOpen NS_ERROR_GET_CODE(NS_MSG_UNABLE_TO_OPEN_TMP_FILE) -#define errFileWrite -202 /*Error writing temporary file.*/ -#define errUsrCancel -2 /*MK_INTERRUPTED */ -#define errDecoding -1 - -/* -** The envirment block data type. -*/ -enum -{ - kInit, - kDoingHeaderPortion, - kDoneHeaderPortion, - kDoingDataPortion, - kDoneDataPortion -}; - -typedef struct _appledouble_encode_object -{ - char fname[256]; - FSIORefNum fileId; /* the id for the open file (data/resource fork) */ - - int state; - int text_file_type; /* if the file has a text file type with it. */ - char *boundary; /* the boundary string. */ - - int status; /* the error code if anyerror happens. */ - char b_overflow[200]; - int s_overflow; - - int state64; /* the left over state of base64 enocding */ - int ct; /* the character count of base64 encoding */ - int c1, c2; /* the left of the last base64 encoding */ - - char *outbuff; /* the outbuff by the caller. */ - int s_outbuff; /* the size of the buffer. */ - int pos_outbuff; /* the offset in the current buffer. */ - -} appledouble_encode_object; - -/* The possible content transfer encodings */ - -enum -{ - kEncodeNone, - kEncodeQP, - kEncodeBase64, - kEncodeUU -}; - -enum -{ - kGeneralMine, - kAppleDouble, - kAppleSingle -}; - -enum -{ - kInline, - kDontCare -}; - -enum -{ - kHeaderPortion, - kDataPortion -}; - -/* the decode states. */ -enum -{ - kBeginParseHeader = 3, - kParsingHeader, - kBeginSeekBoundary, - kSeekingBoundary, - kBeginHeaderPortion, - kProcessingHeaderPortion, - kBeginDataPortion, - kProcessingDataPortion, - kFinishing -}; - -/* uuencode states */ -enum -{ - kWaitingForBegin = (int) 0, - kBegin, - kMainBody, - kEnd -}; - -typedef struct _appledouble_decode_object -{ - int is_binary; - int is_apple_single; /* if the object encoded is in apple single */ - int write_as_binhex; - - int messagetype; - char* boundary0; /* the boundary for the enclosure. */ - int deposition; /* the deposition. */ - int encoding; /* the encoding method. */ - int which_part; - - char fname[256]; - // nsIOFileStream *fileSpec; /* the stream for data fork work. */ - - int state; - - int rksize; /* the resource fork size count. */ - int dksize; /* the data fork size count. */ - - int status; /* the error code if anyerror happens. */ - char b_leftover[256]; - int s_leftover; - - int encode; /* the encode type of the message. */ - int state64; /* the left over state of base64 enocding */ - int left; /* the character count of base64 encoding */ - int c[4]; /* the left of the last base64 encoding */ - int uu_starts_line; /* is decoder at the start of a line? (uuencode) */ - int uu_state; /* state w/r/t the uuencode body */ - int uu_bytes_written; /* bytes written from the current tuple (uuencode) */ - int uu_line_bytes; /* encoded bytes remaining in the current line (uuencode) */ - - char *inbuff; /* the outbuff by the caller. */ - int s_inbuff; /* the size of the buffer. */ - int pos_inbuff; /* the offset in the current buffer. */ - - - nsCOMPtr tmpFile; /* the temp file to hold the decode data fork */ - /* when doing the binhex exporting. */ - nsCOMPtr tmpFileStream; /* The output File Stream */ - int32_t data_size; /* the size of the data in the tmp file. */ - -} appledouble_decode_object; - - -/* -** The protypes. -*/ - -PR_BEGIN_EXTERN_C - -int ap_encode_init(appledouble_encode_object *p_ap_encode_obj, - const char* fname, - char* separator); - -int ap_encode_next(appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32_t buff_size, - int32_t* real_size); - -int ap_encode_end(appledouble_encode_object* p_ap_encode_obj, - bool is_aborting); - -int ap_decode_init(appledouble_decode_object* p_ap_decode_obj, - bool is_apple_single, - bool write_as_bin_hex, - void *closure); - -int ap_decode_next(appledouble_decode_object* p_ap_decode_obj, - char *in_buff, - int32_t buff_size); - -int ap_decode_end(appledouble_decode_object* p_ap_decode_obj, - bool is_aborting); - -PR_END_EXTERN_C - -#endif diff --git a/mailnews/compose/src/nsMsgAppleDoubleEncode.cpp b/mailnews/compose/src/nsMsgAppleDoubleEncode.cpp deleted file mode 100644 index 4d71781233..0000000000 --- a/mailnews/compose/src/nsMsgAppleDoubleEncode.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* -* -* apple-double.c -* -------------- -* -* The codes to do apple double encoding/decoding. -* -* 02aug95 mym created. -* -*/ -#include "nsID.h" -#include "nscore.h" -#include "nsStringGlue.h" -#include "nsMsgAppleDouble.h" -#include "nsMsgAppleCodes.h" -#include "nsMsgCompUtils.h" -#include "nsCExternalHandlerService.h" -#include "nsIMIMEService.h" -#include "nsMimeTypes.h" -#include "prmem.h" -#include "nsNetUtil.h" - - -void -MacGetFileType(nsIFile *fs, - bool *useDefault, - char **fileType, - char **encoding) -{ - if ((fs == NULL) || (fileType == NULL) || (encoding == NULL)) - return; - - bool exists = false; - fs->Exists(&exists); - if (!exists) - return; - - *useDefault = TRUE; - *fileType = NULL; - *encoding = NULL; - - nsCOMPtr macFile = do_QueryInterface(fs); - FSRef fsRef; - FSCatalogInfo catalogInfo; - OSErr err = errFileOpen; - if (NS_SUCCEEDED(macFile->GetFSRef(&fsRef))) - err = ::FSGetCatalogInfo(&fsRef, kFSCatInfoFinderInfo, &catalogInfo, nullptr, nullptr, nullptr); - - if ( (err != noErr) || (((FileInfo*)(&catalogInfo.finderInfo))->fileType == 'TEXT') ) - *fileType = strdup(APPLICATION_OCTET_STREAM); - else - { - // At this point, we should call the mime service and - // see what we can find out? - nsresult rv; - nsCOMPtr tURI; - if (NS_SUCCEEDED(NS_NewFileURI(getter_AddRefs(tURI), fs)) && tURI) - { - nsCOMPtr mimeFinder (do_GetService(NS_MIMESERVICE_CONTRACTID, &rv)); - if (NS_SUCCEEDED(rv) && mimeFinder) - { - nsAutoCString mimeType; - rv = mimeFinder->GetTypeFromURI(tURI, mimeType); - if (NS_SUCCEEDED(rv)) - { - *fileType = ToNewCString(mimeType); - return; - } - } - } - - // If we hit here, return something...default to this... - *fileType = strdup(APPLICATION_OCTET_STREAM); - } -} - -//#pragma cplusplus reset - -/* -* ap_encode_init -* -------------- -* -* Setup the encode envirment -*/ - -int ap_encode_init( appledouble_encode_object *p_ap_encode_obj, - const char *fname, - char *separator) -{ - nsCOMPtr myFile; - NS_NewNativeLocalFile(nsDependentCString(fname), true, getter_AddRefs(myFile)); - bool exists; - if (myFile && NS_SUCCEEDED(myFile->Exists(&exists)) && !exists) - return -1; - - nsCOMPtr macFile = do_QueryInterface(myFile); - nsAutoCString path; - macFile->GetNativePath(path); - - memset(p_ap_encode_obj, 0, sizeof(appledouble_encode_object)); - - /* - ** Fill out the source file inforamtion. - */ - memcpy(p_ap_encode_obj->fname, path.get(), path.Length()); - p_ap_encode_obj->fname[path.Length()] = '\0'; - - p_ap_encode_obj->boundary = strdup(separator); - return noErr; -} - -/* -** ap_encode_next -** -------------- -** -** return : -** noErr : everything is ok -** errDone : when encoding is done. -** errors : otherwise. -*/ -int ap_encode_next( - appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32_t buff_size, - int32_t* real_size) -{ - int status; - - /* - ** install the out buff now. - */ - p_ap_encode_obj->outbuff = to_buff; - p_ap_encode_obj->s_outbuff = buff_size; - p_ap_encode_obj->pos_outbuff = 0; - - /* - ** first copy the outstandind data in the overflow buff to the out buffer. - */ - if (p_ap_encode_obj->s_overflow) - { - status = write_stream(p_ap_encode_obj, - (const char*)(p_ap_encode_obj->b_overflow), - p_ap_encode_obj->s_overflow); - if (status != noErr) - return status; - - p_ap_encode_obj->s_overflow = 0; - } - - /* - ** go the next processing stage based on the current state. - */ - switch (p_ap_encode_obj->state) - { - case kInit: - /* - ** We are in the starting position, fill out the header. - */ - status = fill_apple_mime_header(p_ap_encode_obj); - if (status != noErr) - break; /* some error happens */ - - p_ap_encode_obj->state = kDoingHeaderPortion; - status = ap_encode_header(p_ap_encode_obj, true); - /* it is the first time to calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** we are done with the header, so let's go to the data port. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is first time call do data portion */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingHeaderPortion: - - status = ap_encode_header(p_ap_encode_obj, false); - /* continue with the header portion. */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** start the data portion. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is the first time calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingDataPortion: - - status = ap_encode_data(p_ap_encode_obj, false); - /* it is not the first time */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoneDataPortion: - status = errDone; /* we are really done. */ - - break; - } - - *real_size = p_ap_encode_obj->pos_outbuff; - return status; -} - -/* -** ap_encode_end -** ------------- -** -** clear the apple encoding. -*/ - -int ap_encode_end( - appledouble_encode_object *p_ap_encode_obj, - bool is_aborting) -{ - /* - ** clear up the apple doubler. - */ - if (p_ap_encode_obj == NULL) - return noErr; - - if (p_ap_encode_obj->fileId) /* close the file if it is open. */ - ::FSCloseFork(p_ap_encode_obj->fileId); - - PR_FREEIF(p_ap_encode_obj->boundary); /* the boundary string. */ - - return noErr; -} diff --git a/mailnews/compose/src/nsMsgAppleEncode.cpp b/mailnews/compose/src/nsMsgAppleEncode.cpp deleted file mode 100644 index 27e39a8cda..0000000000 --- a/mailnews/compose/src/nsMsgAppleEncode.cpp +++ /dev/null @@ -1,703 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - * - * apple_double_encode.c - * --------------------- - * - * The routines doing the Apple Double Encoding. - * - * 2aug95 mym Created. - * - */ - -#include "nscore.h" -#include "nsStringGlue.h" -#include "nsMimeTypes.h" -#include "prprf.h" -#include "nsServiceManagerUtils.h" -#include "nsMsgAppleDouble.h" -#include "nsMsgAppleCodes.h" -#include "nsILocalFileMac.h" - -/* -** Local Functions prototypes. -*/ -static int output64chunk( appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads); - -static int to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size); - -static int finish64(appledouble_encode_object* p_ap_encode_obj); - - -#define BUFF_LEFT(p) ((p)->s_outbuff - (p)->pos_outbuff) - -/* -** write_stream. -*/ -int write_stream( - appledouble_encode_object *p_ap_encode_obj, - const char *out_string, - int len) -{ - if (p_ap_encode_obj->pos_outbuff + len < p_ap_encode_obj->s_outbuff) - { - memcpy(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - len); - p_ap_encode_obj->pos_outbuff += len; - return noErr; - } - else - { - /* - ** If the buff doesn't have enough space, use the overflow buffer then. - */ - int s_len = p_ap_encode_obj->s_outbuff - p_ap_encode_obj->pos_outbuff; - - memcpy(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - s_len); - memcpy(p_ap_encode_obj->b_overflow + p_ap_encode_obj->s_overflow, - out_string + s_len, - p_ap_encode_obj->s_overflow += (len - s_len)); - p_ap_encode_obj->pos_outbuff += s_len; - return errEOB; - } -} - -int fill_apple_mime_header( - appledouble_encode_object *p_ap_encode_obj) -{ - int status; - - char tmpstr[266]; - -#if 0 -// strcpy(tmpstr, "Content-Type: multipart/mixed; boundary=\"-\"\n\n---\n"); -// status = write_stream(p_ap_encode_env, -// tmpstr, -// strlen(tmpstr)); -// if (status != noErr) -// return status; - - PR_snprintf(tmpstr, sizeof(tmpstr), - "Content-Type: multipart/appledouble; boundary=\"=\"; name=\""); - status = write_stream(p_ap_encode_obj, (const char*)tmpstr, strlen(tmpstr)); - if (status != noErr) - return status; - - status = write_stream(p_ap_encode_obj, - p_ap_encode_obj->fname, - strlen(p_ap_encode_obj->fname)); - if (status != noErr) - return status; - - PR_snprintf(tmpstr, sizeof(tmpstr), - "\"\r\nContent-Disposition: inline; filename=\"%s\"\r\n\r\n\r\n--=\r\n", - p_ap_encode_obj->fname); -#endif /* 0 */ - PR_snprintf(tmpstr, sizeof(tmpstr), "--%s" CRLF, p_ap_encode_obj->boundary); - status = write_stream(p_ap_encode_obj, (const char*)tmpstr, strlen(tmpstr)); - return status; -} - -int ap_encode_file_infor( - appledouble_encode_object *p_ap_encode_obj) -{ - ap_header head; - ap_entry entries[NUM_ENTRIES]; - ap_dates dates; - short i; - long comlen; - char comment[256]; - int status; - - nsCOMPtr resFile; - NS_NewNativeLocalFile(nsDependentCString(p_ap_encode_obj->fname), true, - getter_AddRefs(resFile)); - if (!resFile) - return errFileOpen; - - FSRef ref; - nsCOMPtr macFile = do_QueryInterface(resFile); - if (NS_FAILED(macFile->GetFSRef(&ref))) - return errFileOpen; - - FSCatalogInfo catalogInfo; - if (::FSGetCatalogInfo(&ref, kFSCatInfoFinderInfo, &catalogInfo, nullptr, nullptr, nullptr) != noErr) - { - return errFileOpen; - } - - /* get a file comment, if possible */ -#if 1 - // Carbon doesn't support GetWDInfo(). (Bug 555684) - - // not sure why working directories are needed here... - comlen = 0; -#else - long procID; - procID = 0; - GetWDInfo(p_ap_encode_obj->vRefNum, &fpb->ioVRefNum, &fpb->ioDirID, &procID); - IOParam vinfo; - memset((void *) &vinfo, '\0', sizeof (vinfo)); - GetVolParmsInfoBuffer vp; - vinfo.ioCompletion = nil; - vinfo.ioVRefNum = fpb->ioVRefNum; - vinfo.ioBuffer = (Ptr) &vp; - vinfo.ioReqCount = sizeof (vp); - comlen = 0; - if (PBHGetVolParmsSync((HParmBlkPtr) &vinfo) == noErr && - ((vp.vMAttrib >> bHasDesktopMgr) & 1)) - { - DTPBRec dtp; - memset((void *) &dtp, '\0', sizeof (dtp)); - dtp.ioVRefNum = fpb->ioVRefNum; - if (PBDTGetPath(&dtp) == noErr) - { - dtp.ioCompletion = nil; - dtp.ioDTBuffer = (Ptr) comment; - dtp.ioNamePtr = fpb->ioNamePtr; - dtp.ioDirID = fpb->ioFlParID; - if (PBDTGetCommentSync(&dtp) == noErr) - comlen = dtp.ioDTActCount; - } - } -#endif /* ! 1 */ - - /* write header */ -// head.magic = dfork ? APPLESINGLE_MAGIC : APPLEDOUBLE_MAGIC; - head.magic = APPLEDOUBLE_MAGIC; /* always do apple double */ - head.version = VERSION; - memset(head.fill, '\0', sizeof (head.fill)); - head.entries = NUM_ENTRIES - 1; - status = to64(p_ap_encode_obj, - (char *) &head, - sizeof (head)); - if (status != noErr) - return status; - - /* write entry descriptors */ - nsAutoCString leafname; - macFile->GetNativeLeafName(leafname); - entries[0].offset = sizeof (head) + sizeof (ap_entry) * head.entries; - entries[0].id = ENT_NAME; - entries[0].length = leafname.Length(); - entries[1].id = ENT_FINFO; - entries[1].length = sizeof (FInfo) + sizeof (FXInfo); - entries[2].id = ENT_DATES; - entries[2].length = sizeof (ap_dates); - entries[3].id = ENT_COMMENT; - entries[3].length = comlen; - entries[4].id = ENT_RFORK; - entries[4].length = catalogInfo.rsrcLogicalSize; - entries[5].id = ENT_DFORK; - entries[5].length = catalogInfo.dataLogicalSize; - - /* correct the link in the entries. */ - for (i = 1; i < NUM_ENTRIES; ++i) - { - entries[i].offset = entries[i-1].offset + entries[i-1].length; - } - status = to64(p_ap_encode_obj, - (char *) entries, - sizeof (ap_entry) * head.entries); - if (status != noErr) - return status; - - /* write name */ - status = to64(p_ap_encode_obj, - (char *) leafname.get(), - leafname.Length()); - if (status != noErr) - return status; - - /* write finder info */ - status = to64(p_ap_encode_obj, - (char *) &catalogInfo.finderInfo, - sizeof (FInfo)); - if (status != noErr) - return status; - - status = to64(p_ap_encode_obj, - (char *) &catalogInfo.extFinderInfo, - sizeof (FXInfo)); - if (status != noErr) - return status; - - /* write dates */ - dates.create = catalogInfo.createDate.lowSeconds + CONVERT_TIME; - dates.modify = catalogInfo.contentModDate.lowSeconds + CONVERT_TIME; - dates.backup = catalogInfo.backupDate.lowSeconds + CONVERT_TIME; - dates.access = catalogInfo.accessDate.lowSeconds + CONVERT_TIME; - status = to64(p_ap_encode_obj, - (char *) &dates, - sizeof (ap_dates)); - if (status != noErr) - return status; - - /* write comment */ - if (comlen) - { - status = to64(p_ap_encode_obj, - comment, - comlen * sizeof(char)); - } - /* - ** Get some help information on deciding the file type. - */ - if (((FileInfo*)(&catalogInfo.finderInfo))->fileType == 'TEXT' || - ((FileInfo*)(&catalogInfo.finderInfo))->fileType == 'text') - { - p_ap_encode_obj->text_file_type = true; - } - - return status; -} -/* -** ap_encode_header -** -** encode the file header and the resource fork. -** -*/ -int ap_encode_header( - appledouble_encode_object* p_ap_encode_obj, - bool firstime) -{ - char rd_buff[256]; - FSIORefNum fileId; - OSErr retval = noErr; - int status; - ByteCount inCount; - - if (firstime) - { - PL_strcpy(rd_buff, - "Content-Type: application/applefile\r\nContent-Transfer-Encoding: base64\r\n\r\n"); - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - if (status != noErr) - return status; - - status = ap_encode_file_infor(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** preparing to encode the resource fork. - */ - nsCOMPtr myFile; - NS_NewNativeLocalFile(nsDependentCString(p_ap_encode_obj->fname), true, getter_AddRefs(myFile)); - if (!myFile) - return errFileOpen; - - FSRef ref; - nsCOMPtr macFile = do_QueryInterface(myFile); - if (NS_FAILED(macFile->GetFSRef(&ref))) - return errFileOpen; - - HFSUniStr255 forkName; - ::FSGetResourceForkName(&forkName); - retval = ::FSOpenFork(&ref, forkName.length, forkName.unicode, fsRdPerm, &p_ap_encode_obj->fileId); - if (retval != noErr) - return retval; - } - - fileId = p_ap_encode_obj->fileId; - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - inCount = 0; - retval = ::FSReadFork(fileId, fsAtMark, 0, 256, rd_buff, &inCount); - if (inCount) - { - status = to64(p_ap_encode_obj, - rd_buff, - inCount); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - ::FSCloseFork(fileId); - p_ap_encode_obj->fileId = 0; - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** write out the boundary - */ - PR_snprintf(rd_buff, sizeof(rd_buff), - CRLF "--%s" CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - if (status == noErr) - status = errDone; - } - return status; -} - -#if 0 -// This is unused for now and Clang complains about that is it is ifdefed out -static void replace(char *p, int len, char frm, char to) -{ - for (; len > 0; len--, p++) - if (*p == frm) *p = to; -} -#endif - -/* Description of the various file formats and their magic numbers */ -struct magic -{ - const char *name; /* Name of the file format */ - const char *num; /* The magic number */ - int len; /* Length (0 means strlen(magicnum)) */ -}; - -/* The magic numbers of the file formats we know about */ -static struct magic magic[] = -{ - { "image/gif", "GIF", 0 }, - { "image/jpeg", "\377\330\377", 0 }, - { "video/mpeg", "\0\0\001\263", 4 }, - { "application/postscript", "%!", 0 }, -}; -static int num_magic = MOZ_ARRAY_LENGTH(magic); - -static const char *text_type = TEXT_PLAIN; /* the text file type. */ -static const char *default_type = APPLICATION_OCTET_STREAM; - - -/* - * Determins the format of the file "inputf". The name - * of the file format (or NULL on error) is returned. - */ -static const char *magic_look(char *inbuff, int numread) -{ - int i, j; - - for (i=0; i= magic[i].len) - { - for (j=0; j resFile; - NS_NewNativeLocalFile(nsDependentCString(p_ap_encode_obj->fname), true, - getter_AddRefs(resFile)); - if (!resFile) - return errFileOpen; - - FSRef ref; - nsCOMPtr macFile = do_QueryInterface(resFile); - if (NS_FAILED(macFile->GetFSRef(&ref))) - return errFileOpen; - - HFSUniStr255 forkName; - ::FSGetDataForkName(&forkName); - retval = ::FSOpenFork(&ref, forkName.length, forkName.unicode, fsRdPerm, &fileId); - if (retval != noErr) - return retval; - - p_ap_encode_obj->fileId = fileId; - - - if (!p_ap_encode_obj->text_file_type) - { - /* - ** do a smart check for the file type. - */ - in_count = 0; - retval = ::FSReadFork(fileId, fsFromStart, 0, 256, rd_buff, &in_count); - magic_type = magic_look(rd_buff, in_count); - - /* don't forget to rewind the index to start point. */ - ::FSSetForkPosition(fileId, fsFromStart, 0); - /* and reset retVal just in case... */ - if (retval == eofErr) - retval = noErr; - } - else - { - magic_type = text_type; /* we already know it is a text type. */ - } - - /* - ** the data portion header information. - */ - nsAutoCString leafName; - resFile->GetNativeLeafName(leafName); - PR_snprintf(rd_buff, sizeof(rd_buff), - "Content-Type: %s; name=\"%s\"" CRLF "Content-Transfer-Encoding: base64" CRLF "Content-Disposition: inline; filename=\"%s\"" CRLF CRLF, - magic_type, - leafName.get(), - leafName.get()); - - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - if (status != noErr) - return status; - } - - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - in_count = 0; - retval = ::FSReadFork(p_ap_encode_obj->fileId, fsAtMark, 0, 256, rd_buff, &in_count); - if (in_count) - { -#if 0 -/* replace(rd_buff, in_count, '\r', '\n'); */ -#endif -/* ** may be need to do character set conversion here for localization. ** */ - status = to64(p_ap_encode_obj, - rd_buff, - in_count); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - ::FSCloseFork(p_ap_encode_obj->fileId); - p_ap_encode_obj->fileId = 0; - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* write out the boundary */ - - PR_snprintf(rd_buff, sizeof(rd_buff), - CRLF "--%s--" CRLF CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, (const char*)rd_buff, strlen(rd_buff)); - - if (status == noErr) - status = errDone; - } - return status; -} - -static char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -/* -** convert the stream in the inbuff to 64 format and put it in the out buff. -** To make the life easier, the caller will responcable of the cheking of the outbuff's bundary. -*/ -static int -to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size) -{ - int status; - int c1, c2, c3, ct; - unsigned char *inbuff = (unsigned char*)p; - - ct = p_ap_encode_obj->ct; /* the char count left last time. */ - - /* - ** resume the left state of the last conversion. - */ - switch (p_ap_encode_obj->state64) - { - case 0: - p_ap_encode_obj->c1 = c1 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 1; - return noErr; - } - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 1: - c1 = p_ap_encode_obj->c1; - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 2: - c1 = p_ap_encode_obj->c1; - c2 = p_ap_encode_obj->c2; - c3 = *inbuff ++; --in_size; - break; - } - - while (in_size >= 0) - { - status = output64chunk(p_ap_encode_obj, - c1, - c2, - c3, - 0); - if (status != noErr) - return status; - - ct += 4; - if (ct > 71) - { - status = write_stream(p_ap_encode_obj, - CRLF, - 2); - if (status != noErr) - return status; - - ct = 0; - } - - if (in_size <= 0) - { - p_ap_encode_obj->state64 = 0; - break; - } - - c1 = (int)*inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->state64 = 1; - break; - } - c2 = *inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->c2 = c2; - p_ap_encode_obj->state64 = 2; - break; - } - c3 = *inbuff++; - in_size--; - } - p_ap_encode_obj->ct = ct; - return status; -} - -/* -** clear the left base64 encodes. -*/ -static int -finish64(appledouble_encode_object* p_ap_encode_obj) -{ - int status; - - switch (p_ap_encode_obj->state64) - { - case 0: - break; - case 1: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - 0, - 0, - 2); - break; - case 2: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - p_ap_encode_obj->c2, - 0, - 1); - break; - } - status = write_stream(p_ap_encode_obj, CRLF, 2); - p_ap_encode_obj->state64 = 0; - p_ap_encode_obj->ct = 0; - return status; -} - -static int output64chunk( - appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads) -{ - char tmpstr[32]; - char *p = tmpstr; - - *p++ = basis_64[c1>>2]; - *p++ = basis_64[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)]; - if (pads == 2) - { - *p++ = '='; - *p++ = '='; - } - else if (pads) - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = '='; - } - else - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = basis_64[c3 & 0x3F]; - } - return write_stream(p_ap_encode_obj, (const char*) tmpstr, p-tmpstr); -} diff --git a/mailnews/import/build/moz.build b/mailnews/import/build/moz.build index 27e668f09d..f7b54574ea 100644 --- a/mailnews/import/build/moz.build +++ b/mailnews/import/build/moz.build @@ -35,13 +35,6 @@ LOCAL_INCLUDES += [ '../vcard/src', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '../applemail/src', - ] - OS_LIBS += CONFIG['TK_LIBS'] - OS_LIBS += ['-framework Cocoa'] - if CONFIG['OS_ARCH'] == 'WINNT': LOCAL_INCLUDES += [ ] diff --git a/media/libcubeb/src/cubeb_osx_run_loop.c b/media/libcubeb/src/cubeb_osx_run_loop.c deleted file mode 100644 index 0ba9536560..0000000000 --- a/media/libcubeb/src/cubeb_osx_run_loop.c +++ /dev/null @@ -1,11 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "OSXRunLoopSingleton.h" - -void cubeb_set_coreaudio_notification_runloop() -{ - mozilla_set_coreaudio_notification_runloop_if_needed(); -} diff --git a/media/libcubeb/src/cubeb_osx_run_loop.h b/media/libcubeb/src/cubeb_osx_run_loop.h deleted file mode 100644 index 78cd68d09b..0000000000 --- a/media/libcubeb/src/cubeb_osx_run_loop.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright © 2014 Mozilla Foundation - * - * This program is made available under an ISC-style license. See the - * accompanying file LICENSE for details. - */ - -/* On OSX 10.6 and after, the notification callbacks from the audio hardware are - * called on the main thread. Setting the kAudioHardwarePropertyRunLoop property - * to null tells the OSX to use a separate thread for that. - * - * This has to be called only once per process, so it is in a separate header - * for easy integration in other code bases. */ -#if defined(__cplusplus) -extern "C" { -#endif - -void cubeb_set_coreaudio_notification_runloop(); - -#if defined(__cplusplus) -} -#endif diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build index b53dec7998..d9baa77790 100644 --- a/media/libcubeb/src/moz.build +++ b/media/libcubeb/src/moz.build @@ -55,10 +55,6 @@ if CONFIG['OS_TARGET'] == 'Darwin': 'cubeb_audiounit.cpp', 'cubeb_resampler.cpp' ] - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'cubeb_osx_run_loop.c', - ] DEFINES['USE_AUDIOUNIT'] = True if CONFIG['OS_TARGET'] == 'WINNT': diff --git a/netwerk/base/NetworkInfoServiceCocoa.cpp b/netwerk/base/NetworkInfoServiceCocoa.cpp deleted file mode 100644 index cdfa8e5c97..0000000000 --- a/netwerk/base/NetworkInfoServiceCocoa.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include -#include -#include -#include -#include -#include - -#include "mozilla/DebugOnly.h" -#include "mozilla/ScopeExit.h" - -#include "NetworkInfoServiceImpl.h" - -namespace mozilla { -namespace net { - -static nsresult -ListInterfaceAddresses(int aFd, const char* aIface, AddrMapType& aAddrMap); - -nsresult -DoListAddresses(AddrMapType& aAddrMap) -{ - int fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd < 0) { - return NS_ERROR_FAILURE; - } - - auto autoCloseSocket = MakeScopeExit([&] { - close(fd); - }); - - struct ifconf ifconf; - /* 16k of space should be enough to list all interfaces. Worst case, if it's - * not then we will error out and fail to list addresses. This should only - * happen on pathological machines with way too many interfaces. - */ - char buf[16384]; - - ifconf.ifc_len = sizeof(buf); - ifconf.ifc_buf = buf; - if (ioctl(fd, SIOCGIFCONF, &ifconf) != 0) { - return NS_ERROR_FAILURE; - } - - struct ifreq* ifreq = ifconf.ifc_req; - int i = 0; - while (i < ifconf.ifc_len) { - size_t len = IFNAMSIZ + ifreq->ifr_addr.sa_len; - - DebugOnly rv = - ListInterfaceAddresses(fd, ifreq->ifr_name, aAddrMap); - NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "ListInterfaceAddresses failed"); - - ifreq = (struct ifreq*) ((char*)ifreq + len); - i += len; - } - - autoCloseSocket.release(); - return NS_OK; -} - -static nsresult -ListInterfaceAddresses(int aFd, const char* aInterface, AddrMapType& aAddrMap) -{ - struct ifreq ifreq; - memset(&ifreq, 0, sizeof(struct ifreq)); - strncpy(ifreq.ifr_name, aInterface, IFNAMSIZ - 1); - if (ioctl(aFd, SIOCGIFADDR, &ifreq) != 0) { - return NS_ERROR_FAILURE; - } - - char host[128]; - int family; - switch(family=ifreq.ifr_addr.sa_family) { - case AF_INET: - case AF_INET6: - getnameinfo(&ifreq.ifr_addr, sizeof(ifreq.ifr_addr), host, sizeof(host), 0, 0, NI_NUMERICHOST); - break; - case AF_UNSPEC: - return NS_OK; - default: - // Unknown family. - return NS_OK; - } - - nsCString ifaceStr; - ifaceStr.AssignASCII(aInterface); - - nsCString addrStr; - addrStr.AssignASCII(host); - - aAddrMap.Put(ifaceStr, addrStr); - - return NS_OK; -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/base/moz.build b/netwerk/base/moz.build index 1659299f7b..3ec17b2b2a 100644 --- a/netwerk/base/moz.build +++ b/netwerk/base/moz.build @@ -257,10 +257,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': 'nsURLHelperWin.cpp', 'ShutdownLayer.cpp', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'nsURLHelperOSX.cpp', - ] else: SOURCES += [ 'nsURLHelperUnix.cpp', @@ -272,11 +268,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': 'NetworkInfoServiceWindows.cpp', 'nsNetworkInfoService.cpp', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'NetworkInfoServiceCocoa.cpp', - 'nsNetworkInfoService.cpp', - ] elif CONFIG['OS_ARCH'] == 'Linux': SOURCES += [ 'NetworkInfoServiceLinux.cpp', diff --git a/netwerk/base/nsURLHelperOSX.cpp b/netwerk/base/nsURLHelperOSX.cpp deleted file mode 100644 index bcc0b257fb..0000000000 --- a/netwerk/base/nsURLHelperOSX.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Mac OS X-specific local file uri parsing */ -#include "nsURLHelper.h" -#include "nsEscape.h" -#include "nsIFile.h" -#include "nsTArray.h" -#include "nsReadableUtils.h" -#include - -static nsTArray *gVolumeList = nullptr; - -static bool pathBeginsWithVolName(const nsACString& path, nsACString& firstPathComponent) -{ - // Return whether the 1st path component in path (escaped) is equal to the name - // of a mounted volume. Return the 1st path component (unescaped) in any case. - // This needs to be done as quickly as possible, so we cache a list of volume names. - // XXX Register an event handler to detect drives being mounted/unmounted? - - if (!gVolumeList) { - gVolumeList = new nsTArray; - if (!gVolumeList) { - return false; // out of memory - } - } - - // Cache a list of volume names - if (!gVolumeList->Length()) { - OSErr err; - ItemCount volumeIndex = 1; - - do { - HFSUniStr255 volName; - FSRef rootDirectory; - err = ::FSGetVolumeInfo(0, volumeIndex, nullptr, kFSVolInfoNone, nullptr, - &volName, &rootDirectory); - if (err == noErr) { - NS_ConvertUTF16toUTF8 volNameStr(Substring((char16_t *)volName.unicode, - (char16_t *)volName.unicode + volName.length)); - gVolumeList->AppendElement(volNameStr); - volumeIndex++; - } - } while (err == noErr); - } - - // Extract the first component of the path - nsACString::const_iterator start; - path.BeginReading(start); - start.advance(1); // path begins with '/' - nsACString::const_iterator directory_end; - path.EndReading(directory_end); - nsACString::const_iterator component_end(start); - FindCharInReadable('/', component_end, directory_end); - - nsAutoCString flatComponent((Substring(start, component_end))); - NS_UnescapeURL(flatComponent); - int32_t foundIndex = gVolumeList->IndexOf(flatComponent); - firstPathComponent = flatComponent; - return (foundIndex != -1); -} - -void -net_ShutdownURLHelperOSX() -{ - delete gVolumeList; - gVolumeList = nullptr; -} - -static nsresult convertHFSPathtoPOSIX(const nsACString& hfsPath, nsACString& posixPath) -{ - // Use CFURL to do the conversion. We don't want to do this by simply - // using SwapSlashColon - we need the charset mapped from MacRoman - // to UTF-8, and we need "/Volumes" (or whatever - Apple says this is subject to change) - // prepended if the path is not on the boot drive. - - CFStringRef pathStrRef = CFStringCreateWithCString(nullptr, - PromiseFlatCString(hfsPath).get(), - kCFStringEncodingMacRoman); - if (!pathStrRef) - return NS_ERROR_FAILURE; - - nsresult rv = NS_ERROR_FAILURE; - CFURLRef urlRef = CFURLCreateWithFileSystemPath(nullptr, - pathStrRef, kCFURLHFSPathStyle, true); - if (urlRef) { - UInt8 pathBuf[PATH_MAX]; - if (CFURLGetFileSystemRepresentation(urlRef, true, pathBuf, sizeof(pathBuf))) { - posixPath = (char *)pathBuf; - rv = NS_OK; - } - } - CFRelease(pathStrRef); - if (urlRef) - CFRelease(urlRef); - return rv; -} - -static void SwapSlashColon(char *s) -{ - while (*s) { - if (*s == '/') - *s = ':'; - else if (*s == ':') - *s = '/'; - s++; - } -} - -nsresult -net_GetURLSpecFromActualFile(nsIFile *aFile, nsACString &result) -{ - // NOTE: This is identical to the implementation in nsURLHelperUnix.cpp - - nsresult rv; - nsAutoCString ePath; - - // construct URL spec from native file path - rv = aFile->GetNativePath(ePath); - if (NS_FAILED(rv)) - return rv; - - nsAutoCString escPath; - NS_NAMED_LITERAL_CSTRING(prefix, "file://"); - - // Escape the path with the directory mask - if (NS_EscapeURL(ePath.get(), ePath.Length(), esc_Directory+esc_Forced, escPath)) - escPath.Insert(prefix, 0); - else - escPath.Assign(prefix + ePath); - - // esc_Directory does not escape the semicolons, so if a filename - // contains semicolons we need to manually escape them. - // This replacement should be removed in bug #473280 - escPath.ReplaceSubstring(";", "%3b"); - - result = escPath; - return NS_OK; -} - -nsresult -net_GetFileFromURLSpec(const nsACString &aURL, nsIFile **result) -{ - // NOTE: See also the implementation in nsURLHelperUnix.cpp - // This matches it except for the HFS path handling. - - nsresult rv; - - nsCOMPtr localFile; - rv = NS_NewNativeLocalFile(EmptyCString(), true, getter_AddRefs(localFile)); - if (NS_FAILED(rv)) - return rv; - - nsAutoCString directory, fileBaseName, fileExtension, path; - bool bHFSPath = false; - - rv = net_ParseFileURL(aURL, directory, fileBaseName, fileExtension); - if (NS_FAILED(rv)) - return rv; - - if (!directory.IsEmpty()) { - NS_EscapeURL(directory, esc_Directory|esc_AlwaysCopy, path); - - // The canonical form of file URLs on OSX use POSIX paths: - // file:///path-name. - // But, we still encounter file URLs that use HFS paths: - // file:///volume-name/path-name - // Determine that here and normalize HFS paths to POSIX. - nsAutoCString possibleVolName; - if (pathBeginsWithVolName(directory, possibleVolName)) { - // Though we know it begins with a volume name, it could still - // be a valid POSIX path if the boot drive is named "Mac HD" - // and there is a directory "Mac HD" at its root. If such a - // directory doesn't exist, we'll assume this is an HFS path. - FSRef testRef; - possibleVolName.Insert("/", 0); - if (::FSPathMakeRef((UInt8*)possibleVolName.get(), &testRef, nullptr) != noErr) - bHFSPath = true; - } - - if (bHFSPath) { - // "%2F"s need to become slashes, while all other slashes need to - // become colons. If we start out by changing "%2F"s to colons, we - // can reply on SwapSlashColon() to do what we need - path.ReplaceSubstring("%2F", ":"); - path.Cut(0, 1); // directory begins with '/' - SwapSlashColon((char *)path.get()); - // At this point, path is an HFS path made using the same - // algorithm as nsURLHelperMac. We'll convert to POSIX below. - } - } - if (!fileBaseName.IsEmpty()) - NS_EscapeURL(fileBaseName, esc_FileBaseName|esc_AlwaysCopy, path); - if (!fileExtension.IsEmpty()) { - path += '.'; - NS_EscapeURL(fileExtension, esc_FileExtension|esc_AlwaysCopy, path); - } - - NS_UnescapeURL(path); - if (path.Length() != strlen(path.get())) - return NS_ERROR_FILE_INVALID_PATH; - - if (bHFSPath) - convertHFSPathtoPOSIX(path, path); - - // assuming path is encoded in the native charset - rv = localFile->InitWithNativePath(path); - if (NS_FAILED(rv)) - return rv; - - localFile.forget(result); - return NS_OK; -} diff --git a/netwerk/build/moz.build b/netwerk/build/moz.build index ebafda48bb..7c8416b9ac 100644 --- a/netwerk/build/moz.build +++ b/netwerk/build/moz.build @@ -36,12 +36,7 @@ if CONFIG['OS_ARCH'] == 'WINNT': '/netwerk/system/win32', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LOCAL_INCLUDES += [ - '/netwerk/system/mac', - ] - -elif CONFIG['OS_ARCH'] == 'Linux': +if CONFIG['OS_ARCH'] == 'Linux': LOCAL_INCLUDES += [ '/netwerk/system/linux', ] diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp b/netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp deleted file mode 100644 index 72b5577749..0000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp +++ /dev/null @@ -1,779 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MDNSResponderOperator.h" -#include "MDNSResponderReply.h" -#include "mozilla/EndianUtils.h" -#include "mozilla/Logging.h" -#include "mozilla/ScopeExit.h" -#include "mozilla/Unused.h" -#include "nsComponentManagerUtils.h" -#include "nsCOMPtr.h" -#include "nsDebug.h" -#include "nsDNSServiceInfo.h" -#include "nsHashPropertyBag.h" -#include "nsIProperty.h" -#include "nsISimpleEnumerator.h" -#include "nsIVariant.h" -#include "nsServiceManagerUtils.h" -#include "nsNetAddr.h" -#include "nsNetCID.h" -#include "nsSocketTransportService2.h" -#include "nsThreadUtils.h" -#include "nsXPCOMCID.h" -#include "private/pprio.h" - -#include "nsASocketHandler.h" - -namespace mozilla { -namespace net { - -static LazyLogModule gMDNSLog("MDNSResponderOperator"); -#undef LOG_I -#define LOG_I(...) MOZ_LOG(mozilla::net::gMDNSLog, mozilla::LogLevel::Debug, (__VA_ARGS__)) -#undef LOG_E -#define LOG_E(...) MOZ_LOG(mozilla::net::gMDNSLog, mozilla::LogLevel::Error, (__VA_ARGS__)) - -class MDNSResponderOperator::ServiceWatcher final - : public nsASocketHandler -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - - // nsASocketHandler methods - virtual void OnSocketReady(PRFileDesc* fd, int16_t outFlags) override - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - MOZ_ASSERT(fd == mFD); - - if (outFlags & (PR_POLL_ERR | PR_POLL_HUP | PR_POLL_NVAL)) { - LOG_E("error polling on listening socket (%p)", fd); - mCondition = NS_ERROR_UNEXPECTED; - } - - if (!(outFlags & PR_POLL_READ)) { - return; - } - - DNSServiceProcessResult(mService); - } - - virtual void OnSocketDetached(PRFileDesc *fd) override - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - MOZ_ASSERT(mThread); - MOZ_ASSERT(fd == mFD); - - if (!mFD) { - return; - } - - // Bug 1175387: do not double close the handle here. - PR_ChangeFileDescNativeHandle(mFD, -1); - PR_Close(mFD); - mFD = nullptr; - - mThread->Dispatch(NewRunnableMethod(this, &ServiceWatcher::Deallocate), - NS_DISPATCH_NORMAL); - } - - virtual void IsLocal(bool *aIsLocal) override { *aIsLocal = true; } - - virtual void KeepWhenOffline(bool *aKeepWhenOffline) override - { - *aKeepWhenOffline = true; - } - - virtual uint64_t ByteCountSent() override { return 0; } - virtual uint64_t ByteCountReceived() override { return 0; } - - explicit ServiceWatcher(DNSServiceRef aService, - MDNSResponderOperator* aOperator) - : mThread(nullptr) - , mSts(nullptr) - , mOperatorHolder(aOperator) - , mService(aService) - , mFD(nullptr) - , mAttached(false) - { - if (!gSocketTransportService) - { - nsCOMPtr sts = - do_GetService(NS_SOCKETTRANSPORTSERVICE_CONTRACTID); - } - } - - nsresult Init() - { - MOZ_ASSERT(PR_GetCurrentThread() != gSocketThread); - mThread = NS_GetCurrentThread(); - - if (!mService) { - return NS_OK; - } - - if (!gSocketTransportService) { - return NS_ERROR_FAILURE; - } - mSts = gSocketTransportService; - - int osfd = DNSServiceRefSockFD(mService); - if (osfd == -1) { - return NS_ERROR_FAILURE; - } - - mFD = PR_ImportFile(osfd); - return PostEvent(&ServiceWatcher::OnMsgAttach); - } - - void Close() - { - MOZ_ASSERT(PR_GetCurrentThread() != gSocketThread); - - if (!gSocketTransportService) { - Deallocate(); - return; - } - - PostEvent(&ServiceWatcher::OnMsgClose); - } - -private: - ~ServiceWatcher() = default; - - void Deallocate() - { - if (mService) { - DNSServiceRefDeallocate(mService); - mService = nullptr; - } - mOperatorHolder = nullptr; - } - - nsresult PostEvent(void(ServiceWatcher::*func)(void)) - { - return gSocketTransportService->Dispatch(NewRunnableMethod(this, func), - NS_DISPATCH_NORMAL); - } - - void OnMsgClose() - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - if (NS_FAILED(mCondition)) { - return; - } - - // tear down socket. this signals the STS to detach our socket handler. - mCondition = NS_BINDING_ABORTED; - - // if we are attached, then socket transport service will call our - // OnSocketDetached method automatically. Otherwise, we have to call it - // (and thus close the socket) manually. - if (!mAttached) { - OnSocketDetached(mFD); - } - } - - void OnMsgAttach() - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - if (NS_FAILED(mCondition)) { - return; - } - - mCondition = TryAttach(); - - // if we hit an error while trying to attach then bail... - if (NS_FAILED(mCondition)) { - NS_ASSERTION(!mAttached, "should not be attached already"); - OnSocketDetached(mFD); - } - - } - - nsresult TryAttach() - { - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - nsresult rv; - - if (!gSocketTransportService) { - return NS_ERROR_FAILURE; - } - - // - // find out if it is going to be ok to attach another socket to the STS. - // if not then we have to wait for the STS to tell us that it is ok. - // the notification is asynchronous, which means that when we could be - // in a race to call AttachSocket once notified. for this reason, when - // we get notified, we just re-enter this function. as a result, we are - // sure to ask again before calling AttachSocket. in this way we deal - // with the race condition. though it isn't the most elegant solution, - // it is far simpler than trying to build a system that would guarantee - // FIFO ordering (which wouldn't even be that valuable IMO). see bug - // 194402 for more info. - // - if (!gSocketTransportService->CanAttachSocket()) { - nsCOMPtr event = - NewRunnableMethod(this, &ServiceWatcher::OnMsgAttach); - - nsresult rv = gSocketTransportService->NotifyWhenCanAttachSocket(event); - if (NS_FAILED(rv)) { - return rv; - } - } - - // - // ok, we can now attach our socket to the STS for polling - // - rv = gSocketTransportService->AttachSocket(mFD, this); - if (NS_FAILED(rv)) { - return rv; - } - - mAttached = true; - - // - // now, configure our poll flags for listening... - // - mPollFlags = (PR_POLL_READ | PR_POLL_EXCEPT); - - return NS_OK; - } - - nsCOMPtr mThread; - RefPtr mSts; - RefPtr mOperatorHolder; - DNSServiceRef mService; - PRFileDesc* mFD; - bool mAttached; -}; - -NS_IMPL_ISUPPORTS(MDNSResponderOperator::ServiceWatcher, nsISupports) - -MDNSResponderOperator::MDNSResponderOperator() - : mService(nullptr) - , mWatcher(nullptr) - , mThread(NS_GetCurrentThread()) - , mIsCancelled(false) -{ -} - -MDNSResponderOperator::~MDNSResponderOperator() -{ - Stop(); -} - -nsresult -MDNSResponderOperator::Start() -{ - if (mIsCancelled) { - return NS_OK; - } - - if (IsServing()) { - Stop(); - } - - return NS_OK; -} - -nsresult -MDNSResponderOperator::Stop() -{ - return ResetService(nullptr); -} - -nsresult -MDNSResponderOperator::ResetService(DNSServiceRef aService) -{ - nsresult rv; - - if (aService != mService) { - if (mWatcher) { - mWatcher->Close(); - mWatcher = nullptr; - } - - if (aService) { - RefPtr watcher = new ServiceWatcher(aService, this); - if (NS_WARN_IF(NS_FAILED(rv = watcher->Init()))) { - return rv; - } - mWatcher = watcher; - } - - mService = aService; - } - return NS_OK; -} - -BrowseOperator::BrowseOperator(const nsACString& aServiceType, - nsIDNSServiceDiscoveryListener* aListener) - : MDNSResponderOperator() - , mServiceType(aServiceType) - , mListener(aListener) -{ -} - -nsresult -BrowseOperator::Start() -{ - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = MDNSResponderOperator::Start()))) { - return rv; - } - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = DNSServiceBrowse(&service, - 0, - kDNSServiceInterfaceIndexAny, - mServiceType.get(), - nullptr, - &BrowseReplyRunnable::Reply, - this); - NS_WARNING_ASSERTION(kDNSServiceErr_NoError == err, "DNSServiceBrowse fail"); - - if (mListener) { - if (kDNSServiceErr_NoError == err) { - mListener->OnDiscoveryStarted(mServiceType); - } else { - mListener->OnStartDiscoveryFailed(mServiceType, err); - } - } - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -nsresult -BrowseOperator::Stop() -{ - bool isServing = IsServing(); - nsresult rv = MDNSResponderOperator::Stop(); - - if (isServing && mListener) { - if (NS_SUCCEEDED(rv)) { - mListener->OnDiscoveryStopped(mServiceType); - } else { - mListener->OnStopDiscoveryFailed(mServiceType, - static_cast(rv)); - } - } - - return rv; -} - -void -BrowseOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - if (NS_WARN_IF(kDNSServiceErr_NoError != aErrorCode)) { - LOG_E("BrowseOperator::Reply (%d)", aErrorCode); - if (mListener) { - mListener->OnStartDiscoveryFailed(mServiceType, aErrorCode); - } - return; - } - - if (!mListener) { return; } - nsCOMPtr info = new nsDNSServiceInfo(); - - if (NS_WARN_IF(!info)) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetServiceName(aServiceName)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetServiceType(aRegType)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetDomainName(aReplyDomain)))) { return; } - - if (aFlags & kDNSServiceFlagsAdd) { - mListener->OnServiceFound(info); - } else { - mListener->OnServiceLost(info); - } -} - -RegisterOperator::RegisterOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSRegistrationListener* aListener) - : MDNSResponderOperator() - , mServiceInfo(aServiceInfo) - , mListener(aListener) -{ -} - -nsresult -RegisterOperator::Start() -{ - nsresult rv; - - rv = MDNSResponderOperator::Start(); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - uint16_t port; - if (NS_WARN_IF(NS_FAILED(rv = mServiceInfo->GetPort(&port)))) { - return rv; - } - nsAutoCString type; - if (NS_WARN_IF(NS_FAILED(rv = mServiceInfo->GetServiceType(type)))) { - return rv; - } - - TXTRecordRef txtRecord; - char buf[TXT_BUFFER_SIZE] = { 0 }; - TXTRecordCreate(&txtRecord, TXT_BUFFER_SIZE, buf); - - nsCOMPtr attributes; - if (NS_FAILED(rv = mServiceInfo->GetAttributes(getter_AddRefs(attributes)))) { - LOG_I("register: no attributes"); - } else { - nsCOMPtr enumerator; - if (NS_WARN_IF(NS_FAILED(rv = - attributes->GetEnumerator(getter_AddRefs(enumerator))))) { - return rv; - } - - bool hasMoreElements; - while (NS_SUCCEEDED(enumerator->HasMoreElements(&hasMoreElements)) && - hasMoreElements) { - nsCOMPtr element; - MOZ_ALWAYS_SUCCEEDS(enumerator->GetNext(getter_AddRefs(element))); - nsCOMPtr property = do_QueryInterface(element); - MOZ_ASSERT(property); - - nsAutoString name; - nsCOMPtr value; - MOZ_ALWAYS_SUCCEEDS(property->GetName(name)); - MOZ_ALWAYS_SUCCEEDS(property->GetValue(getter_AddRefs(value))); - - nsAutoCString str; - if (NS_WARN_IF(NS_FAILED(value->GetAsACString(str)))) { - continue; - } - - TXTRecordSetValue(&txtRecord, - /* it's safe because key name is ASCII only. */ - NS_LossyConvertUTF16toASCII(name).get(), - str.Length(), - str.get()); - } - } - - nsAutoCString host; - nsAutoCString name; - nsAutoCString domain; - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = - DNSServiceRegister(&service, - 0, - 0, - NS_SUCCEEDED(mServiceInfo->GetServiceName(name)) ? - name.get() : nullptr, - type.get(), - NS_SUCCEEDED(mServiceInfo->GetDomainName(domain)) ? - domain.get() : nullptr, - NS_SUCCEEDED(mServiceInfo->GetHost(host)) ? - host.get() : nullptr, - NativeEndian::swapToNetworkOrder(port), - TXTRecordGetLength(&txtRecord), - TXTRecordGetBytesPtr(&txtRecord), - &RegisterReplyRunnable::Reply, - this); - NS_WARNING_ASSERTION(kDNSServiceErr_NoError == err, - "DNSServiceRegister fail"); - - TXTRecordDeallocate(&txtRecord); - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - if (mListener) { - mListener->OnRegistrationFailed(mServiceInfo, err); - } - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -nsresult -RegisterOperator::Stop() -{ - bool isServing = IsServing(); - nsresult rv = MDNSResponderOperator::Stop(); - - if (isServing && mListener) { - if (NS_SUCCEEDED(rv)) { - mListener->OnServiceUnregistered(mServiceInfo); - } else { - mListener->OnUnregistrationFailed(mServiceInfo, - static_cast(rv)); - } - } - - return rv; -} - -void -RegisterOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& aDomain) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - if (kDNSServiceErr_NoError != aErrorCode) { - LOG_E("RegisterOperator::Reply (%d)", aErrorCode); - } - - if (!mListener) { return; } - nsCOMPtr info = new nsDNSServiceInfo(mServiceInfo); - if (NS_WARN_IF(NS_FAILED(info->SetServiceName(aName)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetServiceType(aRegType)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetDomainName(aDomain)))) { return; } - - if (kDNSServiceErr_NoError == aErrorCode) { - if (aFlags & kDNSServiceFlagsAdd) { - mListener->OnServiceRegistered(info); - } else { - // If a successfully-registered name later suffers a name conflict - // or similar problem and has to be deregistered, the callback will - // be invoked with the kDNSServiceFlagsAdd flag not set. - LOG_E("RegisterOperator::Reply: deregister"); - if (NS_WARN_IF(NS_FAILED(Stop()))) { - return; - } - } - } else { - mListener->OnRegistrationFailed(info, aErrorCode); - } -} - -ResolveOperator::ResolveOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener) - : MDNSResponderOperator() - , mServiceInfo(aServiceInfo) - , mListener(aListener) -{ -} - -nsresult -ResolveOperator::Start() -{ - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = MDNSResponderOperator::Start()))) { - return rv; - } - - nsAutoCString name; - mServiceInfo->GetServiceName(name); - nsAutoCString type; - mServiceInfo->GetServiceType(type); - nsAutoCString domain; - mServiceInfo->GetDomainName(domain); - - LOG_I("Resolve: (%s), (%s), (%s)", name.get(), type.get(), domain.get()); - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = - DNSServiceResolve(&service, - 0, - kDNSServiceInterfaceIndexAny, - name.get(), - type.get(), - domain.get(), - (DNSServiceResolveReply)&ResolveReplyRunnable::Reply, - this); - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - if (mListener) { - mListener->OnResolveFailed(mServiceInfo, err); - } - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -void -ResolveOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - auto guard = MakeScopeExit([&] { - Unused << NS_WARN_IF(NS_FAILED(Stop())); - }); - - if (NS_WARN_IF(kDNSServiceErr_NoError != aErrorCode)) { - LOG_E("ResolveOperator::Reply (%d)", aErrorCode); - return; - } - - // Resolve TXT record - int count = TXTRecordGetCount(aTxtLen, aTxtRecord); - LOG_I("resolve: txt count = %d, len = %d", count, aTxtLen); - nsCOMPtr attributes = new nsHashPropertyBag(); - if (NS_WARN_IF(!attributes)) { - return; - } - if (count) { - for (int i = 0; i < count; ++i) { - char key[TXT_BUFFER_SIZE] = { '\0' }; - uint8_t vSize = 0; - const void* value = nullptr; - if (kDNSServiceErr_NoError != - TXTRecordGetItemAtIndex(aTxtLen, - aTxtRecord, - i, - TXT_BUFFER_SIZE, - key, - &vSize, - &value)) { - break; - } - - nsAutoCString str(reinterpret_cast(value), vSize); - LOG_I("resolve TXT: (%d) %s=%s", vSize, key, str.get()); - - if (NS_WARN_IF(NS_FAILED(attributes->SetPropertyAsACString( - /* it's safe to convert because key name is ASCII only. */ - NS_ConvertASCIItoUTF16(key), - str)))) { - break; - } - } - } - - if (!mListener) { return; } - nsCOMPtr info = new nsDNSServiceInfo(mServiceInfo); - if (NS_WARN_IF(NS_FAILED(info->SetHost(aHostTarget)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetPort(aPort)))) { return; } - if (NS_WARN_IF(NS_FAILED(info->SetAttributes(attributes)))) { return; } - - if (kDNSServiceErr_NoError == aErrorCode) { - GetAddrInfor(info); - } - else { - mListener->OnResolveFailed(info, aErrorCode); - Unused << NS_WARN_IF(NS_FAILED(Stop())); - } -} - -void -ResolveOperator::GetAddrInfor(nsIDNSServiceInfo* aServiceInfo) -{ - RefPtr getAddreOp = new GetAddrInfoOperator(aServiceInfo, - mListener); - Unused << NS_WARN_IF(NS_FAILED(getAddreOp->Start())); -} - -GetAddrInfoOperator::GetAddrInfoOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener) - : MDNSResponderOperator() - , mServiceInfo(aServiceInfo) - , mListener(aListener) -{ -} - -nsresult -GetAddrInfoOperator::Start() -{ - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = MDNSResponderOperator::Start()))) { - return rv; - } - - nsAutoCString host; - mServiceInfo->GetHost(host); - - LOG_I("GetAddrInfo: (%s)", host.get()); - - DNSServiceRef service = nullptr; - DNSServiceErrorType err = - DNSServiceGetAddrInfo(&service, - kDNSServiceFlagsForceMulticast, - kDNSServiceInterfaceIndexAny, - kDNSServiceProtocol_IPv4 | kDNSServiceProtocol_IPv6, - host.get(), - (DNSServiceGetAddrInfoReply)&GetAddrInfoReplyRunnable::Reply, - this); - - if (NS_WARN_IF(kDNSServiceErr_NoError != err)) { - if (mListener) { - mListener->OnResolveFailed(mServiceInfo, err); - } - return NS_ERROR_FAILURE; - } - - return ResetService(service); -} - -void -GetAddrInfoOperator::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const NetAddr& aAddress, - uint32_t aTTL) -{ - MOZ_ASSERT(GetThread() == NS_GetCurrentThread()); - - auto guard = MakeScopeExit([&] { - Unused << NS_WARN_IF(NS_FAILED(Stop())); - }); - - if (NS_WARN_IF(kDNSServiceErr_NoError != aErrorCode)) { - LOG_E("GetAddrInfoOperator::Reply (%d)", aErrorCode); - return; - } - - if (!mListener) { return; } - - NetAddr addr = aAddress; - nsCOMPtr address = new nsNetAddr(&addr); - nsCString addressStr; - if (NS_WARN_IF(NS_FAILED(address->GetAddress(addressStr)))) { return; } - - nsCOMPtr info = new nsDNSServiceInfo(mServiceInfo); - if (NS_WARN_IF(NS_FAILED(info->SetAddress(addressStr)))) { return; } - - /** - * |kDNSServiceFlagsMoreComing| means this callback will be one or more - * callback events later, so this instance should be kept alive until all - * follow-up events are processed. - */ - if (aFlags & kDNSServiceFlagsMoreComing) { - guard.release(); - } - - if (kDNSServiceErr_NoError == aErrorCode) { - mListener->OnServiceResolved(info); - } else { - mListener->OnResolveFailed(info, aErrorCode); - } -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.h b/netwerk/dns/mdns/libmdns/MDNSResponderOperator.h deleted file mode 100644 index a932baa7cc..0000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderOperator.h +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_netwerk_dns_mdns_libmdns_MDNSResponderOperator_h -#define mozilla_netwerk_dns_mdns_libmdns_MDNSResponderOperator_h - -#include "dns_sd.h" -#include "mozilla/Atomics.h" -#include "mozilla/RefPtr.h" -#include "nsCOMPtr.h" -#include "nsIDNSServiceDiscovery.h" -#include "nsIThread.h" -#include "nsString.h" - -namespace mozilla { -namespace net { - -class MDNSResponderOperator -{ - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MDNSResponderOperator) - -public: - MDNSResponderOperator(); - - virtual nsresult Start(); - virtual nsresult Stop(); - void Cancel() { mIsCancelled = true; } - nsIThread* GetThread() const { return mThread; } - -protected: - virtual ~MDNSResponderOperator(); - - bool IsServing() const { return mService; } - nsresult ResetService(DNSServiceRef aService); - -private: - class ServiceWatcher; - - DNSServiceRef mService; - RefPtr mWatcher; - nsCOMPtr mThread; // remember caller thread for callback - Atomic mIsCancelled; -}; - -class BrowseOperator final : public MDNSResponderOperator -{ -public: - BrowseOperator(const nsACString& aServiceType, - nsIDNSServiceDiscoveryListener* aListener); - - nsresult Start() override; - nsresult Stop() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain); - -private: - ~BrowseOperator() = default; - - nsCString mServiceType; - nsCOMPtr mListener; -}; - -class RegisterOperator final : public MDNSResponderOperator -{ - enum { TXT_BUFFER_SIZE = 256 }; - -public: - RegisterOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSRegistrationListener* aListener); - - nsresult Start() override; - nsresult Stop() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& aDomain); - -private: - ~RegisterOperator() = default; - - nsCOMPtr mServiceInfo; - nsCOMPtr mListener; -}; - -class ResolveOperator final : public MDNSResponderOperator -{ - enum { TXT_BUFFER_SIZE = 256 }; - -public: - ResolveOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener); - - nsresult Start() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord); - -private: - ~ResolveOperator() = default; - void GetAddrInfor(nsIDNSServiceInfo* aServiceInfo); - - nsCOMPtr mServiceInfo; - nsCOMPtr mListener; -}; - -union NetAddr; - -class GetAddrInfoOperator final : public MDNSResponderOperator -{ -public: - GetAddrInfoOperator(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener); - - nsresult Start() override; - - void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const NetAddr& aAddress, - uint32_t aTTL); - -private: - ~GetAddrInfoOperator() = default; - - nsCOMPtr mServiceInfo; - nsCOMPtr mListener; -}; - -} // namespace net -} // namespace mozilla - -#endif // mozilla_netwerk_dns_mdns_libmdns_MDNSResponderOperator_h diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp b/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp deleted file mode 100644 index 7aa5b3759a..0000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp +++ /dev/null @@ -1,302 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "MDNSResponderReply.h" -#include "mozilla/EndianUtils.h" -#include "private/pprio.h" - -namespace mozilla { -namespace net { - -BrowseReplyRunnable::BrowseReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain, - BrowseOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mInterfaceIndex(aInterfaceIndex) - , mErrorCode(aErrorCode) - , mServiceName(aServiceName) - , mRegType(aRegType) - , mReplyDomain(aReplyDomain) - , mContext(aContext) -{ -} - -NS_IMETHODIMP -BrowseReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - mContext->Reply(mSdRef, - mFlags, - mInterfaceIndex, - mErrorCode, - mServiceName, - mRegType, - mReplyDomain); - return NS_OK; -} - -void -BrowseReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aServiceName, - const char* aRegType, - const char* aReplyDomain, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - BrowseOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - thread->Dispatch(new BrowseReplyRunnable(aSdRef, - aFlags, - aInterfaceIndex, - aErrorCode, - nsCString(aServiceName), - nsCString(aRegType), - nsCString(aReplyDomain), - obj), - NS_DISPATCH_NORMAL); -} - -RegisterReplyRunnable::RegisterReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& domain, - RegisterOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mErrorCode(aErrorCode) - , mName(aName) - , mRegType(aRegType) - , mDomain(domain) - , mContext(aContext) -{ -} - -NS_IMETHODIMP -RegisterReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - - mContext->Reply(mSdRef, - mFlags, - mErrorCode, - mName, - mRegType, - mDomain); - return NS_OK; -} - -void -RegisterReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const char* aName, - const char* aRegType, - const char* domain, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - RegisterOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - thread->Dispatch(new RegisterReplyRunnable(aSdRef, - aFlags, - aErrorCode, - nsCString(aName), - nsCString(aRegType), - nsCString(domain), - obj), - NS_DISPATCH_NORMAL); -} - -ResolveReplyRunnable::ResolveReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - ResolveOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mInterfaceIndex(aInterfaceIndex) - , mErrorCode(aErrorCode) - , mFullname(aFullName) - , mHosttarget(aHostTarget) - , mPort(aPort) - , mTxtLen(aTxtLen) - , mTxtRecord(new unsigned char[aTxtLen]) - , mContext(aContext) -{ - if (mTxtRecord) { - memcpy(mTxtRecord.get(), aTxtRecord, aTxtLen); - } -} - -ResolveReplyRunnable::~ResolveReplyRunnable() -{ -} - -NS_IMETHODIMP -ResolveReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - mContext->Reply(mSdRef, - mFlags, - mInterfaceIndex, - mErrorCode, - mFullname, - mHosttarget, - mPort, - mTxtLen, - mTxtRecord.get()); - return NS_OK; -} - -void -ResolveReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aFullName, - const char* aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - ResolveOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - thread->Dispatch(new ResolveReplyRunnable(aSdRef, - aFlags, - aInterfaceIndex, - aErrorCode, - nsCString(aFullName), - nsCString(aHostTarget), - NativeEndian::swapFromNetworkOrder(aPort), - aTxtLen, - aTxtRecord, - obj), - NS_DISPATCH_NORMAL); -} - -GetAddrInfoReplyRunnable::GetAddrInfoReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const mozilla::net::NetAddr& aAddress, - uint32_t aTTL, - GetAddrInfoOperator* aContext) - : mSdRef(aSdRef) - , mFlags(aFlags) - , mInterfaceIndex(aInterfaceIndex) - , mErrorCode(aErrorCode) - , mHostName(aHostName) - , mAddress(aAddress) - , mTTL(aTTL) - , mContext(aContext) -{ -} - -GetAddrInfoReplyRunnable::~GetAddrInfoReplyRunnable() -{ -} - -NS_IMETHODIMP -GetAddrInfoReplyRunnable::Run() -{ - MOZ_ASSERT(mContext); - mContext->Reply(mSdRef, - mFlags, - mInterfaceIndex, - mErrorCode, - mHostName, - mAddress, - mTTL); - return NS_OK; -} - -void -GetAddrInfoReplyRunnable::Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aHostName, - const struct sockaddr* aAddress, - uint32_t aTTL, - void* aContext) -{ - MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread); - - GetAddrInfoOperator* obj(reinterpret_cast(aContext)); - if (!obj) { - return; - } - - nsCOMPtr thread(obj->GetThread()); - if (!thread) { - return; - } - - NetAddr address; - address.raw.family = aAddress->sa_family; - - static_assert(sizeof(address.raw.data) >= sizeof(aAddress->sa_data), - "size of sockaddr.sa_data is too big"); - memcpy(&address.raw.data, aAddress->sa_data, sizeof(aAddress->sa_data)); - - thread->Dispatch(new GetAddrInfoReplyRunnable(aSdRef, - aFlags, - aInterfaceIndex, - aErrorCode, - nsCString(aHostName), - address, - aTTL, - obj), - NS_DISPATCH_NORMAL); -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/dns/mdns/libmdns/MDNSResponderReply.h b/netwerk/dns/mdns/libmdns/MDNSResponderReply.h deleted file mode 100644 index 794a585f80..0000000000 --- a/netwerk/dns/mdns/libmdns/MDNSResponderReply.h +++ /dev/null @@ -1,164 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_netwerk_dns_mdns_libmdns_MDNSResponderReply_h -#define mozilla_netwerk_dns_mdns_libmdns_MDNSResponderReply_h - -#include "dns_sd.h" -#include "MDNSResponderOperator.h" -#include "mozilla/UniquePtr.h" -#include "nsIThread.h" -#include "mozilla/net/DNS.h" -#include "mozilla/RefPtr.h" -#include "nsThreadUtils.h" - -namespace mozilla { -namespace net { - -class BrowseReplyRunnable final : public Runnable -{ -public: - BrowseReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aServiceName, - const nsACString& aRegType, - const nsACString& aReplyDomain, - BrowseOperator* aContext); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aServiceName, - const char* aRegType, - const char* aReplyDomain, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - uint32_t mInterfaceIndex; - DNSServiceErrorType mErrorCode; - nsCString mServiceName; - nsCString mRegType; - nsCString mReplyDomain; - RefPtr mContext; -}; - -class RegisterReplyRunnable final : public Runnable -{ -public: - RegisterReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const nsACString& aName, - const nsACString& aRegType, - const nsACString& aDomain, - RegisterOperator* aContext); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - DNSServiceErrorType aErrorCode, - const char* aName, - const char* aRegType, - const char* aDomain, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - DNSServiceErrorType mErrorCode; - nsCString mName; - nsCString mRegType; - nsCString mDomain; - RefPtr mContext; -}; - -class ResolveReplyRunnable final : public Runnable -{ -public: - ResolveReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aFullName, - const nsACString& aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - ResolveOperator* aContext); - ~ResolveReplyRunnable(); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aFullName, - const char* aHostTarget, - uint16_t aPort, - uint16_t aTxtLen, - const unsigned char* aTxtRecord, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - uint32_t mInterfaceIndex; - DNSServiceErrorType mErrorCode; - nsCString mFullname; - nsCString mHosttarget; - uint16_t mPort; - uint16_t mTxtLen; - UniquePtr mTxtRecord; - RefPtr mContext; -}; - -class GetAddrInfoReplyRunnable final : public Runnable -{ -public: - GetAddrInfoReplyRunnable(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const nsACString& aHostName, - const mozilla::net::NetAddr& aAddress, - uint32_t aTTL, - GetAddrInfoOperator* aContext); - ~GetAddrInfoReplyRunnable(); - - NS_IMETHOD Run() override; - - static void Reply(DNSServiceRef aSdRef, - DNSServiceFlags aFlags, - uint32_t aInterfaceIndex, - DNSServiceErrorType aErrorCode, - const char* aHostName, - const struct sockaddr* aAddress, - uint32_t aTTL, - void* aContext); - -private: - DNSServiceRef mSdRef; - DNSServiceFlags mFlags; - uint32_t mInterfaceIndex; - DNSServiceErrorType mErrorCode; - nsCString mHostName; - mozilla::net::NetAddr mAddress; - uint32_t mTTL; - RefPtr mContext; -}; - -} // namespace net -} // namespace mozilla - - #endif // mozilla_netwerk_dns_mdns_libmdns_MDNSResponderReply_h diff --git a/netwerk/dns/mdns/libmdns/moz.build b/netwerk/dns/mdns/libmdns/moz.build index 23445756c6..5a67c06118 100644 --- a/netwerk/dns/mdns/libmdns/moz.build +++ b/netwerk/dns/mdns/libmdns/moz.build @@ -3,32 +3,20 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - SOURCES += [ - 'MDNSResponderOperator.cpp', - 'MDNSResponderReply.cpp', - 'nsDNSServiceDiscovery.cpp', - ] +EXTRA_COMPONENTS += [ + 'nsDNSServiceDiscovery.js', + 'nsDNSServiceDiscovery.manifest', +] - LOCAL_INCLUDES += [ - '/netwerk/base', - ] - -else: - EXTRA_COMPONENTS += [ - 'nsDNSServiceDiscovery.js', - 'nsDNSServiceDiscovery.manifest', - ] - - EXTRA_JS_MODULES += [ - 'fallback/DataReader.jsm', - 'fallback/DataWriter.jsm', - 'fallback/DNSPacket.jsm', - 'fallback/DNSRecord.jsm', - 'fallback/DNSResourceRecord.jsm', - 'fallback/DNSTypes.jsm', - 'fallback/MulticastDNS.jsm', - ] +EXTRA_JS_MODULES += [ + 'fallback/DataReader.jsm', + 'fallback/DataWriter.jsm', + 'fallback/DNSPacket.jsm', + 'fallback/DNSRecord.jsm', + 'fallback/DNSResourceRecord.jsm', + 'fallback/DNSTypes.jsm', + 'fallback/MulticastDNS.jsm', +] SOURCES += [ 'nsDNSServiceInfo.cpp', diff --git a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp b/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp deleted file mode 100644 index cec8033d18..0000000000 --- a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsDNSServiceDiscovery.h" -#include "MDNSResponderOperator.h" -#include "nsICancelable.h" -#include "nsXULAppAPI.h" -#include "private/pprio.h" - -namespace mozilla { -namespace net { - -namespace { - -inline void -StartService() -{ - /*** STUB ***/ -} - -inline void -StopService() -{ - /*** STUB ***/ -} - -class ServiceCounter -{ -public: - static bool IsServiceRunning() - { - return !!sUseCount; - } - -private: - static uint32_t sUseCount; - -protected: - ServiceCounter() - { - MOZ_ASSERT(NS_IsMainThread()); - if (!sUseCount++) { - StartService(); - } - } - - virtual ~ServiceCounter() - { - MOZ_ASSERT(NS_IsMainThread()); - if (!--sUseCount) { - StopService(); - } - } -}; - -uint32_t ServiceCounter::sUseCount = 0; - -class DiscoveryRequest final : public nsICancelable - , private ServiceCounter -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSICANCELABLE - - explicit DiscoveryRequest(nsDNSServiceDiscovery* aService, - nsIDNSServiceDiscoveryListener* aListener); - -private: - virtual ~DiscoveryRequest() { Cancel(NS_OK); } - - RefPtr mService; - nsIDNSServiceDiscoveryListener* mListener; -}; - -NS_IMPL_ISUPPORTS(DiscoveryRequest, nsICancelable) - -DiscoveryRequest::DiscoveryRequest(nsDNSServiceDiscovery* aService, - nsIDNSServiceDiscoveryListener* aListener) - : mService(aService) - , mListener(aListener) -{ -} - -NS_IMETHODIMP -DiscoveryRequest::Cancel(nsresult aReason) -{ - if (mService) { - mService->StopDiscovery(mListener); - } - - mService = nullptr; - return NS_OK; -} - -class RegisterRequest final : public nsICancelable - , private ServiceCounter -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSICANCELABLE - - explicit RegisterRequest(nsDNSServiceDiscovery* aService, - nsIDNSRegistrationListener* aListener); - -private: - virtual ~RegisterRequest() { Cancel(NS_OK); } - - RefPtr mService; - nsIDNSRegistrationListener* mListener; -}; - -NS_IMPL_ISUPPORTS(RegisterRequest, nsICancelable) - -RegisterRequest::RegisterRequest(nsDNSServiceDiscovery* aService, - nsIDNSRegistrationListener* aListener) - : mService(aService) - , mListener(aListener) -{ -} - -NS_IMETHODIMP -RegisterRequest::Cancel(nsresult aReason) -{ - if (mService) { - mService->UnregisterService(mListener); - } - - mService = nullptr; - return NS_OK; -} - -} // namespace anonymous - -NS_IMPL_ISUPPORTS(nsDNSServiceDiscovery, nsIDNSServiceDiscovery) - -nsDNSServiceDiscovery::~nsDNSServiceDiscovery() -{ -} - -nsresult -nsDNSServiceDiscovery::Init() -{ - if (!XRE_IsParentProcess()) { - MOZ_ASSERT(false, "nsDNSServiceDiscovery can only be used in parent process"); - return NS_ERROR_FAILURE; - } - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::StartDiscovery(const nsACString& aServiceType, - nsIDNSServiceDiscoveryListener* aListener, - nsICancelable** aRetVal) -{ - MOZ_ASSERT(aRetVal); - - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = StopDiscovery(aListener)))) { - return rv; - } - - nsCOMPtr req = new DiscoveryRequest(this, aListener); - RefPtr browserOp = new BrowseOperator(aServiceType, - aListener); - if (NS_WARN_IF(NS_FAILED(rv = browserOp->Start()))) { - return rv; - } - - mDiscoveryMap.Put(aListener, browserOp); - - req.forget(aRetVal); - - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::StopDiscovery(nsIDNSServiceDiscoveryListener* aListener) -{ - nsresult rv; - - RefPtr browserOp; - if (!mDiscoveryMap.Get(aListener, getter_AddRefs(browserOp))) { - return NS_OK; - } - - browserOp->Cancel(); // cancel non-started operation - if (NS_WARN_IF(NS_FAILED(rv = browserOp->Stop()))) { - return rv; - } - - mDiscoveryMap.Remove(aListener); - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::RegisterService(nsIDNSServiceInfo* aServiceInfo, - nsIDNSRegistrationListener* aListener, - nsICancelable** aRetVal) -{ - MOZ_ASSERT(aRetVal); - - nsresult rv; - if (NS_WARN_IF(NS_FAILED(rv = UnregisterService(aListener)))) { - return rv; - } - - nsCOMPtr req = new RegisterRequest(this, aListener); - RefPtr registerOp = new RegisterOperator(aServiceInfo, - aListener); - if (NS_WARN_IF(NS_FAILED(rv = registerOp->Start()))) { - return rv; - } - - mRegisterMap.Put(aListener, registerOp); - - req.forget(aRetVal); - - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::UnregisterService(nsIDNSRegistrationListener* aListener) -{ - nsresult rv; - - RefPtr registerOp; - if (!mRegisterMap.Get(aListener, getter_AddRefs(registerOp))) { - return NS_OK; - } - - registerOp->Cancel(); // cancel non-started operation - if (NS_WARN_IF(NS_FAILED(rv = registerOp->Stop()))) { - return rv; - } - - mRegisterMap.Remove(aListener); - return NS_OK; -} - -NS_IMETHODIMP -nsDNSServiceDiscovery::ResolveService(nsIDNSServiceInfo* aServiceInfo, - nsIDNSServiceResolveListener* aListener) -{ - if (!ServiceCounter::IsServiceRunning()) { - return NS_ERROR_FAILURE; - } - - nsresult rv; - - RefPtr resolveOp = new ResolveOperator(aServiceInfo, - aListener); - if (NS_WARN_IF(NS_FAILED(rv = resolveOp->Start()))) { - return rv; - } - - return NS_OK; -} - -} // namespace net -} // namespace mozilla diff --git a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h b/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h deleted file mode 100644 index abe98f3574..0000000000 --- a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_netwerk_dns_mdns_libmdns_nsDNSServiceDiscovery_h -#define mozilla_netwerk_dns_mdns_libmdns_nsDNSServiceDiscovery_h - -#include "MDNSResponderOperator.h" -#include "nsIDNSServiceDiscovery.h" -#include "nsCOMPtr.h" -#include "mozilla/RefPtr.h" -#include "nsRefPtrHashtable.h" - -namespace mozilla { -namespace net { - -class BrowseOperator; -class RegisterOperator; - -class nsDNSServiceDiscovery final : public nsIDNSServiceDiscovery -{ -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIDNSSERVICEDISCOVERY - - explicit nsDNSServiceDiscovery() = default; - - /* - ** The mDNS service is started on demand. If no one uses, mDNS service will not - ** start. Therefore, all operations before service started will fail - ** and get error code |kDNSServiceErr_ServiceNotRunning| defined in dns_sd.h. - **/ - nsresult Init(); - - nsresult StopDiscovery(nsIDNSServiceDiscoveryListener* aListener); - nsresult UnregisterService(nsIDNSRegistrationListener* aListener); - -private: - virtual ~nsDNSServiceDiscovery(); - - nsRefPtrHashtable mDiscoveryMap; - nsRefPtrHashtable mRegisterMap; -}; - -} // namespace net -} // namespace mozilla - -#endif // mozilla_netwerk_dns_mdns_libmdns_nsDNSServiceDiscovery_h diff --git a/netwerk/streamconv/converters/moz.build b/netwerk/streamconv/converters/moz.build index 8630922404..546cfb9989 100644 --- a/netwerk/streamconv/converters/moz.build +++ b/netwerk/streamconv/converters/moz.build @@ -11,6 +11,7 @@ XPIDL_MODULE = 'necko_http' SOURCES += [ 'mozTXTToHTMLConv.cpp', + 'nsBinHexDecoder.cpp', 'nsDirIndex.cpp', 'nsDirIndexParser.cpp', 'nsHTTPCompressConv.cpp', @@ -26,11 +27,6 @@ if 'ftp' in CONFIG['NECKO_PROTOCOLS']: 'ParseFTPList.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'cocoa': - SOURCES += [ - 'nsBinHexDecoder.cpp', - ] - FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ diff --git a/netwerk/system/mac/moz.build b/netwerk/system/mac/moz.build deleted file mode 100644 index f884a08b7c..0000000000 --- a/netwerk/system/mac/moz.build +++ /dev/null @@ -1,13 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -SOURCES += [ - 'nsNetworkLinkService.mm', -] - -FINAL_LIBRARY = 'xul' - -if CONFIG['CLANG_CXX']: - CXXFLAGS += ['-Wno-error=shadow'] diff --git a/netwerk/system/mac/nsNetworkLinkService.h b/netwerk/system/mac/nsNetworkLinkService.h deleted file mode 100644 index ee54622478..0000000000 --- a/netwerk/system/mac/nsNetworkLinkService.h +++ /dev/null @@ -1,54 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef NSNETWORKLINKSERVICEMAC_H_ -#define NSNETWORKLINKSERVICEMAC_H_ - -#include "nsINetworkLinkService.h" -#include "nsIObserver.h" - -#include -#include - -class nsNetworkLinkService : public nsINetworkLinkService, - public nsIObserver -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSINETWORKLINKSERVICE - NS_DECL_NSIOBSERVER - - nsNetworkLinkService(); - - nsresult Init(); - nsresult Shutdown(); - -protected: - virtual ~nsNetworkLinkService(); - -private: - bool mLinkUp; - bool mStatusKnown; - - // Toggles allowing the sending of network-changed event. - bool mAllowChangedEvent; - - SCNetworkReachabilityRef mReachability; - CFRunLoopRef mCFRunLoop; - CFRunLoopSourceRef mRunLoopSource; - SCDynamicStoreRef mStoreRef; - - void UpdateReachability(); - void SendEvent(bool aNetworkChanged); - static void ReachabilityChanged(SCNetworkReachabilityRef target, - SCNetworkConnectionFlags flags, - void *info); - static void IPConfigChanged(SCDynamicStoreRef store, - CFArrayRef changedKeys, - void *info); - void calculateNetworkId(void); - nsCString mNetworkId; -}; - -#endif /* NSNETWORKLINKSERVICEMAC_H_ */ diff --git a/netwerk/system/mac/nsNetworkLinkService.mm b/netwerk/system/mac/nsNetworkLinkService.mm deleted file mode 100644 index 5b2d7575ac..0000000000 --- a/netwerk/system/mac/nsNetworkLinkService.mm +++ /dev/null @@ -1,526 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include "nsCOMPtr.h" -#include "nsIObserverService.h" -#include "nsServiceManagerUtils.h" -#include "nsString.h" -#include "nsCRT.h" -#include "mozilla/Logging.h" -#include "mozilla/Preferences.h" -#include "mozilla/SHA1.h" -#include "mozilla/Base64.h" -#include "nsNetworkLinkService.h" - -#import -#import - -#define NETWORK_NOTIFY_CHANGED_PREF "network.notify.changed" - -using namespace mozilla; - -static LazyLogModule gNotifyAddrLog("nsNotifyAddr"); -#define LOG(args) MOZ_LOG(gNotifyAddrLog, mozilla::LogLevel::Debug, args) - -// If non-successful, extract the error code and return it. This -// error code dance is inspired by -// http://developer.apple.com/technotes/tn/tn1145.html -static OSStatus getErrorCodeBool(Boolean success) -{ - OSStatus err = noErr; - if (!success) { - int scErr = ::SCError(); - if (scErr == kSCStatusOK) { - scErr = kSCStatusFailed; - } - err = scErr; - } - return err; -} - -// If given a NULL pointer, return the error code. -static OSStatus getErrorCodePtr(const void *value) -{ - return getErrorCodeBool(value != NULL); -} - -// Convenience function to allow NULL input. -static void CFReleaseSafe(CFTypeRef cf) -{ - if (cf) { - // "If cf is NULL, this will cause a runtime error and your - // application will crash." / Apple docs - ::CFRelease(cf); - } -} - -NS_IMPL_ISUPPORTS(nsNetworkLinkService, - nsINetworkLinkService, - nsIObserver) - -nsNetworkLinkService::nsNetworkLinkService() - : mLinkUp(true) - , mStatusKnown(false) - , mAllowChangedEvent(true) - , mReachability(nullptr) - , mCFRunLoop(nullptr) - , mRunLoopSource(nullptr) - , mStoreRef(nullptr) -{ -} - -nsNetworkLinkService::~nsNetworkLinkService() = default; - -NS_IMETHODIMP -nsNetworkLinkService::GetIsLinkUp(bool *aIsUp) -{ - *aIsUp = mLinkUp; - return NS_OK; -} - -NS_IMETHODIMP -nsNetworkLinkService::GetLinkStatusKnown(bool *aIsUp) -{ - *aIsUp = mStatusKnown; - return NS_OK; -} - -NS_IMETHODIMP -nsNetworkLinkService::GetLinkType(uint32_t *aLinkType) -{ - NS_ENSURE_ARG_POINTER(aLinkType); - - // XXX This function has not yet been implemented for this platform - *aLinkType = nsINetworkLinkService::LINK_TYPE_UNKNOWN; - return NS_OK; -} - -#ifndef SA_SIZE -#define SA_SIZE(sa) \ - ( (!(sa) || ((struct sockaddr *)(sa))->sa_len == 0) ? \ - sizeof(uint32_t) : \ - 1 + ( (((struct sockaddr *)(sa))->sa_len - 1) | (sizeof(uint32_t) - 1) ) ) -#endif - -static char *getMac(struct sockaddr_dl *sdl, char *buf, size_t bufsize) -{ - char *cp; - int n, p = 0; - - buf[0] = 0; - cp = (char *)LLADDR(sdl); - n = sdl->sdl_alen; - if (n > 0) { - while (--n >= 0) { - p += snprintf(&buf[p], bufsize - p, "%02x%s", - *cp++ & 0xff, n > 0 ? ":" : ""); - } - } - return buf; -} - -/* If the IP matches, get the MAC and return true */ -static bool matchIp(struct sockaddr_dl *sdl, struct sockaddr_inarp *addr, - char *ip, char *buf, size_t bufsize) -{ - if (sdl->sdl_alen) { - if (!strcmp(inet_ntoa(addr->sin_addr), ip)) { - getMac(sdl, buf, bufsize); - return true; /* done! */ - } - } - return false; /* continue */ -} - -/* - * Scan for the 'IP' address in the ARP table and store the corresponding MAC - * address in 'mac'. The output buffer is 'maclen' bytes big. - * - * Returns 'true' if it found the IP and returns a MAC. - */ -static bool scanArp(char *ip, char *mac, size_t maclen) -{ - int mib[6]; - char *lim, *next; - int st; - - mib[0] = CTL_NET; - mib[1] = PF_ROUTE; - mib[2] = 0; - mib[3] = AF_INET; - mib[4] = NET_RT_FLAGS; - mib[5] = RTF_LLINFO; - - size_t needed; - if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { - return false; - } - if (needed == 0) { - // empty table - return false; - } - - UniquePtr buf(new char[needed]); - - for (;;) { - st = sysctl(mib, 6, &buf[0], &needed, NULL, 0); - if (st == 0 || errno != ENOMEM) { - break; - } - needed += needed / 8; - - auto tmp = MakeUnique(needed); - memcpy(&tmp[0], &buf[0], needed); - buf = Move(tmp); - } - if (st == -1) { - return false; - } - lim = &buf[needed]; - - struct rt_msghdr *rtm; - for (next = &buf[0]; next < lim; next += rtm->rtm_msglen) { - rtm = reinterpret_cast(next); - struct sockaddr_inarp *sin2 = - reinterpret_cast(rtm + 1); - struct sockaddr_dl *sdl = - reinterpret_cast - ((char *)sin2 + SA_SIZE(sin2)); - if (matchIp(sdl, sin2, ip, mac, maclen)) { - return true; - } - } - - return false; -} - -static int routingTable(char *gw, size_t aGwLen) -{ - size_t needed; - int mib[6]; - struct rt_msghdr *rtm; - struct sockaddr *sa; - struct sockaddr_in *sockin; - - mib[0] = CTL_NET; - mib[1] = PF_ROUTE; - mib[2] = 0; - mib[3] = 0; - mib[4] = NET_RT_DUMP; - mib[5] = 0; - if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { - return 1; - } - - UniquePtr buf(new char[needed]); - - if (sysctl(mib, 6, &buf[0], &needed, NULL, 0) < 0) { - return 3; - } - - rtm = reinterpret_cast(&buf[0]); - sa = reinterpret_cast(rtm + 1); - sa = reinterpret_cast(SA_SIZE(sa) + (char *)sa); - sockin = reinterpret_cast(sa); - inet_ntop(AF_INET, &sockin->sin_addr.s_addr, gw, aGwLen-1); - - return 0; -} - -// -// Figure out the current "network identification" string. -// -// It detects the IP of the default gateway in the routing table, then the MAC -// address of that IP in the ARP table before it hashes that string (to avoid -// information leakage). -// -void nsNetworkLinkService::calculateNetworkId(void) -{ - bool found = false; - char hw[MAXHOSTNAMELEN]; - if (!routingTable(hw, sizeof(hw))) { - char mac[256]; // big enough for a printable MAC address - if (scanArp(hw, mac, sizeof(mac))) { - LOG(("networkid: MAC %s\n", hw)); - nsAutoCString mac(hw); - // This 'addition' could potentially be a - // fixed number from the profile or something. - nsAutoCString addition("local-rubbish"); - nsAutoCString output; - SHA1Sum sha1; - nsCString combined(mac + addition); - sha1.update(combined.get(), combined.Length()); - uint8_t digest[SHA1Sum::kHashSize]; - sha1.finish(digest); - nsCString newString(reinterpret_cast(digest), - SHA1Sum::kHashSize); - nsresult rv = Base64Encode(newString, output); - MOZ_RELEASE_ASSERT(NS_SUCCEEDED(rv)); - LOG(("networkid: id %s\n", output.get())); - if (mNetworkId != output) { - // new id - mNetworkId = output; - } - else { - // same id - } - found = true; - } - } - if (!found) { - // no id - } -} - - -NS_IMETHODIMP -nsNetworkLinkService::Observe(nsISupports *subject, - const char *topic, - const char16_t *data) -{ - if (!strcmp(topic, "xpcom-shutdown")) { - Shutdown(); - } - - return NS_OK; -} - -/* static */ -void -nsNetworkLinkService::IPConfigChanged(SCDynamicStoreRef aStoreREf, - CFArrayRef aChangedKeys, - void *aInfo) -{ - nsNetworkLinkService *service = - static_cast(aInfo); - service->SendEvent(true); -} - -nsresult -nsNetworkLinkService::Init(void) -{ - nsresult rv; - - nsCOMPtr observerService = - do_GetService("@mozilla.org/observer-service;1", &rv); - NS_ENSURE_SUCCESS(rv, rv); - - rv = observerService->AddObserver(this, "xpcom-shutdown", false); - NS_ENSURE_SUCCESS(rv, rv); - - Preferences::AddBoolVarCache(&mAllowChangedEvent, - NETWORK_NOTIFY_CHANGED_PREF, true); - - // If the network reachability API can reach 0.0.0.0 without - // requiring a connection, there is a network interface available. - struct sockaddr_in addr; - bzero(&addr, sizeof(addr)); - addr.sin_len = sizeof(addr); - addr.sin_family = AF_INET; - mReachability = - ::SCNetworkReachabilityCreateWithAddress(NULL, - (struct sockaddr *)&addr); - if (!mReachability) { - return NS_ERROR_NOT_AVAILABLE; - } - - SCNetworkReachabilityContext context = {0, this, NULL, NULL, NULL}; - if (!::SCNetworkReachabilitySetCallback(mReachability, - ReachabilityChanged, - &context)) { - NS_WARNING("SCNetworkReachabilitySetCallback failed."); - ::CFRelease(mReachability); - mReachability = NULL; - return NS_ERROR_NOT_AVAILABLE; - } - - SCDynamicStoreContext storeContext = {0, this, NULL, NULL, NULL}; - mStoreRef = - ::SCDynamicStoreCreate(NULL, - CFSTR("AddIPAddressListChangeCallbackSCF"), - IPConfigChanged, &storeContext); - - CFStringRef patterns[2] = {NULL, NULL}; - OSStatus err = getErrorCodePtr(mStoreRef); - if (err == noErr) { - // This pattern is "State:/Network/Service/[^/]+/IPv4". - patterns[0] = - ::SCDynamicStoreKeyCreateNetworkServiceEntity(NULL, - kSCDynamicStoreDomainState, - kSCCompAnyRegex, - kSCEntNetIPv4); - err = getErrorCodePtr(patterns[0]); - if (err == noErr) { - // This pattern is "State:/Network/Service/[^/]+/IPv6". - patterns[1] = - ::SCDynamicStoreKeyCreateNetworkServiceEntity(NULL, - kSCDynamicStoreDomainState, - kSCCompAnyRegex, - kSCEntNetIPv6); - err = getErrorCodePtr(patterns[1]); - } - } - - CFArrayRef patternList = NULL; - // Create a pattern list containing just one pattern, - // then tell SCF that we want to watch changes in keys - // that match that pattern list, then create our run loop - // source. - if (err == noErr) { - patternList = ::CFArrayCreate(NULL, (const void **) patterns, - 2, &kCFTypeArrayCallBacks); - if (!patternList) { - err = -1; - } - } - if (err == noErr) { - err = - getErrorCodeBool(::SCDynamicStoreSetNotificationKeys(mStoreRef, - NULL, - patternList)); - } - - if (err == noErr) { - mRunLoopSource = - ::SCDynamicStoreCreateRunLoopSource(NULL, mStoreRef, 0); - err = getErrorCodePtr(mRunLoopSource); - } - - CFReleaseSafe(patterns[0]); - CFReleaseSafe(patterns[1]); - CFReleaseSafe(patternList); - - if (err != noErr) { - CFReleaseSafe(mStoreRef); - return NS_ERROR_NOT_AVAILABLE; - } - - // Get the current run loop. This service is initialized at startup, - // so we shouldn't run in to any problems with modal dialog run loops. - mCFRunLoop = [[NSRunLoop currentRunLoop] getCFRunLoop]; - if (!mCFRunLoop) { - NS_WARNING("Could not get current run loop."); - ::CFRelease(mReachability); - mReachability = NULL; - return NS_ERROR_NOT_AVAILABLE; - } - ::CFRetain(mCFRunLoop); - - ::CFRunLoopAddSource(mCFRunLoop, mRunLoopSource, kCFRunLoopDefaultMode); - - if (!::SCNetworkReachabilityScheduleWithRunLoop(mReachability, mCFRunLoop, - kCFRunLoopDefaultMode)) { - NS_WARNING("SCNetworkReachabilityScheduleWIthRunLoop failed."); - ::CFRelease(mReachability); - mReachability = NULL; - ::CFRelease(mCFRunLoop); - mCFRunLoop = NULL; - return NS_ERROR_NOT_AVAILABLE; - } - - UpdateReachability(); - - return NS_OK; -} - -nsresult -nsNetworkLinkService::Shutdown() -{ - if (!::SCNetworkReachabilityUnscheduleFromRunLoop(mReachability, - mCFRunLoop, - kCFRunLoopDefaultMode)) { - NS_WARNING("SCNetworkReachabilityUnscheduleFromRunLoop failed."); - } - - CFRunLoopRemoveSource(mCFRunLoop, mRunLoopSource, kCFRunLoopDefaultMode); - - ::CFRelease(mReachability); - mReachability = nullptr; - - ::CFRelease(mCFRunLoop); - mCFRunLoop = nullptr; - - ::CFRelease(mStoreRef); - mStoreRef = nullptr; - - ::CFRelease(mRunLoopSource); - mRunLoopSource = nullptr; - - return NS_OK; -} - -void -nsNetworkLinkService::UpdateReachability() -{ - if (!mReachability) { - return; - } - - SCNetworkConnectionFlags flags; - if (!::SCNetworkReachabilityGetFlags(mReachability, &flags)) { - mStatusKnown = false; - return; - } - - bool reachable = (flags & kSCNetworkFlagsReachable) != 0; - bool needsConnection = (flags & kSCNetworkFlagsConnectionRequired) != 0; - - mLinkUp = (reachable && !needsConnection); - mStatusKnown = true; -} - -void -nsNetworkLinkService::SendEvent(bool aNetworkChanged) -{ - nsCOMPtr observerService = - do_GetService("@mozilla.org/observer-service;1"); - if (!observerService) { - return; - } - - const char *event; - if (aNetworkChanged) { - if (!mAllowChangedEvent) { - return; - } - event = NS_NETWORK_LINK_DATA_CHANGED; - } else if (!mStatusKnown) { - event = NS_NETWORK_LINK_DATA_UNKNOWN; - } else { - event = mLinkUp ? NS_NETWORK_LINK_DATA_UP - : NS_NETWORK_LINK_DATA_DOWN; - } - LOG(("SendEvent: network is '%s'\n", event)); - - observerService->NotifyObservers(static_cast(this), - NS_NETWORK_LINK_TOPIC, - NS_ConvertASCIItoUTF16(event).get()); -} - -/* static */ -void -nsNetworkLinkService::ReachabilityChanged(SCNetworkReachabilityRef target, - SCNetworkConnectionFlags flags, - void *info) -{ - nsNetworkLinkService *service = - static_cast(info); - - service->UpdateReachability(); - service->SendEvent(false); - service->calculateNetworkId(); -} diff --git a/netwerk/system/moz.build b/netwerk/system/moz.build index dcf7d6c3f1..a8034d7497 100644 --- a/netwerk/system/moz.build +++ b/netwerk/system/moz.build @@ -5,7 +5,5 @@ if CONFIG['OS_ARCH'] == 'WINNT': DIRS += ['win32'] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DIRS += ['mac'] elif CONFIG['OS_ARCH'] == 'Linux': DIRS += ['linux'] diff --git a/toolkit/components/parentalcontrols/moz.build b/toolkit/components/parentalcontrols/moz.build index 577162945b..6c8bd9a8ce 100644 --- a/toolkit/components/parentalcontrols/moz.build +++ b/toolkit/components/parentalcontrols/moz.build @@ -10,8 +10,6 @@ XPIDL_MODULE = 'parentalcontrols' if not CONFIG['MOZ_DISABLE_PARENTAL_CONTROLS']: if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': SOURCES += ['nsParentalControlsServiceWin.cpp'] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - UNIFIED_SOURCES += ['nsParentalControlsServiceCocoa.mm'] else: SOURCES += ['nsParentalControlsServiceDefault.cpp'] diff --git a/toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm b/toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm deleted file mode 100644 index 0eb0184001..0000000000 --- a/toolkit/components/parentalcontrols/nsParentalControlsServiceCocoa.mm +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode:nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsParentalControlsService.h" -#include "nsString.h" -#include "nsIFile.h" - -#import - -NS_IMPL_ISUPPORTS(nsParentalControlsService, nsIParentalControlsService) - -nsParentalControlsService::nsParentalControlsService() : - mEnabled(false) -{ - mEnabled = CFPreferencesAppValueIsForced(CFSTR("restrictWeb"), - CFSTR("com.apple.familycontrols.contentfilter")); -} - -nsParentalControlsService::~nsParentalControlsService() -{ -} - -NS_IMETHODIMP -nsParentalControlsService::GetParentalControlsEnabled(bool *aResult) -{ - *aResult = mEnabled; - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::GetBlockFileDownloadsEnabled(bool *aResult) -{ - *aResult = false; - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::GetLoggingEnabled(bool *aResult) -{ - *aResult = false; - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::Log(int16_t aEntryType, - bool blocked, - nsIURI *aSource, - nsIFile *aTarget) -{ - // silently drop on the floor - return NS_OK; -} - -NS_IMETHODIMP -nsParentalControlsService::RequestURIOverride(nsIURI *aTarget, - nsIInterfaceRequestor *aWindowContext, - bool *_retval) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsParentalControlsService::RequestURIOverrides(nsIArray *aTargets, - nsIInterfaceRequestor *aWindowContext, - bool *_retval) -{ - return NS_ERROR_NOT_AVAILABLE; -} - -NS_IMETHODIMP -nsParentalControlsService::IsAllowed(int16_t aAction, - nsIURI *aUri, - bool *_retval) -{ - return NS_ERROR_NOT_AVAILABLE; -} - diff --git a/toolkit/components/startup/moz.build b/toolkit/components/startup/moz.build index b12fe9a534..7ee23d9ce8 100644 --- a/toolkit/components/startup/moz.build +++ b/toolkit/components/startup/moz.build @@ -7,7 +7,7 @@ DIRS += ['public'] EXPORTS.mozilla += ['StartupTimeline.h'] -UNIFIED_SOURCES += [ +SOURCES += [ 'nsAppStartup.cpp', 'StartupTimeline.cpp', ] @@ -16,9 +16,7 @@ if CONFIG['MOZ_USERINFO']: if CONFIG['OS_ARCH'] == 'WINNT': # This file cannot be built in unified mode because of name clashes with Windows headers. SOURCES += ['nsUserInfoWin.cpp'] - elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - UNIFIED_SOURCES += ['nsUserInfoMac.mm'] else: - UNIFIED_SOURCES += ['nsUserInfoUnix.cpp'] + SOURCES += ['nsUserInfoUnix.cpp'] FINAL_LIBRARY = 'xul' diff --git a/toolkit/components/startup/nsUserInfoMac.h b/toolkit/components/startup/nsUserInfoMac.h deleted file mode 100644 index 822e0edd5d..0000000000 --- a/toolkit/components/startup/nsUserInfoMac.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifndef __nsUserInfoMac_h -#define __nsUserInfoMac_h - -#include "nsIUserInfo.h" -#include "nsReadableUtils.h" - -class nsUserInfo: public nsIUserInfo -{ -public: - nsUserInfo(); - - NS_DECL_ISUPPORTS - NS_DECL_NSIUSERINFO - - nsresult GetPrimaryEmailAddress(nsCString &aEmailAddress); - -protected: - virtual ~nsUserInfo() {} -}; - -#endif /* __nsUserInfo_h */ diff --git a/toolkit/components/startup/nsUserInfoMac.mm b/toolkit/components/startup/nsUserInfoMac.mm deleted file mode 100644 index 1895cf1773..0000000000 --- a/toolkit/components/startup/nsUserInfoMac.mm +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - -#include "nsUserInfoMac.h" -#include "nsObjCExceptions.h" -#include "nsString.h" - -#import -#import - -NS_IMPL_ISUPPORTS(nsUserInfo, nsIUserInfo) - -nsUserInfo::nsUserInfo() {} - -NS_IMETHODIMP -nsUserInfo::GetFullname(char16_t **aFullname) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT - - NS_ConvertUTF8toUTF16 fullName([NSFullUserName() UTF8String]); - *aFullname = ToNewUnicode(fullName); - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT -} - -NS_IMETHODIMP -nsUserInfo::GetUsername(char **aUsername) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT - - nsAutoCString username([NSUserName() UTF8String]); - *aUsername = ToNewCString(username); - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT -} - -nsresult -nsUserInfo::GetPrimaryEmailAddress(nsCString &aEmailAddress) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT - - // Try to get this user's primary email from the system addressbook's "me card" - // (if they've filled it) - ABPerson *me = [[ABAddressBook sharedAddressBook] me]; - ABMultiValue *emailAddresses = [me valueForProperty:kABEmailProperty]; - if ([emailAddresses count] > 0) { - // get the index of the primary email, in case there are more than one - int primaryEmailIndex = [emailAddresses indexForIdentifier:[emailAddresses primaryIdentifier]]; - aEmailAddress.Assign([[emailAddresses valueAtIndex:primaryEmailIndex] UTF8String]); - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT -} - -NS_IMETHODIMP -nsUserInfo::GetEmailAddress(char **aEmailAddress) -{ - nsAutoCString email; - if (NS_SUCCEEDED(GetPrimaryEmailAddress(email))) - *aEmailAddress = ToNewCString(email); - return NS_OK; -} - -NS_IMETHODIMP -nsUserInfo::GetDomain(char **aDomain) -{ - nsAutoCString email; - if (NS_SUCCEEDED(GetPrimaryEmailAddress(email))) { - int32_t index = email.FindChar('@'); - if (index != -1) { - // chop off everything before, and including the '@' - *aDomain = ToNewCString(Substring(email, index + 1)); - } - } - return NS_OK; -} diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build index 4f9b142eb3..53f06e95a4 100644 --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build @@ -12,14 +12,8 @@ def Libxul_defines(): @template def Libxul(name): - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'): - # This is going to be a framework named "XUL", not an ordinary library named - # "libxul.dylib" - GeckoFramework(name, linkage=None) - SHARED_LIBRARY_NAME = 'XUL' - else: - GeckoSharedLibrary(name, linkage=None) - SHARED_LIBRARY_NAME = 'xul' + GeckoSharedLibrary(name, linkage=None) + SHARED_LIBRARY_NAME = 'xul' DELAYLOAD_DLLS += [ 'comdlg32.dll', @@ -127,9 +121,6 @@ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT'] or \ 'freetype', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - CXXFLAGS += CONFIG['TK_CFLAGS'] - if CONFIG['MOZ_WEBRTC']: if CONFIG['OS_TARGET'] == 'WINNT': OS_LIBS += [ @@ -143,19 +134,6 @@ if CONFIG['MOZ_WEBRTC']: 'wininet', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - OS_LIBS += [ - '-framework OpenGL', - '-framework SystemConfiguration', - '-framework AVFoundation', - '-framework CoreMedia', - '-framework IOKit', - '-F%s' % CONFIG['MACOS_PRIVATE_FRAMEWORKS_DIR'], - '-framework CoreUI', - '-framework CoreSymbolication', - 'cups', - ] - if CONFIG['MOZ_WMF']: OS_LIBS += [ 'mfuuid', @@ -218,9 +196,6 @@ if 'rtsp' in CONFIG['NECKO_PROTOCOLS']: OS_LIBS += CONFIG['ICONV_LIBS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'): - OS_LIBS += CONFIG['TK_LIBS'] - if CONFIG['MOZ_SNDIO']: OS_LIBS += [ 'sndio', @@ -305,14 +280,11 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': ] if CONFIG['COMPILE_ENVIRONMENT']: - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'): - full_libname = SHARED_LIBRARY_NAME - else: - full_libname = '%s%s%s' % ( - CONFIG['DLL_PREFIX'], - LIBRARY_NAME, - CONFIG['DLL_SUFFIX'] - ) + full_libname = '%s%s%s' % ( + CONFIG['DLL_PREFIX'], + LIBRARY_NAME, + CONFIG['DLL_SUFFIX'] + ) GENERATED_FILES += ['dependentlibs.list'] GENERATED_FILES['dependentlibs.list'].script = 'dependentlibs.py:gen_list' GENERATED_FILES['dependentlibs.list'].inputs = [ diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build index 9adafe1403..225f3d9321 100644 --- a/toolkit/modules/moz.build +++ b/toolkit/modules/moz.build @@ -94,7 +94,7 @@ EXTRA_PP_JS_MODULES += [ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3'): DEFINES['MENUBAR_CAN_AUTOHIDE'] = 1 -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3', 'cocoa'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3'): DEFINES['HAVE_SHELL_SERVICE'] = 1 EXTRA_PP_JS_MODULES += [ diff --git a/toolkit/moz.build b/toolkit/moz.build index 7f2e0a6071..e5db2526f6 100644 --- a/toolkit/moz.build +++ b/toolkit/moz.build @@ -43,7 +43,5 @@ DIRS += ['xre'] if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): DIRS += ['system/unixproxy'] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - DIRS += ['system/osxproxy'] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': DIRS += ['system/windowsproxy'] diff --git a/toolkit/moz.configure b/toolkit/moz.configure index fbd728fdc8..4f4acdfd54 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -62,7 +62,7 @@ set_config('L10NBASEDIR', l10n_base) # reason. option('--enable-default-toolkit', nargs=1, choices=('cairo-windows', 'cairo-gtk2', 'cairo-gtk2-x11', 'cairo-gtk3', - 'cairo-cocoa', 'cairo-uikit'), + 'cairo-uikit'), help='Select default toolkit') @depends('--enable-default-toolkit', target) @@ -72,8 +72,6 @@ def toolkit(value, target): os = target.os if target.os == 'WINNT': platform_choices = ('cairo-windows',) - elif target.os == 'OSX': - platform_choices = ('cairo-cocoa',) elif target.os == 'iOS': platform_choices = ('cairo-uikit',) else: @@ -196,7 +194,7 @@ option(env='MOZ_INSTRUMENT_EVENT_LOOP', @depends('MOZ_INSTRUMENT_EVENT_LOOP', toolkit) def instrument_event_loop(value, toolkit): - if value or (toolkit in ('windows', 'gtk2', 'gtk3', 'cocoa') and value.origin == 'default'): + if value or (toolkit in ('windows', 'gtk2', 'gtk3') and value.origin == 'default'): return True set_config('MOZ_INSTRUMENT_EVENT_LOOP', instrument_event_loop) @@ -282,7 +280,7 @@ add_old_configure_assignment('FT2_CFLAGS', # ============================================================== @depends(toolkit) def applemedia(toolkit): - if toolkit in ('cocoa', 'uikit'): + if toolkit in ('uikit'): return True set_config('MOZ_APPLEMEDIA', applemedia) diff --git a/toolkit/mozapps/update/updater/Makefile.in b/toolkit/mozapps/update/updater/Makefile.in index 84a843d185..c1cfcead7e 100644 --- a/toolkit/mozapps/update/updater/Makefile.in +++ b/toolkit/mozapps/update/updater/Makefile.in @@ -14,16 +14,3 @@ endif endif include $(topsrcdir)/config/rules.mk - -ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) -export:: - sed -e 's/%MOZ_MACBUNDLE_ID%/$(MOZ_MACBUNDLE_ID)/' $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/bin/Info.plist -libs:: - $(NSINSTALL) -D $(DIST)/bin/updater.app - rsync -a -C --exclude '*.in' $(srcdir)/macbuild/Contents $(DIST)/bin/updater.app - rsync -a -C $(DIST)/bin/Info.plist $(DIST)/bin/updater.app/Contents - sed -e 's/%APP_NAME%/$(MOZ_APP_DISPLAYNAME)/' $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | \ - iconv -f UTF-8 -t UTF-16 > $(DIST)/bin/updater.app/Contents/Resources/English.lproj/InfoPlist.strings - $(NSINSTALL) -D $(DIST)/bin/updater.app/Contents/MacOS - $(NSINSTALL) $(DIST)/bin/org.mozilla.updater $(DIST)/bin/updater.app/Contents/MacOS -endif diff --git a/toolkit/mozapps/update/updater/launchchild_osx.mm b/toolkit/mozapps/update/updater/launchchild_osx.mm deleted file mode 100644 index 5a36ae6237..0000000000 --- a/toolkit/mozapps/update/updater/launchchild_osx.mm +++ /dev/null @@ -1,384 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include -#include -#include -#include -#include -#include -#include "readstrings.h" - -class MacAutoreleasePool { -public: - MacAutoreleasePool() - { - mPool = [[NSAutoreleasePool alloc] init]; - } - ~MacAutoreleasePool() - { - [mPool release]; - } - -private: - NSAutoreleasePool* mPool; -}; - -void LaunchChild(int argc, const char** argv) -{ - MacAutoreleasePool pool; - - @try { - NSString* launchPath = [NSString stringWithUTF8String:argv[0]]; - NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:argc - 1]; - for (int i = 1; i < argc; i++) { - [arguments addObject:[NSString stringWithUTF8String:argv[i]]]; - } - [NSTask launchedTaskWithLaunchPath:launchPath - arguments:arguments]; - } @catch (NSException* e) { - NSLog(@"%@: %@", e.name, e.reason); - } -} - -void -LaunchMacPostProcess(const char* aAppBundle) -{ - MacAutoreleasePool pool; - - // Launch helper to perform post processing for the update; this is the Mac - // analogue of LaunchWinPostProcess (PostUpdateWin). - NSString* iniPath = [NSString stringWithUTF8String:aAppBundle]; - iniPath = - [iniPath stringByAppendingPathComponent:@"Contents/Resources/updater.ini"]; - - NSFileManager* fileManager = [NSFileManager defaultManager]; - if (![fileManager fileExistsAtPath:iniPath]) { - // the file does not exist; there is nothing to run - return; - } - - int readResult; - char values[2][MAX_TEXT_LEN]; - readResult = ReadStrings([iniPath UTF8String], - "ExeRelPath\0ExeArg\0", - 2, - values, - "PostUpdateMac"); - if (readResult) { - return; - } - - NSString *exeRelPath = [NSString stringWithUTF8String:values[0]]; - NSString *exeArg = [NSString stringWithUTF8String:values[1]]; - if (!exeArg || !exeRelPath) { - return; - } - - // The path must not traverse directories and it must be a relative path. - if ([exeRelPath rangeOfString:@".."].location != NSNotFound || - [exeRelPath rangeOfString:@"./"].location != NSNotFound || - [exeRelPath rangeOfString:@"/"].location == 0) { - return; - } - - NSString* exeFullPath = [NSString stringWithUTF8String:aAppBundle]; - exeFullPath = [exeFullPath stringByAppendingPathComponent:exeRelPath]; - - char optVals[1][MAX_TEXT_LEN]; - readResult = ReadStrings([iniPath UTF8String], - "ExeAsync\0", - 1, - optVals, - "PostUpdateMac"); - - NSTask *task = [[NSTask alloc] init]; - [task setLaunchPath:exeFullPath]; - [task setArguments:[NSArray arrayWithObject:exeArg]]; - [task launch]; - if (!readResult) { - NSString *exeAsync = [NSString stringWithUTF8String:optVals[0]]; - if ([exeAsync isEqualToString:@"false"]) { - [task waitUntilExit]; - } - } - // ignore the return value of the task, there's nothing we can do with it - [task release]; -} - -id ConnectToUpdateServer() -{ - MacAutoreleasePool pool; - - id updateServer = nil; - BOOL isConnected = NO; - int currTry = 0; - const int numRetries = 10; // Number of IPC connection retries before - // giving up. - while (!isConnected && currTry < numRetries) { - @try { - updateServer = (id)[NSConnection - rootProxyForConnectionWithRegisteredName: - @"org.mozilla.updater.server" - host:nil - usingNameServer:[NSSocketPortNameServer sharedInstance]]; - if (!updateServer || - ![updateServer respondsToSelector:@selector(abort)] || - ![updateServer respondsToSelector:@selector(getArguments)] || - ![updateServer respondsToSelector:@selector(shutdown)]) { - NSLog(@"Server doesn't exist or doesn't provide correct selectors."); - sleep(1); // Wait 1 second. - currTry++; - } else { - isConnected = YES; - } - } @catch (NSException* e) { - NSLog(@"Encountered exception, retrying: %@: %@", e.name, e.reason); - sleep(1); // Wait 1 second. - currTry++; - } - } - if (!isConnected) { - NSLog(@"Failed to connect to update server after several retries."); - return nil; - } - return updateServer; -} - -void CleanupElevatedMacUpdate(bool aFailureOccurred) -{ - MacAutoreleasePool pool; - - id updateServer = ConnectToUpdateServer(); - if (updateServer) { - @try { - if (aFailureOccurred) { - [updateServer performSelector:@selector(abort)]; - } else { - [updateServer performSelector:@selector(shutdown)]; - } - } @catch (NSException* e) { } - } - - NSFileManager* manager = [NSFileManager defaultManager]; - [manager removeItemAtPath:@"/Library/PrivilegedHelperTools/org.mozilla.updater" - error:nil]; - [manager removeItemAtPath:@"/Library/LaunchDaemons/org.mozilla.updater.plist" - error:nil]; - const char* launchctlArgs[] = {"/bin/launchctl", - "remove", - "org.mozilla.updater"}; - // The following call will terminate the current process due to the "remove" - // argument in launchctlArgs. - LaunchChild(3, launchctlArgs); -} - -// Note: Caller is responsible for freeing argv. -bool ObtainUpdaterArguments(int* argc, char*** argv) -{ - MacAutoreleasePool pool; - - id updateServer = ConnectToUpdateServer(); - if (!updateServer) { - // Let's try our best and clean up. - CleanupElevatedMacUpdate(true); - return false; // Won't actually get here due to CleanupElevatedMacUpdate. - } - - @try { - NSArray* updaterArguments = - [updateServer performSelector:@selector(getArguments)]; - *argc = [updaterArguments count]; - char** tempArgv = (char**)malloc(sizeof(char*) * (*argc)); - for (int i = 0; i < *argc; i++) { - int argLen = [[updaterArguments objectAtIndex:i] length] + 1; - tempArgv[i] = (char*)malloc(argLen); - strncpy(tempArgv[i], [[updaterArguments objectAtIndex:i] UTF8String], - argLen); - } - *argv = tempArgv; - } @catch (NSException* e) { - // Let's try our best and clean up. - CleanupElevatedMacUpdate(true); - return false; // Won't actually get here due to CleanupElevatedMacUpdate. - } - return true; -} - -/** - * The ElevatedUpdateServer is launched from a non-elevated updater process. - * It allows an elevated updater process (usually a privileged helper tool) to - * connect to it and receive all the necessary arguments to complete a - * successful update. - */ -@interface ElevatedUpdateServer : NSObject -{ - NSArray* mUpdaterArguments; - BOOL mShouldKeepRunning; - BOOL mAborted; -} -- (id)initWithArgs:(NSArray*)args; -- (BOOL)runServer; -- (NSArray*)getArguments; -- (void)abort; -- (BOOL)wasAborted; -- (void)shutdown; -- (BOOL)shouldKeepRunning; -@end - -@implementation ElevatedUpdateServer - -- (id)initWithArgs:(NSArray*)args -{ - self = [super init]; - if (!self) { - return nil; - } - mUpdaterArguments = args; - mShouldKeepRunning = YES; - mAborted = NO; - return self; -} - -- (BOOL)runServer -{ - NSPort* serverPort = [NSSocketPort port]; - NSConnection* server = [NSConnection connectionWithReceivePort:serverPort - sendPort:serverPort]; - [server setRootObject:self]; - if ([server registerName:@"org.mozilla.updater.server" - withNameServer:[NSSocketPortNameServer sharedInstance]] == NO) { - NSLog(@"Unable to register as DirectoryServer."); - NSLog(@"Is another copy running?"); - return NO; - } - - while ([self shouldKeepRunning] && - [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode - beforeDate:[NSDate distantFuture]]); - return ![self wasAborted]; -} - -- (NSArray*)getArguments -{ - return mUpdaterArguments; -} - -- (void)abort -{ - mAborted = YES; - [self shutdown]; -} - -- (BOOL)wasAborted -{ - return mAborted; -} - -- (void)shutdown -{ - mShouldKeepRunning = NO; -} - -- (BOOL)shouldKeepRunning -{ - return mShouldKeepRunning; -} - -@end - -bool ServeElevatedUpdate(int argc, const char** argv) -{ - MacAutoreleasePool pool; - - NSMutableArray* updaterArguments = [NSMutableArray arrayWithCapacity:argc]; - for (int i = 0; i < argc; i++) { - [updaterArguments addObject:[NSString stringWithUTF8String:argv[i]]]; - } - - ElevatedUpdateServer* updater = - [[ElevatedUpdateServer alloc] initWithArgs:[updaterArguments copy]]; - bool didSucceed = [updater runServer]; - - [updater release]; - return didSucceed; -} - -bool IsOwnedByGroupAdmin(const char* aAppBundle) -{ - MacAutoreleasePool pool; - - NSString* appDir = [NSString stringWithUTF8String:aAppBundle]; - NSFileManager* fileManager = [NSFileManager defaultManager]; - - NSDictionary* attributes = [fileManager attributesOfItemAtPath:appDir - error:nil]; - bool isOwnedByAdmin = false; - if (attributes && - [[attributes valueForKey:NSFileGroupOwnerAccountID] intValue] == 80) { - isOwnedByAdmin = true; - } - return isOwnedByAdmin; -} - -void SetGroupOwnershipAndPermissions(const char* aAppBundle) -{ - MacAutoreleasePool pool; - - NSString* appDir = [NSString stringWithUTF8String:aAppBundle]; - NSFileManager* fileManager = [NSFileManager defaultManager]; - NSError* error = nil; - NSArray* paths = - [fileManager subpathsOfDirectoryAtPath:appDir - error:&error]; - if (error) { - return; - } - - // Set group ownership of Firefox.app to 80 ("admin") and permissions to - // 0775. - if (![fileManager setAttributes:@{ NSFileGroupOwnerAccountID: @(80), - NSFilePosixPermissions: @(0775) } - ofItemAtPath:appDir - error:&error] || error) { - return; - } - - NSArray* permKeys = [NSArray arrayWithObjects:NSFileGroupOwnerAccountID, - NSFilePosixPermissions, - nil]; - // For all descendants of Firefox.app, set group ownership to 80 ("admin") and - // ensure write permission for the group. - for (NSString* currPath in paths) { - NSString* child = [appDir stringByAppendingPathComponent:currPath]; - NSDictionary* oldAttributes = - [fileManager attributesOfItemAtPath:child - error:&error]; - if (error) { - return; - } - // Skip symlinks, since they could be pointing to files outside of the .app - // bundle. - if ([oldAttributes fileType] == NSFileTypeSymbolicLink) { - continue; - } - NSNumber* oldPerms = - (NSNumber*)[oldAttributes valueForKey:NSFilePosixPermissions]; - NSArray* permObjects = - [NSArray arrayWithObjects: - [NSNumber numberWithUnsignedLong:80], - [NSNumber numberWithUnsignedLong:[oldPerms shortValue] | 020], - nil]; - NSDictionary* attributes = [NSDictionary dictionaryWithObjects:permObjects - forKeys:permKeys]; - if (![fileManager setAttributes:attributes - ofItemAtPath:child - error:&error] || error) { - return; - } - } -} diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in b/toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in deleted file mode 100644 index a9b9fcba9d..0000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Info.plist.in +++ /dev/null @@ -1,39 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - org.mozilla.updater - CFBundleIconFile - updater.icns - CFBundleIdentifier - org.mozilla.updater - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - LSMinimumSystemVersion - 10.5 - LSMinimumSystemVersionByArchitecture - - i386 - 10.5.0 - x86_64 - 10.6.0 - - SMAuthorizedClients - - identifier "%MOZ_MACBUNDLE_ID%" and ((anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9]) or (anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] and certificate leaf[field.1.2.840.113635.100.6.1.13] and certificate leaf[subject.OU] = "43AQ936H96")) - - - diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo b/toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo deleted file mode 100644 index bd04210fb4..0000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in deleted file mode 100644 index bca4022e75..0000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in +++ /dev/null @@ -1,7 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Localized versions of Info.plist keys */ - -CFBundleName = "%APP_NAME% Software Update"; diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 6cfb50406b..0000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,19 +0,0 @@ -{ - IBClasses = ( - { - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; -}, - { - CLASS = UpdaterUI; - LANGUAGE = ObjC; - OUTLETS = { - progressBar = NSProgressIndicator; - progressTextField = NSTextField; - }; - SUPERCLASS = NSObject; -} - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib deleted file mode 100644 index 1509178370..0000000000 --- a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/info.nib +++ /dev/null @@ -1,22 +0,0 @@ - - - - - IBDocumentLocation - 111 162 356 240 0 0 1440 878 - IBEditorPositions - - 29 - 106 299 84 44 0 0 1440 878 - - IBFramework Version - 489.0 - IBOpenObjects - - 21 - 29 - - IBSystem Version - 10J567 - - diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/keyedobjects.nib b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/English.lproj/MainMenu.nib/keyedobjects.nib deleted file mode 100644 index 61ff026009dc837450268c20ed7de18d2c386fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5567 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 diff --git a/toolkit/mozapps/update/updater/macbuild/Contents/Resources/updater.icns b/toolkit/mozapps/update/updater/macbuild/Contents/Resources/updater.icns deleted file mode 100644 index d7499c6692db1d268b180d1afb6c3d0ea0572adf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55969 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 N@9lqc;Qv?-{6BR<2ZI0r diff --git a/toolkit/mozapps/update/updater/moz.build b/toolkit/mozapps/update/updater/moz.build index 4dc557ea34..6cf377afef 100644 --- a/toolkit/mozapps/update/updater/moz.build +++ b/toolkit/mozapps/update/updater/moz.build @@ -3,26 +3,13 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - Program('org.mozilla.updater') -else: - Program('updater') +Program('updater') updater_rel_path = '' include('updater-common.build') CXXFLAGS += CONFIG['MOZ_BZ2_CFLAGS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LDFLAGS += ['-sectcreate', - '__TEXT', - '__info_plist', - TOPOBJDIR + '/dist/bin/Info.plist', - '-sectcreate', - '__TEXT', - '__launchd_plist', - SRCDIR + '/Launchd.plist'] - GENERATED_FILES = [ 'primaryCert.h', 'secondaryCert.h', diff --git a/toolkit/mozapps/update/updater/progressui_osx.mm b/toolkit/mozapps/update/updater/progressui_osx.mm deleted file mode 100644 index 54c9c41b72..0000000000 --- a/toolkit/mozapps/update/updater/progressui_osx.mm +++ /dev/null @@ -1,144 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#include -#include -#include "mozilla/Sprintf.h" -#include "progressui.h" -#include "readstrings.h" -#include "errors.h" - -#define TIMER_INTERVAL 0.2 - -static float sProgressVal; // between 0 and 100 -static BOOL sQuit = NO; -static BOOL sIndeterminate = NO; -static StringTable sLabels; -static const char *sUpdatePath; - -@interface UpdaterUI : NSObject -{ - IBOutlet NSProgressIndicator *progressBar; - IBOutlet NSTextField *progressTextField; -} -@end - -@implementation UpdaterUI - --(void)awakeFromNib -{ - NSWindow *w = [progressBar window]; - - [w setTitle:[NSString stringWithUTF8String:sLabels.title]]; - [progressTextField setStringValue:[NSString stringWithUTF8String:sLabels.info]]; - - NSRect origTextFrame = [progressTextField frame]; - [progressTextField sizeToFit]; - - int widthAdjust = progressTextField.frame.size.width - origTextFrame.size.width; - - if (widthAdjust > 0) { - NSRect f; - f.size.width = w.frame.size.width + widthAdjust; - f.size.height = w.frame.size.height; - [w setFrame:f display:YES]; - } - - [w center]; - - [progressBar setIndeterminate:sIndeterminate]; - [progressBar setDoubleValue:0.0]; - - [[NSTimer scheduledTimerWithTimeInterval:TIMER_INTERVAL target:self - selector:@selector(updateProgressUI:) - userInfo:nil repeats:YES] retain]; - - // Make sure we are on top initially - [NSApp activateIgnoringOtherApps:YES]; -} - -// called when the timer goes off --(void)updateProgressUI:(NSTimer *)aTimer -{ - if (sQuit) { - [aTimer invalidate]; - [aTimer release]; - - // It seems to be necessary to activate and hide ourselves before we stop, - // otherwise the "run" method will not return until the user focuses some - // other app. The activate step is necessary if we are not the active app. - // This is a big hack, but it seems to do the trick. - [NSApp activateIgnoringOtherApps:YES]; - [NSApp hide:self]; - [NSApp stop:self]; - } - - float progress = sProgressVal; - - [progressBar setDoubleValue:(double)progress]; -} - -// leave this as returning a BOOL instead of NSApplicationTerminateReply -// for backward compatibility -- (BOOL)applicationShouldTerminate:(NSApplication *)sender -{ - return sQuit; -} - -@end - -int -InitProgressUI(int *pargc, char ***pargv) -{ - sUpdatePath = (*pargv)[1]; - - return 0; -} - -int -ShowProgressUI(bool indeterminate) -{ - // Only show the Progress UI if the process is taking a significant amount of - // time where a significant amount of time is defined as .5 seconds after - // ShowProgressUI is called sProgress is less than 70. - usleep(500000); - - if (sQuit || sProgressVal > 70.0f) - return 0; - - char path[PATH_MAX]; - SprintfLiteral(path, "%s/updater.ini", sUpdatePath); - if (ReadStrings(path, &sLabels) != OK) - return -1; - - // Continue the update without showing the Progress UI if any of the supplied - // strings are larger than MAX_TEXT_LEN (Bug 628829). - if (!(strlen(sLabels.title) < MAX_TEXT_LEN - 1 && - strlen(sLabels.info) < MAX_TEXT_LEN - 1)) - return -1; - - sIndeterminate = indeterminate; - [NSApplication sharedApplication]; - [NSBundle loadNibNamed:@"MainMenu" owner:NSApp]; - [NSApp run]; - - return 0; -} - -// Called on a background thread -void -QuitProgressUI() -{ - sQuit = YES; -} - -// Called on a background thread -void -UpdateProgressUI(float progress) -{ - sProgressVal = progress; // 32-bit writes are atomic -} diff --git a/toolkit/mozapps/update/updater/updater-common.build b/toolkit/mozapps/update/updater/updater-common.build index 0e5521329f..a46c1388cc 100644 --- a/toolkit/mozapps/update/updater/updater-common.build +++ b/toolkit/mozapps/update/updater/updater-common.build @@ -72,24 +72,6 @@ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: 'progressui_gtk.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - have_progressui = 1 - srcs += [ - 'launchchild_osx.mm', - 'progressui_osx.mm', - ] - OS_LIBS += [ - '-framework Cocoa', - '-framework Security', - '-framework SystemConfiguration', - ] - UNIFIED_SOURCES += [ - '/toolkit/xre/updaterfileutils_osx.mm', - ] - LOCAL_INCLUDES += [ - '/toolkit/xre', - ] - if have_progressui == 0: srcs += [ 'progressui_null.cpp', diff --git a/toolkit/system/osxproxy/ProxyUtils.h b/toolkit/system/osxproxy/ProxyUtils.h deleted file mode 100644 index d6e5ddbd45..0000000000 --- a/toolkit/system/osxproxy/ProxyUtils.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_toolkit_system_osxproxy_ProxyUtils_h -#define mozilla_toolkit_system_osxproxy_ProxyUtils_h - -#include "nsStringGlue.h" - -namespace mozilla { -namespace toolkit { -namespace system { - -bool IsHostProxyEntry(const nsACString& aHost, const nsACString& aOverride); - -} // namespace system -} // namespace toolkit -} // namespace mozilla - -#endif // mozilla_toolkit_system_osxproxy_ProxyUtils_h diff --git a/toolkit/system/osxproxy/ProxyUtils.mm b/toolkit/system/osxproxy/ProxyUtils.mm deleted file mode 100644 index 4e59f226a0..0000000000 --- a/toolkit/system/osxproxy/ProxyUtils.mm +++ /dev/null @@ -1,182 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ProxyUtils.h" -#include "nsTArray.h" -#include "prnetdb.h" -#include "prtypes.h" - -namespace mozilla { -namespace toolkit { -namespace system { - -/** - * Normalize the short IP form into the complete form. - * For example, it converts "192.168" into "192.168.0.0" - */ -static bool -NormalizeAddr(const nsACString& aAddr, nsCString& aNormalized) -{ - nsTArray addr; - if (!ParseString(aAddr, '.', addr)) { - return false; - } - aNormalized = ""; - for (uint32_t i = 0; i < 4; ++i) { - if (i != 0) { - aNormalized.Append("."); - } - if (i < addr.Length()) { - aNormalized.Append(addr[i]); - } else { - aNormalized.Append("0"); - } - } - return true; -} - -static PRUint32 -MaskIPv4Addr(PRUint32 aAddr, uint16_t aMaskLen) -{ - if (aMaskLen == 32) { - return aAddr; - } - return PR_htonl(PR_ntohl(aAddr) & (~0L << (32 - aMaskLen))); -} - -static void -MaskIPv6Addr(PRIPv6Addr& aAddr, uint16_t aMaskLen) -{ - if (aMaskLen == 128) { - return; - } - - if (aMaskLen > 96) { - aAddr.pr_s6_addr32[3] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[3]) & (~0L << (128 - aMaskLen))); - } else if (aMaskLen > 64) { - aAddr.pr_s6_addr32[3] = 0; - aAddr.pr_s6_addr32[2] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[2]) & (~0L << (96 - aMaskLen))); - } else if (aMaskLen > 32) { - aAddr.pr_s6_addr32[3] = 0; - aAddr.pr_s6_addr32[2] = 0; - aAddr.pr_s6_addr32[1] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[1]) & (~0L << (64 - aMaskLen))); - } else { - aAddr.pr_s6_addr32[3] = 0; - aAddr.pr_s6_addr32[2] = 0; - aAddr.pr_s6_addr32[1] = 0; - aAddr.pr_s6_addr32[0] = PR_htonl( - PR_ntohl(aAddr.pr_s6_addr32[0]) & (~0L << (32 - aMaskLen))); - } - - return; -} - -static bool -IsMatchMask(const nsACString& aHost, const nsACString& aOverride) -{ - nsresult rv; - - auto tokenEnd = aOverride.FindChar('/'); - if (tokenEnd == -1) { - return false; - } - - nsAutoCString prefixStr(Substring(aOverride, - tokenEnd + 1, - aOverride.Length() - tokenEnd - 1)); - auto maskLen = prefixStr.ToInteger(&rv); - if (NS_WARN_IF(NS_FAILED(rv))) { - return false; - } - - nsAutoCString override(aOverride); - if (!NormalizeAddr(Substring(aOverride, 0, tokenEnd), override)) { - return false; - } - - PRNetAddr prAddrHost; - PRNetAddr prAddrOverride; - if (PR_SUCCESS != PR_StringToNetAddr(PromiseFlatCString(aHost).get(), - &prAddrHost) || - PR_SUCCESS != PR_StringToNetAddr(override.get(), - &prAddrOverride)) { - return false; - } - - if (prAddrHost.raw.family == PR_AF_INET && - prAddrOverride.raw.family == PR_AF_INET) { - return MaskIPv4Addr(prAddrHost.inet.ip, maskLen) == - MaskIPv4Addr(prAddrOverride.inet.ip, maskLen); - } - else if (prAddrHost.raw.family == PR_AF_INET6 && - prAddrOverride.raw.family == PR_AF_INET6) { - MaskIPv6Addr(prAddrHost.ipv6.ip, maskLen); - MaskIPv6Addr(prAddrOverride.ipv6.ip, maskLen); - - return memcmp(&prAddrHost.ipv6.ip, - &prAddrOverride.ipv6.ip, - sizeof(PRIPv6Addr)) == 0; - } - - return false; -} - -static bool -IsMatchWildcard(const nsACString& aHost, const nsACString& aOverride) -{ - nsAutoCString host(aHost); - nsAutoCString override(aOverride); - - int32_t overrideLength = override.Length(); - int32_t tokenStart = 0; - int32_t offset = 0; - bool star = false; - - while (tokenStart < overrideLength) { - int32_t tokenEnd = override.FindChar('*', tokenStart); - if (tokenEnd == tokenStart) { - // Star is the first character in the token. - star = true; - tokenStart++; - // If the character following the '*' is a '.' character then skip - // it so that "*.foo.com" allows "foo.com". - if (override.FindChar('.', tokenStart) == tokenStart) { - nsAutoCString token(Substring(override, - tokenStart + 1, - overrideLength - tokenStart - 1)); - if (host.Equals(token)) { - return true; - } - } - } else { - if (tokenEnd == -1) { - tokenEnd = overrideLength; // no '*' char, match rest of string - } - nsAutoCString token(Substring(override, tokenStart, tokenEnd - tokenStart)); - offset = host.Find(token, offset); - if (offset == -1 || (!star && offset)) { - return false; - } - star = false; - tokenStart = tokenEnd; - offset += token.Length(); - } - } - - return (star || (offset == static_cast(host.Length()))); -} - -bool -IsHostProxyEntry(const nsACString& aHost, const nsACString& aOverride) -{ - return IsMatchMask(aHost, aOverride) || IsMatchWildcard(aHost, aOverride); -} - -} // namespace system -} // namespace toolkit -} // namespace mozilla diff --git a/toolkit/system/osxproxy/moz.build b/toolkit/system/osxproxy/moz.build deleted file mode 100644 index 64a01ce6b8..0000000000 --- a/toolkit/system/osxproxy/moz.build +++ /dev/null @@ -1,13 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -TEST_DIRS += ['tests/gtest'] - -SOURCES += [ - 'nsOSXSystemProxySettings.mm', - 'ProxyUtils.mm', -] - -FINAL_LIBRARY = 'xul' diff --git a/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm b/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm deleted file mode 100644 index 77fd2e482c..0000000000 --- a/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm +++ /dev/null @@ -1,326 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#import -#import - -#include "nsISystemProxySettings.h" -#include "mozilla/ModuleUtils.h" -#include "nsIServiceManager.h" -#include "nsPrintfCString.h" -#include "nsNetCID.h" -#include "nsISupportsPrimitives.h" -#include "nsIURI.h" -#include "nsObjCExceptions.h" -#include "mozilla/Attributes.h" -#include "ProxyUtils.h" - -class nsOSXSystemProxySettings final : public nsISystemProxySettings { -public: - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSISYSTEMPROXYSETTINGS - - nsOSXSystemProxySettings(); - nsresult Init(); - - // called by OSX when the proxy settings have changed - void ProxyHasChanged(); - - // is there a PAC url specified in the system configuration - bool IsAutoconfigEnabled() const; - // retrieve the pac url - nsresult GetAutoconfigURL(nsAutoCString& aResult) const; - - // Find the SystemConfiguration proxy & port for a given URI - nsresult FindSCProxyPort(const nsACString &aScheme, nsACString& aResultHost, int32_t& aResultPort, bool& aResultSocksProxy); - - // is host:port on the proxy exception list? - bool IsInExceptionList(const nsACString& aHost) const; - -private: - ~nsOSXSystemProxySettings(); - - SCDynamicStoreContext mContext; - SCDynamicStoreRef mSystemDynamicStore; - NSDictionary* mProxyDict; - - - // Mapping of URI schemes to SystemConfiguration keys - struct SchemeMapping { - const char* mScheme; - CFStringRef mEnabled; - CFStringRef mHost; - CFStringRef mPort; - bool mIsSocksProxy; - }; - static const SchemeMapping gSchemeMappingList[]; -}; - -NS_IMPL_ISUPPORTS(nsOSXSystemProxySettings, nsISystemProxySettings) - -NS_IMETHODIMP -nsOSXSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly) -{ - *aMainThreadOnly = true; - return NS_OK; -} - -// Mapping of URI schemes to SystemConfiguration keys -const nsOSXSystemProxySettings::SchemeMapping nsOSXSystemProxySettings::gSchemeMappingList[] = { - {"http", kSCPropNetProxiesHTTPEnable, kSCPropNetProxiesHTTPProxy, kSCPropNetProxiesHTTPPort, false}, - {"https", kSCPropNetProxiesHTTPSEnable, kSCPropNetProxiesHTTPSProxy, kSCPropNetProxiesHTTPSPort, false}, - {"ftp", kSCPropNetProxiesFTPEnable, kSCPropNetProxiesFTPProxy, kSCPropNetProxiesFTPPort, false}, - {"socks", kSCPropNetProxiesSOCKSEnable, kSCPropNetProxiesSOCKSProxy, kSCPropNetProxiesSOCKSPort, true}, - {NULL, NULL, NULL, NULL, false}, -}; - -static void -ProxyHasChangedWrapper(SCDynamicStoreRef aStore, CFArrayRef aChangedKeys, void* aInfo) -{ - static_cast(aInfo)->ProxyHasChanged(); -} - - -nsOSXSystemProxySettings::nsOSXSystemProxySettings() - : mSystemDynamicStore(NULL), mProxyDict(NULL) -{ - mContext = (SCDynamicStoreContext){0, this, NULL, NULL, NULL}; -} - -nsresult -nsOSXSystemProxySettings::Init() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - // Register for notification of proxy setting changes - // See: http://developer.apple.com/documentation/Networking/Conceptual/CFNetwork/CFStreamTasks/chapter_4_section_5.html - mSystemDynamicStore = SCDynamicStoreCreate(NULL, CFSTR("Mozilla"), ProxyHasChangedWrapper, &mContext); - if (!mSystemDynamicStore) - return NS_ERROR_FAILURE; - - // Set up the store to monitor any changes to the proxies - CFStringRef proxiesKey = SCDynamicStoreKeyCreateProxies(NULL); - if (!proxiesKey) - return NS_ERROR_FAILURE; - - CFArrayRef keyArray = CFArrayCreate(NULL, (const void**)(&proxiesKey), 1, &kCFTypeArrayCallBacks); - CFRelease(proxiesKey); - if (!keyArray) - return NS_ERROR_FAILURE; - - SCDynamicStoreSetNotificationKeys(mSystemDynamicStore, keyArray, NULL); - CFRelease(keyArray); - - // Add the dynamic store to the run loop - CFRunLoopSourceRef storeRLSource = SCDynamicStoreCreateRunLoopSource(NULL, mSystemDynamicStore, 0); - if (!storeRLSource) - return NS_ERROR_FAILURE; - CFRunLoopAddSource(CFRunLoopGetCurrent(), storeRLSource, kCFRunLoopCommonModes); - CFRelease(storeRLSource); - - // Load the initial copy of proxy info - mProxyDict = (NSDictionary*)SCDynamicStoreCopyProxies(mSystemDynamicStore); - if (!mProxyDict) - return NS_ERROR_FAILURE; - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -nsOSXSystemProxySettings::~nsOSXSystemProxySettings() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [mProxyDict release]; - - if (mSystemDynamicStore) { - // Invalidate the dynamic store's run loop source - // to get the store out of the run loop - CFRunLoopSourceRef rls = SCDynamicStoreCreateRunLoopSource(NULL, mSystemDynamicStore, 0); - if (rls) { - CFRunLoopSourceInvalidate(rls); - CFRelease(rls); - } - CFRelease(mSystemDynamicStore); - } - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - - -void -nsOSXSystemProxySettings::ProxyHasChanged() -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - - [mProxyDict release]; - mProxyDict = (NSDictionary*)SCDynamicStoreCopyProxies(mSystemDynamicStore); - - NS_OBJC_END_TRY_ABORT_BLOCK; -} - -nsresult -nsOSXSystemProxySettings::FindSCProxyPort(const nsACString &aScheme, nsACString& aResultHost, int32_t& aResultPort, bool& aResultSocksProxy) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - NS_ENSURE_TRUE(mProxyDict != NULL, NS_ERROR_FAILURE); - - for (const SchemeMapping* keys = gSchemeMappingList; keys->mScheme != NULL; ++keys) { - // Check for matching scheme (when appropriate) - if (strcasecmp(keys->mScheme, PromiseFlatCString(aScheme).get()) && - !keys->mIsSocksProxy) - continue; - - // Check the proxy is enabled - NSNumber* enabled = [mProxyDict objectForKey:(NSString*)keys->mEnabled]; - NS_ENSURE_TRUE(enabled == NULL || [enabled isKindOfClass:[NSNumber class]], NS_ERROR_FAILURE); - if ([enabled intValue] == 0) - continue; - - // Get the proxy host - NSString* host = [mProxyDict objectForKey:(NSString*)keys->mHost]; - if (host == NULL) - break; - NS_ENSURE_TRUE([host isKindOfClass:[NSString class]], NS_ERROR_FAILURE); - aResultHost.Assign([host UTF8String]); - - // Get the proxy port - NSNumber* port = [mProxyDict objectForKey:(NSString*)keys->mPort]; - NS_ENSURE_TRUE([port isKindOfClass:[NSNumber class]], NS_ERROR_FAILURE); - aResultPort = [port intValue]; - - aResultSocksProxy = keys->mIsSocksProxy; - - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -bool -nsOSXSystemProxySettings::IsAutoconfigEnabled() const -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - NSNumber* value = [mProxyDict objectForKey:(NSString*)kSCPropNetProxiesProxyAutoConfigEnable]; - NS_ENSURE_TRUE(value == NULL || [value isKindOfClass:[NSNumber class]], false); - return ([value intValue] != 0); - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false); -} - -nsresult -nsOSXSystemProxySettings::GetAutoconfigURL(nsAutoCString& aResult) const -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - NSString* value = [mProxyDict objectForKey:(NSString*)kSCPropNetProxiesProxyAutoConfigURLString]; - if (value != NULL) { - NS_ENSURE_TRUE([value isKindOfClass:[NSString class]], NS_ERROR_FAILURE); - aResult.Assign([value UTF8String]); - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -bool -nsOSXSystemProxySettings::IsInExceptionList(const nsACString& aHost) const -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_RETURN; - - NS_ENSURE_TRUE(mProxyDict != NULL, false); - - NSArray* exceptionList = [mProxyDict objectForKey:(NSString*)kSCPropNetProxiesExceptionsList]; - NS_ENSURE_TRUE(exceptionList == NULL || [exceptionList isKindOfClass:[NSArray class]], false); - - NSEnumerator* exceptionEnumerator = [exceptionList objectEnumerator]; - NSString* currentValue = NULL; - while ((currentValue = [exceptionEnumerator nextObject])) { - NS_ENSURE_TRUE([currentValue isKindOfClass:[NSString class]], false); - nsAutoCString overrideStr([currentValue UTF8String]); - if (mozilla::toolkit::system::IsHostProxyEntry(aHost, overrideStr)) - return true; - } - - NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(false); -} - -nsresult -nsOSXSystemProxySettings::GetPACURI(nsACString& aResult) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - NS_ENSURE_TRUE(mProxyDict != NULL, NS_ERROR_FAILURE); - - nsAutoCString pacUrl; - if (IsAutoconfigEnabled() && NS_SUCCEEDED(GetAutoconfigURL(pacUrl))) { - aResult.Assign(pacUrl); - return NS_OK; - } - - return NS_ERROR_FAILURE; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -nsresult -nsOSXSystemProxySettings::GetProxyForURI(const nsACString & aSpec, - const nsACString & aScheme, - const nsACString & aHost, - const int32_t aPort, - nsACString & aResult) -{ - NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - - int32_t proxyPort; - nsAutoCString proxyHost; - bool proxySocks; - nsresult rv = FindSCProxyPort(aScheme, proxyHost, proxyPort, proxySocks); - - if (NS_FAILED(rv) || IsInExceptionList(aHost)) { - aResult.AssignLiteral("DIRECT"); - } else if (proxySocks) { - aResult.Assign(NS_LITERAL_CSTRING("SOCKS ") + proxyHost + nsPrintfCString(":%d", proxyPort)); - } else { - aResult.Assign(NS_LITERAL_CSTRING("PROXY ") + proxyHost + nsPrintfCString(":%d", proxyPort)); - } - - return NS_OK; - - NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; -} - -#define NS_OSXSYSTEMPROXYSERVICE_CID /* 9afcd4b8-2e0f-41f4-8f1f-3bf0d3cf67de */\ - { 0x9afcd4b8, 0x2e0f, 0x41f4, \ - { 0x8f, 0x1f, 0x3b, 0xf0, 0xd3, 0xcf, 0x67, 0xde } } - -NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsOSXSystemProxySettings, Init); -NS_DEFINE_NAMED_CID(NS_OSXSYSTEMPROXYSERVICE_CID); - -static const mozilla::Module::CIDEntry kOSXSysProxyCIDs[] = { - { &kNS_OSXSYSTEMPROXYSERVICE_CID, false, NULL, nsOSXSystemProxySettingsConstructor }, - { NULL } -}; - -static const mozilla::Module::ContractIDEntry kOSXSysProxyContracts[] = { - { NS_SYSTEMPROXYSETTINGS_CONTRACTID, &kNS_OSXSYSTEMPROXYSERVICE_CID }, - { NULL } -}; - -static const mozilla::Module kOSXSysProxyModule = { - mozilla::Module::kVersion, - kOSXSysProxyCIDs, - kOSXSysProxyContracts -}; - -NSMODULE_DEFN(nsOSXProxyModule) = &kOSXSysProxyModule; diff --git a/toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp b/toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp deleted file mode 100644 index 7903491090..0000000000 --- a/toolkit/system/osxproxy/tests/gtest/TestProxyBypassRules.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "gtest/gtest.h" -#include "ProxyUtils.h" - -using namespace mozilla::toolkit::system; - -TEST(OSXProxy, TestProxyBypassRules) -{ - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("mozilla.org"), NS_LITERAL_CSTRING("mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("mozilla.org"),NS_LITERAL_CSTRING("*mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("mozilla.org"), NS_LITERAL_CSTRING("*.mozilla.org"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("notmozilla.org"), NS_LITERAL_CSTRING("*.mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("www.mozilla.org"), NS_LITERAL_CSTRING("*mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("www.mozilla.org"), NS_LITERAL_CSTRING("*.mozilla.org"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("www.mozilla.com"), NS_LITERAL_CSTRING("*.mozilla.*"))); -} - -TEST(OSXProxy, TestProxyBypassRulesIPv4) -{ - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.1.1"), NS_LITERAL_CSTRING("192.168.1.*"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.1.1"), NS_LITERAL_CSTRING("192.168.2.*"))); - - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("10.1.2.3"), NS_LITERAL_CSTRING("10.0.0.0/8"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.192.1"), NS_LITERAL_CSTRING("192.168/16"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.192.1"), NS_LITERAL_CSTRING("192.168/17"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.192.1"), NS_LITERAL_CSTRING("192.168.128/17"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("192.168.1.1"), NS_LITERAL_CSTRING("192.168.1.1/32"))); -} - -TEST(OSXProxy, TestProxyBypassRulesIPv6) -{ - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0123:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/64"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0000:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/80"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0123:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/80"))); - EXPECT_TRUE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0000:0000:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/96"))); - EXPECT_FALSE(IsHostProxyEntry(NS_LITERAL_CSTRING("2001:0DB8:ABCD:0012:0123:4567:89AB:CDEF"), NS_LITERAL_CSTRING("2001:db8:abcd:0012::0/96"))); -} diff --git a/toolkit/system/osxproxy/tests/gtest/moz.build b/toolkit/system/osxproxy/tests/gtest/moz.build deleted file mode 100644 index 94768a204e..0000000000 --- a/toolkit/system/osxproxy/tests/gtest/moz.build +++ /dev/null @@ -1,17 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, you can obtain one at http://mozilla.org/MPL/2.0/. - -UNIFIED_SOURCES += [ - 'TestProxyBypassRules.cpp', -] - -LOCAL_INCLUDES += [ - '/toolkit/system/osxproxy', -] - -FINAL_LIBRARY = 'xul-gtest' - -if CONFIG['GNU_CXX']: - CXXFLAGS += ['-Wshadow'] diff --git a/toolkit/themes/moz.build b/toolkit/themes/moz.build index 74f53391e2..b24036f1a0 100644 --- a/toolkit/themes/moz.build +++ b/toolkit/themes/moz.build @@ -21,9 +21,7 @@ if CONFIG['MOZ_PHOENIX']: else: app = CONFIG['MOZ_BUILD_APP'] -if toolkit == 'cocoa': - DIRS += ['osx'] -elif toolkit in ('gtk2', 'gtk3'): +if toolkit in ('gtk2', 'gtk3'): DIRS += ['linux'] else: DIRS += ['windows'] diff --git a/toolkit/themes/osx/global/10pct_transparent_grey.png b/toolkit/themes/osx/global/10pct_transparent_grey.png deleted file mode 100644 index 01f2edd9f4f8ba7bc193252aa2f2240934d6782c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blmUKs7M+Sy#H?H_c7y@z$Dnyzf%3} UrbUGgx3uT4$a);iz+i0+0KpFxO8@`> diff --git a/toolkit/themes/osx/global/arrow/arrow-dn-dis.png b/toolkit/themes/osx/global/arrow/arrow-dn-dis.png deleted file mode 100644 index a202fd85c9d8082f36b94f2570a7882b51bc9042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=mUKs7M+SzCeKo%WCjBFLsy8xes4ohdPgQu&X%Q~loCII_3KMw!^ diff --git a/toolkit/themes/osx/global/arrow/arrow-dn-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-dn-sharp.gif deleted file mode 100644 index 206d7c19dd524614e18f807aef483c5ca6aab515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 wcmZ?wbhEHbjEB<5wG8q|kKzxu40~3Ew|H{*{49Xrwt8T2h{YQks F8USKu4vhc+ diff --git a/toolkit/themes/osx/global/arrow/arrow-dn.png b/toolkit/themes/osx/global/arrow/arrow-dn.png deleted file mode 100644 index 91486a3e9a6d11e9742a74b0c7ecdb0bf0a131a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=mUKs7M+SzCeKo%WCj8x3^>>IyiDa;pFIq~7mP2=`;>(+htpKrI7{o}zV khciEZeop5W;C;l*(Bfl$_24RoMxbR3p00i_>zopr0JCRCy8r+H diff --git a/toolkit/themes/osx/global/arrow/arrow-lft-dis.gif b/toolkit/themes/osx/global/arrow/arrow-lft-dis.gif deleted file mode 100644 index 33243517b1b588c92dd307b74cf89fcec63ec5f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmZ?wbhEHbjEB<5wG8q|kKzxu40~5bXUBU|Ky$dD^Zfcu%YCQvk FH2_{D4iW$W diff --git a/toolkit/themes/osx/global/arrow/arrow-lft-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-lft-sharp.gif deleted file mode 100644 index ae9b1dd0fb6ab5c5ed2f6b991a2f15d768707a7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmZ?wbhEHbWM$xFXkcUjg8%>jEB<5wG8q|kKzxu40~1dVGkfQ4?pTum!zcy@YXBnM B3P}I} diff --git a/toolkit/themes/osx/global/arrow/arrow-lft.gif b/toolkit/themes/osx/global/arrow/arrow-lft.gif deleted file mode 100644 index c5c362d89b19dadd509869efa700a2dedcbffa3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmZ?wbhEHb!5RQCl@!ka diff --git a/toolkit/themes/osx/global/arrow/arrow-rit-hov.gif b/toolkit/themes/osx/global/arrow/arrow-rit-hov.gif deleted file mode 100644 index 5010921adc6cdd64d5d2a489ac8f989e5127d40c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmZ?wbhEHbjEB<5wG8q|kKzxu40~5bX-2#bSFMYb(4w4Tt~$ diff --git a/toolkit/themes/osx/global/arrow/arrow-rit-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-rit-sharp.gif deleted file mode 100644 index ca628ba69bdcd33fa6d77e0e5deaeca7c0a143c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmZ?wbhEHbWM$xFXkcUjg8%>jEB<5wG8q|kKzxu40~3#nT*C6(-;#oIR7JQLtN|`@ B3v~bh diff --git a/toolkit/themes/osx/global/arrow/arrow-rit.gif b/toolkit/themes/osx/global/arrow/arrow-rit.gif deleted file mode 100644 index dce39aecc1887e897d4b23e7272bf7f977b6064a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmZ?wbhEHb@z$DbuzfyB= U{;ZM>P9N3$7E~v&vNBi$0Jv)uO8@`> diff --git a/toolkit/themes/osx/global/arrow/arrow-up-sharp.gif b/toolkit/themes/osx/global/arrow/arrow-up-sharp.gif deleted file mode 100644 index 883a4f95ca178e01f7559013b6124b54532e771f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52 zcmZ?wbhEHbjEB<5wG8q|kKzxu40~2=-^YQ~-cX;OHA7Wy#1^_3P B3=RMQ diff --git a/toolkit/themes/osx/global/arrow/arrow-up.gif b/toolkit/themes/osx/global/arrow/arrow-up.gif deleted file mode 100644 index b8e09b21b8786b5ea51db8504457d2e65b130e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmZ?wbhEHb&g^9! QKyw&8UHx3vIVCg!015>oNB{r; diff --git a/toolkit/themes/osx/global/arrow/panelarrow-horizontal@2x.png b/toolkit/themes/osx/global/arrow/panelarrow-horizontal@2x.png deleted file mode 100644 index 4cb7353e7053969f420a6f58bfffc6806ec2826c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdWfP)Yx$~4uh zu@#7EV4IrC)z}Wk6fB2f3Lehw@x} diff --git a/toolkit/themes/osx/global/arrow/panelarrow-vertical.png b/toolkit/themes/osx/global/arrow/panelarrow-vertical.png deleted file mode 100644 index 3986f9cbf5355316442bc14c898affbb3a1d50e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&L!2%?OosMY%DIZT4$B+uf)boy92NZZ*E=I2U zBGY>3e^slAK!(+ypWLGN+!D)=TAsYsxw!tH#;1^(+S8WptZU&(xzV?F9lt=jN{Z6P hU&|Fz!aG{tur9v8-F%;8Ss>6{22WQ%mvv4FO#ozkFF^nR diff --git a/toolkit/themes/osx/global/arrow/panelarrow-vertical@2x.png b/toolkit/themes/osx/global/arrow/panelarrow-vertical@2x.png deleted file mode 100644 index a741dd0e16b75535ef0bc5eaceb7adfcc41fbd50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmV<90382`P)*BN%IQ!rOeuvUD1H-^1%`-PjDmt-BtO toolbaritem > textbox > hbox > hbox > html|*.textbox-input { - visibility: hidden; -} - -toolbarpaletteitem > toolbaritem > * > textbox > hbox > hbox > html|*.textbox-input { - visibility: hidden; -} diff --git a/toolkit/themes/osx/global/button.css b/toolkit/themes/osx/global/button.css deleted file mode 100644 index 45f292e1f1..0000000000 --- a/toolkit/themes/osx/global/button.css +++ /dev/null @@ -1,85 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -button { - -moz-appearance: button; - /* The horizontal margin used here come from the Aqua Human Interface - Guidelines, there should be 12 pixels between two buttons. */ - margin: 5px 6px 3px; - min-width: 79px; - color: ButtonText; - text-shadow: none; -} - -button:not([disabled="true"]):hover:active { - color: -moz-mac-buttonactivetext; -} - -/* When the window isn't focused, the default button background isn't drawn, - * so don't change the text color then: */ -button[default="true"]:not([disabled="true"]):not(:-moz-window-inactive) { - color: -moz-mac-defaultbuttontext; -} - -/* Likewise, when active (mousedown) but not hovering, the default button - * background isn't drawn, override the previous selector for that case: */ -button[default="true"]:not(:hover):active { - color: ButtonText; -} - -.button-text { - margin: 1px 0 !important; - margin-inline-start: 3px !important; - margin-inline-end: 2px !important; - text-align: center; -} - -.button-icon { - margin-inline-start: 1px; -} - -button[type="default"] { - font: menu; -} - -/* .......... disabled state .......... */ - -button[disabled="true"] { - color: GrayText; -} - -/* ::::: menu/menu-button buttons ::::: */ - -button[type="menu-button"] { - margin: 0; - border: none; -} - -.button-menu-dropmarker, -.button-menubutton-dropmarker { - -moz-appearance: none !important; - border: none; - background-color: transparent !important; - margin: 1px; -} - -.button-menu-dropmarker { - display: none; -} - -/* ::::: plain buttons ::::: */ - -button.plain { - margin: 0 !important; - padding: 0 !important; -} - -/* ::::: help button ::::: */ - -button[dlgtype="help"] { - -moz-appearance: -moz-mac-help-button; - width: 20px; -} diff --git a/toolkit/themes/osx/global/checkbox.css b/toolkit/themes/osx/global/checkbox.css deleted file mode 100644 index b49af98d04..0000000000 --- a/toolkit/themes/osx/global/checkbox.css +++ /dev/null @@ -1,39 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -checkbox { - -moz-appearance: checkbox-container; - -moz-box-align: center; - margin: 4px 2px; -} - -.checkbox-icon { - margin-right: 2px; -} - -.checkbox-label { - margin: 1px 0 !important; -} - -/* ..... disabled state ..... */ - -checkbox[disabled="true"] { - color: GrayText !important; -} - -/* ::::: checkmark image ::::: */ - -.checkbox-check { - -moz-appearance: checkbox; - margin: 1px 1px 0; - /* vertical-align tells native theming where to snap to. However, this doesn't - * always work reliably because of bug 503833. */ - vertical-align: top; - width: 1.3em; - height: 1.3em; -} - - diff --git a/toolkit/themes/osx/global/checkbox/cbox-check-dis.gif b/toolkit/themes/osx/global/checkbox/cbox-check-dis.gif deleted file mode 100644 index bd43dd17c3bd07b1787baca148442ec777797d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60 zcmZ?wbhEHbWM^P!X!y@?;J|@~h6cr-EQ}05paUX6G7d~UE%GbHX4EJ}bB6>lFj#vT KMK9N8um%9ts19BL diff --git a/toolkit/themes/osx/global/checkbox/cbox-check.gif b/toolkit/themes/osx/global/checkbox/cbox-check.gif deleted file mode 100644 index f6919f8fade6ee12fe5010e3280a39e5167a86e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZ?wbhEHbWM^P!X!y@?;J^U}1_s5SEQ~;kK?g*DWE_}yTI5%X&8Sg|<_-y9V6e6Z E082ItH2?qr diff --git a/toolkit/themes/osx/global/colorpicker.css b/toolkit/themes/osx/global/colorpicker.css deleted file mode 100644 index 075437db89..0000000000 --- a/toolkit/themes/osx/global/colorpicker.css +++ /dev/null @@ -1,41 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* ::::: colorpicker button ::::: */ - -colorpicker[type="button"] { - width: 38px; - height: 24px; - border: 1px solid #a7a7a7; - background-color: ThreeDFace; - padding: 3px; - -moz-appearance: button-bevel; -} - -.colorpicker-button-colorbox { - border: 1px solid #000000; -} - -/* ::::: colorpicker tiles ::::: */ - -.colorpickertile { - width : 20px; - height : 20px; - margin : 1px; -} - -.colorpickertile[selected="true"] { - border : 1px outset #C0C0C0; - -} - -.colorpickertile[hover="true"] { - border : 1px dotted #A7A7A7; -} - -.cp-light[hover="true"] { - border : 1px dotted #000000; -} diff --git a/toolkit/themes/osx/global/commonDialog.css b/toolkit/themes/osx/global/commonDialog.css deleted file mode 100644 index 53b02796d2..0000000000 --- a/toolkit/themes/osx/global/commonDialog.css +++ /dev/null @@ -1,35 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#commonDialog { - line-height: 13px; -} - -#filler { - margin: 0px -14px; -} - -#infoContainer { - max-width: 33em; -} - -#loginContainer { - padding-top: 10px; -} - -#info\.icon { - margin-inline-end: 14px; -} - -#info\.title, -#info\.header, -#info\.body { - font: menu; - line-height: 16px; - margin-bottom: 6px; -} - -#info\.title { - font-weight: bold; -} diff --git a/toolkit/themes/osx/global/console/console-error-caret.gif b/toolkit/themes/osx/global/console/console-error-caret.gif deleted file mode 100644 index a8f30f9263f49e8af6ed0d147103c604fcd67840..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZ?wbhEHbWM|-HXkcVuSQf~@z@Ye(1;}J%&;ha;Kr#$Wd_9Srt55TVPBLClrR&Yg GU=0BL015*D diff --git a/toolkit/themes/osx/global/console/console-error-dash.gif b/toolkit/themes/osx/global/console/console-error-dash.gif deleted file mode 100644 index 74679a25e24478b8784b00f920661a0b2b279f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 ycmZ?wbhEHbWM$xFXkcJqSQZE*6o0ZXGB7YQ=m6OaAQ=WG_MZNgr@7)87_0%hD+j~? diff --git a/toolkit/themes/osx/global/console/console.css b/toolkit/themes/osx/global/console/console.css deleted file mode 100644 index f18f6f680c..0000000000 --- a/toolkit/themes/osx/global/console/console.css +++ /dev/null @@ -1,165 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* ===== console.css ==================================================== - == Styles used by the Error Console window. - ======================================================================= */ - -/* View buttons */ -@import "chrome://global/skin/viewbuttons.css"; - -%include ../shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -.console-box { - background-color: -moz-Field; - color: -moz-FieldText; - overflow: auto; -} - -/* ::::: console rows ::::: */ - -.console-row { - border-bottom: 1px solid #A3A3A3; - padding: 4px; -} - -.console-row-file { - color: #505050; -} - -.console-row-msg > label:first-child { - font-weight: bold; -} - -.console-row-msg > label, .comsole-row-msg > description, .console-error-msg, .console-row-file, .console-row-code { - margin: 2px; -} - -.console-row-file > label { - margin: 0; -} - -.console-msg-text { - white-space: pre-wrap !important; -} -.console-icon { - list-style-image: inherit; - padding-right: 6px; - padding-left: 6px; -} - -/* ..... error rows ..... */ - -.console-row-code { - color: #0000BB; - font-size: larger; -} - -.console-dots, -.console-caret { - height: 9px; -} - -.console-dots { - background: url("chrome://global/skin/console/console-error-dash.gif") repeat-x top; -} - -.console-caret { - width: 7px; - background: url("chrome://global/skin/console/console-error-caret.gif") no-repeat top; -} - -/* ..... message rows ..... */ - -.console-row[type="message"] { - font-family: monospace; -} - -/* ..... selected state ..... */ - -.console-row[selected="true"] { - background-color: #3D80DF !important; - color: #FFF; -} - -.console-row-code[selected="true"], -.console-row-content[selected="true"] > .console-row-file, -.console-row-content[selected="true"] > .console-row-file > .console-error-source > .text-link { - color: #FFF !important; -} - -/* ::::: row colors ::::: */ - -.console-row[type="error"], -.console-row[type="exception"] { - background-color: #FFD0DC; -} - -.console-row[type="warning"] { - background-color: #F8F3CC; -} - -.console-row[type="message"] { - background-color: #D3EDFF; -} - -/* ::::: toolbars ::::: */ - -#ToolbarEval { - -moz-appearance: none; - background: @scopeBarBackground@; - border-bottom: @scopeBarSeparatorBorder@; - padding: 2px; -} - -#ToolbarEval > label { - font-weight: bold; - color: @scopeBarTitleColor@; -} - -#TextfieldEval { - margin: 2px !important; -} - -#ButtonEval { - margin: 0 4px; - padding: 1px 10px; - -moz-appearance: none; - border-radius: 10000px; - border: @roundButtonBorder@; - background: @roundButtonBackground@; - box-shadow: @roundButtonShadow@; -} - -#ButtonEval:hover:active { - text-shadow: @loweredShadow@; - background: @roundButtonPressedBackground@; - box-shadow: @roundButtonPressedShadow@; -} - -toolbarseparator { - min-height: 1em; - background-image: none; -} - -/* Toolbar icons */ - -#ToolbarMode { - -moz-box-pack: center; -} - -#ToolbarMode toolbarbutton > .toolbarbutton-icon { - display: none; -} - -#Console\:clear { - -moz-box-orient: vertical; - -moz-box-align: center; - -moz-appearance: toolbarbutton; - font: menu; - text-shadow: @loweredShadow@; - margin: 4px 0 9px; - padding: 0 1px; -} diff --git a/toolkit/themes/osx/global/customizeToolbar.css b/toolkit/themes/osx/global/customizeToolbar.css deleted file mode 100644 index bcedb2b99a..0000000000 --- a/toolkit/themes/osx/global/customizeToolbar.css +++ /dev/null @@ -1,38 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#palette-box { - margin-top: 2px; - -moz-appearance: listbox; - margin: 0 0 10px; -} - -#palette-box > toolbarpaletteitem { - padding: 8px 2px; - margin: 0 8px; -} - -#main-box { - padding: 12px; -} - -#main-box > separator { - -moz-appearance: none; - border-bottom: none; -} - -#instructions { - font: menu; - font-weight: bold; - line-height: 16pt; -} - -hbox button { - font: menu; -} - -#main-box > box > button { - min-height: 19px; /* aqua size for small buttons */ - font: message-box; -} diff --git a/toolkit/themes/osx/global/datetimepicker.css b/toolkit/themes/osx/global/datetimepicker.css deleted file mode 100644 index 3d7b201f2e..0000000000 --- a/toolkit/themes/osx/global/datetimepicker.css +++ /dev/null @@ -1,126 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -datepicker, timepicker { - padding: 0 0 1px; - margin: 4px; - border: none; -} - -.datetimepicker-input-box { - -moz-appearance: textfield; - cursor: text; - margin-right: 4px; - margin-bottom: 2px; - border: 3px solid; - -moz-border-top-colors: transparent #888888 #000000; - -moz-border-right-colors: transparent #FFFFFF #000000; - -moz-border-bottom-colors: transparent #FFFFFF #000000; - -moz-border-left-colors: transparent #888888 #000000; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - padding: 0px; - background-color: -moz-Field; - color: -moz-FieldText; -} - -.datetimepicker-input-subbox { - width: 1.6em; -} - -html|*.datetimepicker-input { - text-align: end; -} - -.datetimepicker-separator { - margin: 0 !important; -} - -.datetimepicker-year { - width: 3.2em; -} - -.datepicker-dropmarker { - margin-bottom: 2px; -} - -datepicker[readonly="true"], -timepicker[readonly="true"] { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -datepicker[disabled="true"], -timepicker[disabled="true"] { - cursor: default; - -moz-border-top-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-right-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-bottom-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-left-colors: transparent ThreeDShadow -moz-Dialog; - background-color: -moz-Dialog; - color: GrayText; -} - -.datepicker-mainbox { - margin: 2px 4px; - border: 2px solid; - -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow; - -moz-border-right-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow; - background-color: #EEEEEE; - color: -moz-DialogText; -} - -.datepicker-popupgrid > .datepicker-mainbox { - margin: 0; - border: none; -} - -.datepicker-gridlabel, .datepicker-weeklabel { - text-align: center; -} - -.datepicker-gridlabel[today="true"] { - background-color: darkgrey; - color: white; -} - -.datepicker-gridlabel[selected="true"] { - background-color: Highlight; - color: HighlightText; -} - -.datepicker-button { - -moz-appearance: none; - min-width: 8px; - padding: 0px; -} - -.datepicker-previous { - list-style-image: url("chrome://global/skin/arrow/arrow-lft.gif"); -} - -.datepicker-next { - list-style-image: url("chrome://global/skin/arrow/arrow-rit.gif"); -} - -.datepicker-previous:hover { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-hov.gif"); -} - -.datepicker-next:hover { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-hov.gif"); -} - -.datepicker-previous[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-dis.gif"); -} - -.datepicker-next[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-dis.gif"); -} diff --git a/toolkit/themes/osx/global/dialog.css b/toolkit/themes/osx/global/dialog.css deleted file mode 100644 index 98ed3ca207..0000000000 --- a/toolkit/themes/osx/global/dialog.css +++ /dev/null @@ -1,77 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -#commonDialog > image { - margin-inline-end: 14px !important; -} - -#commonDialog > .dialog-button-box { - margin-inline-start: 80px; -} - -dialog { - -moz-appearance: dialog; - padding: 14px; -} - -/* ::::: dialog buttons ::::: */ - -.dialog-button { - font: menu; -} - -/* ::::: dialog header ::::: */ - -dialogheader { - margin: 0 5px 5px; - padding: 5px 8px; -} - -.dialogheader-title { - margin: 0 !important; - font-size: larger; - font-weight: bold; - display: none; -} - -/* ::::: large dialog header ::::: */ - -.header-large { - -moz-box-orient: vertical; - margin: -14px -14px 0; - padding: 12px; - padding-inline-end: 5px; - padding-inline-start: 25px; -} - -.header-large > .dialogheader-title { - font: inherit; - font-weight: bold; -} - -.header-large > .dialogheader-description { - margin-left: 12px !important; -} - -.dialogheader-description { - font-weight: bold !important; -} - -.dialogheader-title { - font-weight: bold !important; -} - -/*XXX - belongs to toolkit/content/finddialog.xul: */ - -#findDialog, -#findDialog > menu, -#findDialog > groupbox { - font: menu !important; -} - -#dialog\.caseSensitive { - margin-top: 8px; -} diff --git a/toolkit/themes/osx/global/dirListing/dirListing.css b/toolkit/themes/osx/global/dirListing/dirListing.css deleted file mode 100644 index de881a5e4b..0000000000 --- a/toolkit/themes/osx/global/dirListing/dirListing.css +++ /dev/null @@ -1,104 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -:root { - background-color: -moz-dialog; - color: -moz-dialogtext; - font: message-box; - padding-left: 2em; - padding-right: 2em; -} - -body { - border: 1px solid ThreeDShadow; - border-radius: 10px; - padding: 3em; - min-width: 30em; - max-width: 65em; - margin: 4em auto; - background-color: -moz-field; - color: -moz-fieldtext; -} - -h1 { - font-size: 160%; - margin: 0 0 .6em; - border-bottom: 1px solid ThreeDLightShadow; - font-weight: normal; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -p { - font-size: 110%; -} - -#UI_goUp { - margin-top: 0; - float: left; -} - -#UI_goUp:dir(rtl) { - float: right; -} - -#UI_showHidden { - margin-top: 0; - float: right; -} - -#UI_showHidden:dir(rtl) { - float: left; -} - -table { - clear: both; - width: 90%; - margin: 0 auto; -} - -thead { - font-size: 130%; -} - -/* last modified */ -th:last-child { - text-align: center; -} - -th:hover > a { - text-decoration: underline; -} - -body > table > tbody > tr:hover { - outline: 1px solid ThreeDLightShadow; - -moz-outline-radius: .3em; -} - -/* let 'Size' and 'Last Modified' take only as much space as they need and 'Name' all the rest */ -td:not(:first-child) { - width: 0; -} - -.up { - padding: 0 .5em; - margin-inline-start: 20px; -} - -.up::before { - margin-inline-end: 4px; - margin-inline-start: -20px; - vertical-align: middle; - content: url(chrome://global/skin/dirListing/up.png); -} - -.dir::before { - content: url(chrome://global/skin/dirListing/folder.png); -} diff --git a/toolkit/themes/osx/global/dirListing/folder.png b/toolkit/themes/osx/global/dirListing/folder.png deleted file mode 100644 index eb3a607e03d2592b4ffd689cdfad5517dd1e765f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmV-L0lNN)P)z|0y&;=-w;AOi^+z!+NIckL?N~9^7R3 z|MwqW&D;Wlr&#{}`D@l*o`pr)8AIehoPdDFDT~a&UU>2TE5nc9e@F^ERu(2i82tM4 zm*MB{za$y(@85rf0Y8DZ|0K}`fBzx5;QOyXU`z^NVL~?GC+P+-Gch6z`1b2J!w(V- zU}9uMbpfei0M!o*gWuqoAjtsaqzsC}-y|AGbG1GwJ2c_Zjmv4Vkxos%fdKR&%<*wvp1vXBd8 z0Q0|p{}_I=@-h7WhpMnDBM?lt%~+2r!6VK9(gV^9GJplddG`y`CPqFRx&VfLV{&-LpFnjM>vDLz8%9~pgu-M1_qEGmH;GpBZl)G+9-bf2E;q@!~{ss_U+r5fxcnL1A1X1 z0~tU~O)Veff}al_Jh&kvBcqBO0ssI1XF`b)Mn+Ju|A+CPJb7{(q!;7@6(Dv5Vpu9t z*3{HAlaP?GKsMmTix(%ZU%!3|$h->``VPeVS%5a(0W$6YZ4iJOcHQ0G-ItAx4aK>? ze*F>$8n6Y(d=F9&)b{}-j_gcLP{xXhiHYan;80{@Vq!qXATf{}H1la9`xWNL!29>_ zuOlY#6crVNfcn;>8{hz>#E6W5S3rFSKn#EY0|2;^tp{Woh-v@;002ovPDHLkV1hV& B@z($V diff --git a/toolkit/themes/osx/global/dirListing/up.png b/toolkit/themes/osx/global/dirListing/up.png deleted file mode 100644 index 7af8949ad368f760d0f8208e574ee3ef9f24071c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmV-v0+#)WP) za-KW;Yi7rpS-HLCf(j1I@a=nV-hT6aGnSMR|1*eQW-i@%kaB*upRfse`1IDrbN^(Z zH`g0S3&c|El{WmVfi*LG`!)N~Y3$lRULe+2-b0G?kDJTe##%&h(YQH#VGH`?03v%! zHm==$+%QL2-|!J8ydV}LLG#_biH{#V565u}yi4q?R(grKK$PTjN8+rjODfGXnweXwbfPJyZ>mQfG?l445u|( z>xWT(4}4`%qmwvNJA}~pu@qe2vTgO!6%3clDA7^)L7W?eswe^u99jlREx17yLDvRn zS>?H;a8U&*Rg`ALXhY761{{|9qL4&@T07D8l&Dk6S{lM&((n{|t4Pw^K({5~SzEY} zp!QyLzEgFaiosHM$Y7eY5;6D|mKT~mAQc=jVfdJSLM$VdEJ2tuY<^*2?FHBl>1l^6 zqdITwQ*)%>bk9WffJ~)Rcr>;pKELU-b&`EB`z62tM+*yP3N>_Y00000NkvXXu0mjf D^;Z-D diff --git a/toolkit/themes/osx/global/dropmarker.css b/toolkit/themes/osx/global/dropmarker.css deleted file mode 100644 index 701eea75c4..0000000000 --- a/toolkit/themes/osx/global/dropmarker.css +++ /dev/null @@ -1,31 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -dropmarker { - -moz-appearance: menulist-button; - width: 16px; - -moz-box-align: center; - -moz-box-pack: center; - border: 2px solid; - -moz-border-top-colors: ThreeDLightShadow ThreeDHighlight; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDLightShadow ThreeDHighlight; - background-color: -moz-Dialog; - padding: 1px; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); - -moz-image-region: auto; -} - -dropmarker:hover:active:not([disabled="true"]) { - -moz-border-top-colors: ThreeDShadow ThreeDFace; - -moz-border-right-colors: ThreeDShadow ThreeDFace; - -moz-border-bottom-colors: ThreeDShadow ThreeDFace; - -moz-border-left-colors: ThreeDShadow ThreeDFace; - padding: 2px 0 0 2px; -} - -dropmarker[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.gif"); -} diff --git a/toolkit/themes/osx/global/filefield.css b/toolkit/themes/osx/global/filefield.css deleted file mode 100644 index 8ae3fdb52a..0000000000 --- a/toolkit/themes/osx/global/filefield.css +++ /dev/null @@ -1,38 +0,0 @@ -/* -# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -*/ - -.fileFieldIcon { - width: 16px; - height: 16px; -} - -.fileFieldIcon[disabled="true"] { - opacity: 0.5; -} - -filefield { - margin: 4px; - margin-inline-start: 27px; - -moz-appearance: textfield; -} - -.fileFieldContentBox { - margin: -3px; - background-color: rgba(230, 230, 230, 0.6); - color: -moz-DialogText; - padding-top: 2px; - padding-bottom: 2px; - padding-inline-start: 5px; - padding-inline-end: 3px; -} - -.fileFieldLabel { - -moz-appearance: none; - background-color: transparent; - border: none; - margin: 0 4px; -} diff --git a/toolkit/themes/osx/global/filters.svg b/toolkit/themes/osx/global/filters.svg deleted file mode 100644 index d3ad6a76b8..0000000000 --- a/toolkit/themes/osx/global/filters.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - diff --git a/toolkit/themes/osx/global/findBar.css b/toolkit/themes/osx/global/findBar.css deleted file mode 100644 index 869a624322..0000000000 --- a/toolkit/themes/osx/global/findBar.css +++ /dev/null @@ -1,270 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -findbar { - background: @scopeBarBackground@; - border-top: @scopeBarSeparatorBorder@; - min-width: 1px; - padding: 4px 2px; - transition-property: margin-bottom, opacity, visibility; - transition-duration: 150ms, 150ms, 0s; - transition-timing-function: ease-in-out, ease-in-out, linear; -} - -findbar[hidden] { - /* Override display:none to make the transition work. */ - display: -moz-box; - visibility: collapse; - margin-bottom: -1em; - opacity: 0; - transition-delay: 0s, 0s, 150ms; -} - -findbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-style: none; -} - -label.findbar-find-fast { - margin: 1px 3px 0 !important; - color: @scopeBarTitleColor@; - font-weight: bold; - text-shadow: @loweredShadow@; -} - -label.findbar-find-fast:-moz-lwtheme, -.findbar-find-status:-moz-lwtheme { - color: inherit; - text-shadow: inherit; -} - -.findbar-closebutton { - padding: 0; - margin: 0 4px; - border: none; -} - -.findbar-closebutton:-moz-lwtheme-brighttext { - list-style-image: url("chrome://global/skin/icons/close-inverted.png"); -} - -@media (min-resolution: 2dppx) { - .findbar-closebutton:-moz-lwtheme-brighttext { - list-style-image: url("chrome://global/skin/icons/close-inverted@2x.png"); - } - - .findbar-closebutton > .toolbarbutton-icon { - width: 16px; - } -} - -.findbar-find-next, -.findbar-find-previous, -.findbar-highlight { - margin: 0 4px; - padding: 1px 3px; - -moz-appearance: none; - border-radius: 10000px; - border: @roundButtonBorder@; - background: @roundButtonBackground@; - box-shadow: @roundButtonShadow@; - color: buttontext; -} - -.findbar-container > toolbarbutton:-moz-focusring { - position: relative; - box-shadow: @focusRingShadow@, @roundButtonShadow@; -} - -.findbar-container > toolbarbutton > .toolbarbutton-text { - margin: 0 6px !important; -} - -.findbar-container > toolbarbutton[disabled] { - color: GrayText !important; -} - -.findbar-find-next:not([disabled]):hover:active, -.findbar-find-previous:not([disabled]):hover:active, -.findbar-highlight:not([disabled]):hover:active { - text-shadow: @loweredShadow@; - background: @roundButtonPressedBackground@; - box-shadow: @roundButtonPressedShadow@; -} - -.findbar-container > toolbarbutton:hover:active:-moz-focusring { - text-shadow: @loweredShadow@; - background: @roundButtonPressedBackground@; - box-shadow: @focusRingShadow@, @roundButtonPressedShadow@; -} - -.findbar-closebutton > .toolbarbutton-text { - display: none; -} - -/* Match case checkbox */ - -.findbar-container > checkbox { - list-style-image: url("chrome://global/skin/icons/checkbox.png"); - -moz-image-region: rect(0px 16px 16px 0px); - -moz-appearance: none; - margin: 0 2px; - -moz-margin-start: 7px; -} - -.findbar-container > checkbox:hover:active { - -moz-image-region: rect(0px 32px 16px 16px); -} -.findbar-container > checkbox[checked] { - -moz-image-region: rect(0px 48px 16px 32px); -} -.findbar-container > checkbox[checked]:hover:active { - -moz-image-region: rect(0px 64px 16px 48px); -} - -@media (min-resolution: 2dppx) { - .findbar-container > checkbox { - list-style-image: url("chrome://global/skin/icons/checkbox@2x.png"); - -moz-image-region: rect(0px 32px 32px 0px); - } - - .findbar-container > checkbox:hover:active { - -moz-image-region: rect(0px 64px 32px 32px); - } - .findbar-container > checkbox[checked] { - -moz-image-region: rect(0px 96px 32px 64px); - } - .findbar-container > checkbox[checked]:hover:active { - -moz-image-region: rect(0px 128px 32px 96px); - } -} - - - -.findbar-container > checkbox > .checkbox-check { - display: none; -} - -.findbar-container > checkbox > .checkbox-label-box > .checkbox-label { - margin: 0 !important; - padding: 2px 0 0; -} - -.findbar-container > checkbox > .checkbox-label-box > .checkbox-icon { - -moz-padding-start: 1px; - padding-bottom: 1px; -} -@media (min-resolution: 2dppx) { - .findbar-container > checkbox > .checkbox-label-box > .checkbox-icon { - width: 17px; - height: 17px; - } -} - -.findbar-container > checkbox:-moz-focusring > .checkbox-label-box > .checkbox-icon { - border-radius: 4px; - box-shadow: @focusRingShadow@; -} - -/* Search field */ - -.findbar-textbox { - -moz-appearance: none; - border-radius: 10000px; - border: none; - box-shadow: 0 1px 1.5px rgba(0, 0, 0, .7) inset, - 0 0 0 1px rgba(0, 0, 0, .17) inset; - background: url("chrome://global/skin/icons/search-textbox.png") -moz-Field no-repeat 5px center; - margin: 0 4px -1px; - padding: 3px 8px 2px; - -moz-padding-start: 19px; -} - -.findbar-textbox:not([focused="true"]):-moz-lwtheme { - opacity: 0.9; -} - -.findbar-textbox[focused="true"] { - box-shadow: @focusRingShadow@, - 0 1px 1.5px rgba(0, 0, 0, .8) inset; -} - -.findbar-textbox[flash="true"] { - background-color: #F7E379; - color: #000; -} - -.findbar-textbox[status="notfound"] { - background-color: #FD919B; - color: #FFF; -} - -/* find-next button */ - -.findbar-find-next { - -moz-border-end: none; - -moz-margin-end: 0 !important; -} - -.findbar-find-next:-moz-locale-dir(ltr), -.findbar-find-previous:-moz-locale-dir(rtl) { - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} - -/* find-previous button */ - -.findbar-find-previous { - -moz-margin-start: 0 !important; -} - -.findbar-find-previous:-moz-locale-dir(ltr), -.findbar-find-next:-moz-locale-dir(rtl) { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -/* highlight button */ - -.findbar-highlight { - -moz-margin-start: 8px; -} - -.findbar-highlight > .toolbarbutton-icon { - width: 13px; - height: 8px; - margin: 0 4px; - -moz-margin-end: 0; - border: 1px solid #818181; - border-radius: 4px; - background-color: #F4F4F3; -} - - -.findbar-highlight[checked="true"] > .toolbarbutton-icon { - background-color: #FFFF00; - border-color: #818100; -} - -.find-status-icon { - display: none; -} - -.find-status-icon[status="pending"] { - display: block; - list-style-image: url("chrome://global/skin/icons/loading_16.png"); -} - -.findbar-find-status, -.found-matches { - color: #436599; - font-weight: bold; - text-shadow: 0 1px rgba(255, 255, 255, .4); - margin: 1px 1px 0 !important; - -moz-margin-start: 12px !important; -} diff --git a/toolkit/themes/osx/global/global.css b/toolkit/themes/osx/global/global.css deleted file mode 100644 index 261abe3138..0000000000 --- a/toolkit/themes/osx/global/global.css +++ /dev/null @@ -1,378 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* all localizable skin settings shall live here */ -@import url("chrome://global/locale/intl.css"); - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* ::::: XBL bindings ::::: */ - -menulist > menupopup { - -moz-binding: url("chrome://global/content/bindings/popup.xml#popup-scrollbars"); -} - -/* ::::: Variables ::::: */ -:root { - --arrowpanel-padding: 16px; - --arrowpanel-background: linear-gradient(hsla(0,0%,99%,1), hsla(0,0%,99%,.975) 10%, hsla(0,0%,98%,.975)); - --arrowpanel-color: hsl(0,0%,10%); - --arrowpanel-border-color: hsla(210,4%,10%,.05); - --arrowpanel-border-radius: 3.5px; -} - -/* ::::: root elements ::::: */ - -window, -page, -dialog, -wizard, -prefwindow { - -moz-appearance: dialog; - background-color: #FFFFFF; - color: -moz-DialogText; - font: message-box; -} - -prefwindow[type="child"] { - padding-top: 18px; - padding-bottom: 15px; - padding-inline-start: 18px; - padding-inline-end: 20px; -} - -/* deprecated */ -window.dialog { - padding-top: 8px; - padding-bottom: 10px; - padding-inline-start: 8px; - padding-inline-end: 10px; -} - -/* ::::: alert icons :::::*/ - -.message-icon, -.alert-icon, -.error-icon, -.question-icon { - width: 64px; - height: 64px; - margin: 6px; - margin-inline-end: 20px; -} - -.message-icon { - list-style-image: url("chrome://global/skin/icons/information-64.png"); -} - -.alert-dialog #info\.icon, -.alert-icon { - list-style-image: url("chrome://global/skin/icons/warning-64.png"); -} - -.error-icon { - list-style-image: url("chrome://global/skin/icons/error-64.png"); -} - -.question-icon { - list-style-image: url("chrome://global/skin/icons/question-64.png"); -} - -/* ::::: iframe ::::: */ - -iframe { - border: none; - width: 100px; - height: 100px; - min-width: 10px; - min-height: 10px; -} - -/* ::::: statusbar ::::: */ - -statusbar { - min-width: 1px; /* DON'T DELETE! - Prevents hiding of scrollbars in browser when window is made smaller.*/ - min-height: 15px !important; - margin: 0px !important; - /* need to use padding-inline-end when/if bug 631729 gets fixed: */ - padding: 0px 16px 1px 1px; - -moz-appearance: statusbar; - text-shadow: rgba(255, 255, 255, 0.4) 0 1px; -} - -statusbarpanel { - -moz-box-align: center; - -moz-box-pack: center; - padding: 0 4px; -} - -.statusbarpanel-iconic { - padding: 0px; -} - -/* ::::: miscellaneous formatting ::::: */ - -:root:-moz-lwtheme, -[lwthemefooter="true"] { - -moz-appearance: none; -} - -:root:-moz-lwtheme-darktext { - text-shadow: 0 -0.5px 1.5px white; -} - -:root:-moz-lwtheme-brighttext { - text-shadow: 1px 1px 1.5px black; -} - -statusbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-style: none; - text-shadow: inherit; -} - -.inset { - border: 1px solid ThreeDShadow; - border-right-color: ThreeDHighlight; - border-bottom-color: ThreeDHighlight; - margin: 0 5px 5px; -} - -.outset { - border: 1px solid ThreeDShadow; - border-left-color: ThreeDHighlight; - border-top-color: ThreeDHighlight; -} - -separator:not([orient="vertical"]) { - height: 1.5em; -} -separator[orient="vertical"] { - width: 1.5em; -} - -separator.thin:not([orient="vertical"]) { - height: 0.5em; -} -separator.thin[orient="vertical"] { - width: 0.5em; -} - -separator.groove:not([orient="vertical"]) { - border-top: 1px solid #A3A3A3; - height: 0; - margin-top: 0.4em; - margin-bottom: 0.4em; -} -separator.groove[orient="vertical"] { - border-left: 1px solid #A3A3A3; - width: 0; - margin-left: 0.4em; - margin-right: 0.4em; -} - -.plain { - -moz-appearance: none; - margin: 0 !important; - border: none; - padding: 0; -} - -description, -label { - cursor: default; - margin-top: 1px; - margin-bottom: 2px; - margin-inline-start: 6px; - margin-inline-end: 5px; -} - -description { - margin-bottom: 4px; -} - -label[disabled="true"] { - color: GrayText; -} - -.tooltip-label { - margin: 0; -} - -.header { - font-weight: bold; -} - -.monospace { - font-family: monospace; -} - -.indent { - margin-inline-start: 23px; -} - -.box-padded { - padding: 5px; -} - -.spaced { - margin: 3px 5px 4px; -} - -.wizard-box { - padding: 20px 44px 10px; -} - -.text-link { - color: -moz-nativehyperlinktext; - cursor: pointer; -} - -.text-link:hover { - text-decoration: underline; -} - -.text-link:-moz-focusring { - box-shadow: @focusRingShadow@; -} - -.toolbar-focustarget { - -moz-user-focus: ignore !important; -} - -notification > button { - margin: 0 3px; - padding: 1px 10px; - min-width: 60px; - min-height: 16px; - -moz-appearance: none; - border-radius: 10000px; - border: @roundButtonBorder@; - text-shadow: @loweredShadow@; - background: @roundButtonBackground@; - box-shadow: @roundButtonShadow@; -} - -notification > button:active:hover { - background: @roundButtonPressedBackground@; - box-shadow: @roundButtonPressedShadow@; -} - -notification > button:-moz-focusring { - box-shadow: @focusRingShadow@, @roundButtonShadow@; -} - -notification > button:active:hover:-moz-focusring { - box-shadow: @focusRingShadow@, @roundButtonPressedShadow@; -} - -notification > button > .button-box > .button-text { - margin: 0 !important; -} - -popupnotificationcontent { - margin-top: .5em; -} - -/* :::::: autoscroll popup ::::: */ - -.autoscroller { - height: 28px; - width: 28px; - border: none; - margin: -14px; - padding: 0; - background-image: url("chrome://global/skin/icons/autoscroll.png"); - background-color: transparent; - background-position: right top; - -moz-appearance: none; - -moz-window-shadow: none; -} - -.autoscroller[scrolldir="NS"] { - background-position: right center; -} - -.autoscroller[scrolldir="EW"] { - background-position: right bottom; -} - -/* autorepeatbuttons in menus */ - -.popup-internal-box > autorepeatbutton { - height: 15px; - position: relative; - list-style-image: none; - /* Here we're using a little magic. - * The arrow button is supposed to overlay the scrollbox, blocking - * everything under it from reaching the screen. However, the menu background - * is slightly transparent, so how can we block something completely without - * messing up the transparency? It's easy: The native theming of the - * "menuitem" appearance uses CGContextClearRect before drawing, which - * clears everything under it. - * Without help from native theming this effect wouldn't be achievable. - */ - -moz-appearance: menuitem; -} - -.popup-internal-box > .autorepeatbutton-up { - padding-top: 1px; /* 4px padding-top from the .popup-internal-box. */ - margin-bottom: -15px; -} - -.popup-internal-box > .autorepeatbutton-up > .autorepeatbutton-icon { - -moz-appearance: button-arrow-up; -} - -.popup-internal-box > .autorepeatbutton-down { - padding-top: 5px; - margin-top: -15px; -} - -.popup-internal-box > .autorepeatbutton-down > .autorepeatbutton-icon { - -moz-appearance: button-arrow-down; -} - -.popup-internal-box > autorepeatbutton[disabled="true"] { - visibility: collapse; -} - -/* :::::: Close button icons ::::: */ - -.close-icon { - list-style-image: url("chrome://global/skin/icons/close.png"); - -moz-image-region: rect(0, 16px, 16px, 0); -} - -.close-icon:hover { - -moz-image-region: rect(0, 32px, 16px, 16px); -} - -.close-icon:hover:active { - -moz-image-region: rect(0, 48px, 16px, 32px); -} - -@media (min-resolution: 2dppx) { - .close-icon > .button-icon, - .close-icon > .button-box > .button-icon, - .close-icon > .toolbarbutton-icon { - width: 16px; - } - - .close-icon { - list-style-image: url("chrome://global/skin/icons/close@2x.png"); - -moz-image-region: rect(0, 32px, 32px, 0); - } - - .close-icon:hover { - -moz-image-region: rect(0, 64px, 32px, 32px); - } - - .close-icon:hover:active { - -moz-image-region: rect(0, 96px, 32px, 64px); - } -} diff --git a/toolkit/themes/osx/global/groupbox.css b/toolkit/themes/osx/global/groupbox.css deleted file mode 100644 index 8406458278..0000000000 --- a/toolkit/themes/osx/global/groupbox.css +++ /dev/null @@ -1,30 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -groupbox { - padding: 5px 1px 1px; - padding-inline-start: 0; - margin: 6px; -} - -.groupbox-body { - -moz-appearance: groupbox; - padding: 8px 8px 3px; - margin: 0; -} - -caption { - padding-inline-start: 4px; - padding-bottom: 1px; - font: caption; -} - -/* !important is needed to override label in global.css */ -.caption-text { - margin-top: 0 !important; - margin-bottom: 0 !important; - margin-inline-start: 1px !important; -} diff --git a/toolkit/themes/osx/global/icons/Error.png b/toolkit/themes/osx/global/icons/Error.png deleted file mode 100644 index 424ebfd4adf6c2a1825bb1fa078968cea96f7a09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1439 zcmV;Q1z`G#P)W069O*g#6rh)|$5=5Yif`BSQKoKZSl*UQg zw5cM3os!0G(%OzQwukSG@3ki5J9c`d6Ho5kIlu3obDx@Nnxrb4rty#WeWJb>h%R}F zo}h;)b)vcNiJt#}=nntu%2B-#aNiq5gRqOKW5?1x$6_%h+;o9k^^FE?Pft@M8l_|^m1bY;lYMKBD7GRX;cubgEBN5(&`>6R z@F114S6L%NLT_S{7nHL>g&ryyk4s2a&6AL2{0A! z0{#6|#&0g4w?uqu6XB8Yvw*(@crua5gix^qxaA}srz4Y-mhrP`3%|-Vv>8C#q-f8v ztK{=^0I=R@G{cOuj&yiW6QwQ^&0p*7HE$;p=5_dDyAh9@m6;h+7Jj~tx+T10TeR5% z*E!mk@O%w*b9l$L*wbVF9SWJuVkWa$K=?aU%*JBovaYw_>~w2#(sY(GoG!wtgtiQI zWgA?U0(@M>`&nUg!JzpU+A@>b9`Pp~tW>DByK9B4(OgI@bC%%o3yX{wmgmc(E3UIwW0#NbiFkL{=hoEX>)oP&p!gB3HYA5jk?PY5#0Va_%KB~ zPar^>I2SC{YAeiSHc!_uY;b^R>~*5^kB34dk3eCyRBFx)7{x4?Qmcz6|&mMCWkUx`FC7O&kiatx=+%=&{!zVmurkIfTYlY@6(KM;@)@38Krf zyeh=V_IfaA&9H?^W#vo2^Ud)8$I0`GZ#Ydm53mHR68(ADFiwR1{zEWp>+}joT9@OP zG_PD@Ipu(F;&;AMx%Cy%yMW^`WnEStaDew5N_m5W^>8F!B>He%*GH3)2$c#2*Mq5B zVUGcPyI!r*qG83L)TRrPG2B4Hy@7<$$z;Qo32WnOY?|3y6 zA_fj463;>ecEXW|NdY#om7f6LZ1y~-f_J@~@?r+-6&A6LEv?I4r6va1hOq5@UrwFZ tbJzi~Rs?L5p<5R08|zM|>-qlz3;+|7NL>lT@LK=?002ovPDHLkV1lGpsvH0S diff --git a/toolkit/themes/osx/global/icons/autocomplete-dropmarker.png b/toolkit/themes/osx/global/icons/autocomplete-dropmarker.png deleted file mode 100644 index e48d044526420594096425ba1ed777bba2022cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRZ!3HF6%}!4MQY`6?zK#qG*KS<#k1zuAB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%)p)u%hE&{2N=Zo2U`X<1yYs-n zfx(cmQ`O;*aC;NK!yY+>h8h3<|NqZ+;zo<}MXv>a!W$Tpnu@+Lesnfrecs4*u2F)4 zktK}f$sgvR?#3VdAqUG9;uwQ@1sn_}J8;P}ue1$#7p3r@*@sV|!C_JX4~ve2Our7> dAqGY^2H7W;7sSsxe*(IL!PC{xWt~$(697L9OQ`?= diff --git a/toolkit/themes/osx/global/icons/autocomplete-search.svg b/toolkit/themes/osx/global/icons/autocomplete-search.svg deleted file mode 100644 index e5715bfea8..0000000000 --- a/toolkit/themes/osx/global/icons/autocomplete-search.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - diff --git a/toolkit/themes/osx/global/icons/autoscroll.png b/toolkit/themes/osx/global/icons/autoscroll.png deleted file mode 100644 index c21e067d9aa17bd49498d7297d37183e0f96fa72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2983 zcmV;Y3t04tP)pEcUQZWQdLz&1&!i&YYwV{o+I8$+!_xakT^%8ae0t)!UI1EO%I8OIURrH`rTXeVUjBi=9nO$ACz4uz`|E-bCbX$AQG4}e_7;}s{ z=Vy5sV-owm;t8?86v=o=>Uet|68ht%7ER5cmzOsvGc$8)LPEkXQBhI;u3fwKL%+tx z#+NNEEluy=zyJN#ty>q1i;JJpG|c$m*|flKXygm?%lgL z#>B)lr=+CR4H`7)JzaWq_wL;zyLa!t2E3_#RfG4V0V?g^zn`V2r?Y`HrNHI#JzFk$dN25 zDT(=fK0|vHimbM_mX(#2vFX#N>v}7{HwDbt@#Dv*(L?xWeSQ6y($dm&(&JV4pF4Lh zJeVCne!N-v&22&tw{_B_N#*hJ@qwbEqJQ7GapO6Hhl3h2p#0{zgaWD#pwjm3+ofsK zrg?@BAKn(;R_#%UvPX{|vGeE8ORHC}_Neva-jp!+r=_K(u3fwKSMtbA3f+NP;Ln*e zCz=5DDS!q`N=iC_3K>0mbR~K0t%8DrU!OmJUX8gGKzhUROtWjDFzo;}D=W)0V#Ek}o)kmWioMp>Rvv~dBO`-No;+D=I>9}5C2;;ib7uDS>(>XX z0n!4~3{?CZx}X!fVFR`-g}hb3%)(z4^3uM2``Cg73s|>q-E6Vf)YQa|967=kFJ3I# zf!n9-+_`fjO$}2iJd?D%lM({TCn?0&IQ|i*C3+8l5EA(j^sU0?K*u|AASK`Oi zbXJy^Xf9(57cP{;)lNa?KXBjx+p=W~x0R5an>%&p%$ff>efsnmt$W2aH1c?lMw!K^ ztdhah0uR zd?GlQi|5au@7u9sM=TmX^SNCZ*I`b5^X5%FZ0G_SVdl1^LkxAh?crew;-{LiXG24S zUn>D2%*Fb1)~s34lxRF?_>5~DJlvq}V6a{#>wYge9X>_L`fUWgChFX+_fz7Z=xrOpUA!Fw~%;G{Uu$Cr<|J z>gpskd_HvOP!Qj#!9?S=Db>+UumM{>tsi6-T2|NZI{iGfOq8g=#_o+H_UPvLHXlMY zv%0$aO>%N_{oA*1J{OR#SRgcdUo5xo~ih-P}R_yyPQJ!4fZny@H#9f#R6X} z=*91Gor4L1PUwaW*z(yCYT=BbVwgR7@`Pby#7=uppFU+ZH8t%3rB+*9Tzq5MvSmqC zRaJ@D0~LWnrk*!%o^ST-+0j}yPMkQ=4A0cs8yz!dO!eNqdvCyoDWG<5j)?PUK|z5u zWXKSC9<_6Gq_nh@ZQi_D+#JCf(Eo1Uym^nJ;+KgNC&pd5awT1@i!yc#Hb}5K60c*< zBrsdV4R0=_tAcb^LN{y}hI}O1-zum}mo8;@?%a`g-y^k$t-L@Wz!oi9q~65Ffm$84 z7vxF5QIe^~=CH;lhlGqSW`BIfHGHSF!3=gg`8i}Sg(4*N#fuk7eAR=8gV5(?lbFp1 z3>Z*5cI?>d2M-?9?Af#D0wq;szyB)pr+ftRLmkqcJ$qJ8QcfPyQR|I;VQNDsOqej1 z*5m1kiHSYnGHnD|2V~hjcb= zFzbm#MKv2bbZCcTWDX*Zkx{rKlUGz!Xw8|LfT}>n8Bhwf0o3|aa!kw0${LW7k&*mk3r#0=SFc`uLG}P(l`?0dl=vWm`6B|_=B->DB06+Y&VUlAB`RLq zO92|!qlJXlr~vm)@kX4*zh_27hwr>s@xxJZsKsG(Sos_y>`)=&e^E*=)UyrDgo@*1 zuCTnkyd;a?) z>)UMryWFOqjoaj;XmOkD5UboK4bV)vO?qXS$ZhJhm6Dp};)HaQ`$UcF)|DJk4m=86?7 z{_gkt|5jF3*57CjMNyB3As*6U`Vi?jT0$$mD)P|ZcJ12rpH2&T6 zlioN>+$N_*&26$vtZ0YDA8 zOm*jbK9l ztnY2|+7W8ujN#lSyX_fqo4`X7$qjn{RmNzkD~{pZCg^4gx2dzTJh)9V4~dFmJF~eN zx2Y0*B)jZ|&24fDR6TA}I1(whDVz=Fh`3Eoi5|Bp6p57E6pGl+ZHmYx9XJB9liOtW z+a2RJ*$img-lZP5NzW^t;5OkHxxT($K1Pm@k8gL3>~fo!%WV>O+GTOMO%`wsvHu^6 d+w^|{1^|ktW{n!M}Ah%MfCK800jBLQE70MU_RMv;ZNXf>uln zAw*Hgfwf>l?rV>^c6VmF-}C=pAJfyv^z3XFO|eyPyJzNgzxRLt|NX~%-Ao7pALl>K z`vqf69fbftL&B{?40lju3f;l{vBZFHc*c5mN!FQ)mnw6 zQF))-AaJ7%lo>OcHW0pPEvPAuW3h1Sb6XM06q`7a`e#Vl^bOI#4M5DfD4(wpUTXY< zgP`4f2dFbX#-Rxm>N?1tqIWg^h4_MtAMq)HwC~@&sGpa2Oy>> z(exu6$O@_!ny@WEaZy+a0?@#w?VQO;GQ^TS*6sMU{D#K zg3?3xHg5qIb%MqSWI{!E_tk896`vmy<|)PonK|e?_Cx&EyBgLM^^4#4sI(XY!Q?5k zZf_2uB0WfRgFF5O#w)9v^pWA1w6K^W&A&GXiJNb0 zYHsS6E`;*aj{-k^lGM02Xc7VAiVDRE9gw^3YEZh42@PjKA(v+lfHJYOYU=LZBIpJd zFp&UARFMK0ir~WoHQFDzIcUiby|At!9d0p38Z1px(C<-j~)s=RMIz;Rt@!dB=JF5iO_ z(GfI}bD48-2mv!)00Y~%2uDeLxB`juE(LAY?2((;Q@_G7hfOn=;MNgdxRe`B0rz#a znvP*?(=-(|r^qqggU~!my5YZvHK@A)k+}eYHLOAG#<|Vs{!)04CTh<80C*7ypg`4A z7;n8<^HVZ84p=b;EPw$DIX7~0nQF8!I?|w&`z$kMHCixs9supjUk79T-%L70gxE03 z)d(g0VAL1}fgWiAyc$3GxK5ee*nS}O#M6yW4n4cEa!3-FuFEv9(k=G?<)f6@6kGh0}v7h>ApDQjtmSx|7=qhT3Pu77$;3IQ&rns?PLg> z+TI4*v0d1@!8q|a;JbE?=>Ga(&U9+ra_)u|_PD5?`@Zu>0VU803MMl)4Y@w_?ncK< z8_v?uY6_dyKn%H}xHB{ypK%iax_6SP(1M{*9oGew7oTtV{xqL5FG<>=GcjAF@WP4$ zjaUE|)+7;x@!gPp3zEfonM6Yh+ynzh+!tPM1qFb)P5-B#Dyh$i`)=0K$tqX*7VaWXu+af=q-W(prf z0e>D~-NXh#!~aPXrqtC2{cB%_*lRCC%hYL*oWH=CRQc(rVCe0QP>u`$6y zTzEXO2y|4cpz@5ta3%$POBO)O^cj#mcP1uBCjzu*WVv1W%by{?aV?0pB(xxPG+|nj zyua{-!N8+Q7ZDu>tw>;{EoPmJri>?QG6^NkKy!V;0e~hq@a7s|7%@oe2{d~GP2sNU z%9)>VvNz#gBful^IZhwCF*SbwUFhHX4^Z+&Gsj3`^@=7R$1*xew3Lq2HfFz|%w8$+ z#($%sFerQpgCg?{Gx5-hE5gMt6y|V0i1uz!&Y6bka>f~l zfF=N9*eB&moLm`%8Byp1f^Mu|0}47%fgmZ<&ISH{4?ypJP&zUe2vtyQ;F)362SDOx zg%)pcm7$9w12)~0A<}mQf(F$v2QC0i@KN~QEW~bG*i_O}vl#OI?}Fah4k}ig+RO_e z_M`dL=&)oFD5*GtC0t3OoqKa%X{7{OK#kX~J!f3_7c9xMTb`F0)vzNB(+L?m2YsLb z@x>2}TKMwgzlP%We}hrMv^$=LxFx)uO~&Uhf=Xc!IF2cFiUQb=j+CZ1Vgc1UI@qB| zp@bha!G)_^t=a3neUO-c=ZM!8g7S;(lPfSPb)bJ3g5<-?{be|Uz&ghP&-Kf72jTJo zA_@T0j$8n^3mAJPHd}<$+#h<>qMN`dZtk1hGfHKMUG&vaYo6kNcJB9pW8xI=9e~!` z(bOqQ1TDyv4Jf_WBS}zW;wN|4j{NUhJlMquwSMym>AZwrrJ2Q_FX50QKTa!ofmKb99b^v09A}4@GB!av{XY zpsd6KkCIcz9Uo}Mv2R}o$wf;*s7d5I4vzihaUc(g`+q)a;ma$QL*MGvQd=!Je&X)M z&Fz(lh)huaSd&Ut(@9SJNw?Kq5l$?76xbWEoR+JLMF%()uP!18`UU4hch3jS ztrK9ubZGf6<$`Dw@B5MWv|ZKOAn%(o0$&v1JzGHEy47#qR>qg0bU4@CmO1gccivpH z46d`GCHq;tPmGfHwGT`1h;le$TblB4)pHTip^=RZ8OKq09glLMgw^LgEw5^$;JpZ< zyogv3@$5ADnuCJ-8Z1l>eR^8ts?i|wzJQudST#eK{__;?k@vAt@Lo8ztVf1`JrgBh zPsmIl!kSz$tDXKJYHjBgS3v3h`-1uW%rnrp>KWR9x3te7XldDu_piu4Eu-YUVBnj( zxpq)D5vo4q5Z?R~rwNl&+xx)%kp0>fHI$%LqC==v4NT2T;eq)yLA>9ORzmklVmNIb zO}r1AdsH4EoYiJl2U))z(bAbJcasJ5u3ry@(@z6!#tcc1!Cj^~$HCORbhON~QG$RS z!n}aSP2z9u505V1n`=7N9q!r%ZxN9Qkr;JC6c;3{-%*lNlPf`Ztl&sPZ>%>TJYotq za5hNYe5~?*9^`lLlB+!(bLNab-kXmgNT3zZrbl!bl&ICW0O3K1kQU5ZN|#_%xn@QV z=IpsRdoLCs#QOuUn!L|UnF`4x7VrHQzyqikKmieI0m8BXh1K4MGxNz0`#Sm13JZzF z?nr~Y-@9<3q(*Bd1L>73k65z911!LKsG_a~P~9K4{q0x)IAKr7g2oh{*Lh$`cqT{J z^!{Wa7z&eXftjgO!C18lj1dT`&YBhCD_Ec{SWE3cI1CF_4? zt`#!I8hT#Pq?!UcGoQ?&&$~Cg2^DNc1CQF#?+NVp3EI970Kk^PD~D((6{gTtPYUwn zsBUgelv^1aFaSQ1w7AAvgrq^t+9Zj-7W)Yv*@v@Qfq5hV_R@8P9_2GWu8Fd+)U%ET zRUG9Qv?4Z&a2NJeiEROfXGyFv9{?;gW!J7>7yv?sp^pN9vHmkG zAK(_n2&ne8pfJZ_Y_%g3CpOk&m=>V;s25QS5K8(-U;$$a0Nz`d6>4oNY(#`XVZU7j znG_iL;W73B3iLhq9KePRQ43LxJAVt);+{Q@1vn37wk6$JrtktF{huyGzHIO|mPvq7 zD2*uqB~^vZFT5x#$0HdL+>hP30nkvUl3`G$nTP6IWHkU(`t-`$eFqDdOcgxR#9mx}1svXphM9fj6!15ma!K4gKR2fjM%0fAXsx0`a5x&S-1 l(Va}#EAPks_4)q_FaWEHplGVMvi$%6002ovPDHLkV1gJL|5N|~ diff --git a/toolkit/themes/osx/global/icons/blacklist_favicon.png b/toolkit/themes/osx/global/icons/blacklist_favicon.png deleted file mode 100644 index e67d3d34f02e8e6a34166bcdd950fc8022938129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3LP)ON^f}Um)&^c&#H}7#S`KfqQjmBaPH0VYl0jvh2e zhi@JD?!Z@qM`hjL#}M0_75P4Tx0C)kdlFLfNKoo}mrbt1m8?OjLK&c87rGM{UQj_qbR#bN0Nn|KAcFV;g5X9+|b?^{W}SC*PJyu=7$S}6F|$e=eW01P+tMKg8Tf0@Yva**4~SVW{C@mqUcYZI0Y`H{rWHu-0sAk&&=t^e3#8kC z%BO0lK7+D95HQCB3k8nM~dK6aa?Hr*t<+1>ka=G=SkE4wvrqaYsk?3|f7 z-_ui%i8XiYU?8o zjGLL7oPhT~c$78|f*`z{PN#=xO!l)mucT@su@zgPkcWYRLk>LmSPBFd0A{x$m@8UZ zme5e*yg{W%Qn_+W^pAR^?fIM}NV024wf@}l)tYB&? z3zOLkKx0Lb9dzFppTN=KAqa-*ptG}+kQ6Pe;a*FH0u(XJEPg5qD4!Zq>?23Nhcl;A z;KxMU@w@_{R4Q4ERWYK?Q=^#cO&fZ}Sr7=q)r+qM8523Ue;1<~R)Hdy;LyHZEHF!3Z-Ce}tsKIr>CJovK)?V{ z=K(249Ud5rEEnP4jgLdLc?qP?9EVRodGgqpetQ727tcdoeIvAWtYtDg-uwhAW!66VQe%&3#!{bVeG58I zXVWDb*~gO|9(wFK=zYB#H}DnE!F+gN4~U`{Ha+|_c#u*?%QX!@c=BP@ntLFzryo+s zj^OR!hu=ni#AJv-)gyZ8mT(^Qrq^@^%(a(ufQ;BXzAMmiTSq;864c8z$~Kj6eZxYy z|A8mjl);0$8NH)x6G+j;Ec=ztD#|wXV6YB4;&(FKufP1j=!zTT5DrI}Ucou`_Rm#- z-O3!sw0Yyagk{&YL;Ef3;P~jz&=9@?Ze6_|&jTa#?#eROW>=_DWzkp*v@Bf#=f+O4 zTcdUPN>DZ9(s1GDEdZ2lYP{0v_F>HsaJeC!MP#L9VoAAv!y}BJ$xnkq?*r_#24B{_ zfJPepaXW1tYuJ=xslX_{8q4BY0Pp}gJ(kWiFS@eQW5zN!es+u=Os6dg`i4ASU(J5M z-xTZSh}B)@junf=vUs_eZ}x~5o-gF{;{y%f1-z+BdAy)$%_?4bR)BPiKCcfn#VVcfZiMT|3Pnv&AkTe)y;1%fe^R9l0$0qOjn?Yc3Z#D`YSL fZvVOR|407>)q{XBbB(Zu00000NkvXXu0mjf$!s(7 diff --git a/toolkit/themes/osx/global/icons/checkbox@2x.png b/toolkit/themes/osx/global/icons/checkbox@2x.png deleted file mode 100644 index 61bcc59c7d79a4054dd2c0d4bc9722ec8b660f59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1824 zcmV+*2jBRKP)@JF65fnvKc0q|KDEH;E zE_W^7s0^~+cZHcHHJ_%#u$weqI^AP!cN(pncc522OGPSJRzAm=X)pTeLZvL z>^Nb9{jeYQgZ<&;a1_^0| ziFQ}U&-?(w&~N}uoF%+HPUZ&?hK2)R;w-^jKPxM13c*O|CxA@!57(Sx>qg&1eT_!* zK%r0!SeQ?FNm$BSU#(U@aCCGWurQzUlCacLyjRA7x1`sa32&l)W@aWRl}ZpXpR!{- z^xfUvLBxE@4$A?c$pgJ!4^N&vfuW%xS)jFO&EcCeS}}mr&&kOF?IA7b@^!L6Ytfom z{emN<(0=h(ID7SvF|#>-o0Rzm%Qb*WKYeF5B&zqq7S-7C_WeZ4e1l*OV48O1G=F3W zOw+Ly12}zcJ~3ZgAS<*cR=@4yE$H~BXUybkE2Yf8L6|J1FPHhNf}^F(zd@KRHUQip zy?XTu1_uXah1N9Hw_*Tyz36Zel$|Jpin0n>ptWdCtp4fC-OzmDcW634dP-_8ft#DV zz?l0jqE9xHTr$hsTLd{b6BYD1G{`e=K;<_ZOY|LqbBV>hm}7 z{P}YxpaW1@%>=Bz;ma;F4i*`p;Y_FCyclV_3PsHijf_X@Ytpr5L~c?G&PlO4MEtq$ zLl%R!^!Xcj_UsuGumezCRl@|Ve#7Y-JgFJ^;Oy)Sp%I^RQ~StkmK2t>f~)I$0`nL9 zuYlUt>u7y-dOpvpHIbZw-oE~z+HuJ2nk6xDY2e`Sj=+33_m3fkJQmOac>44y6R-nN zQ>|wLR==+8XO84;`@o5qZ!&V-hB&Bgxz1l7NrmAWD7}0I=Fgd{gwmSJTpM%%sL_Og zz%Vl->C~=DJIG%jNs?wS393S1{>+(95TBgQwLu4fzOu0ZI{^BcS|*_NiOIRTTG6RI zBy=;>H2ui6;c5N}0)rz2ZD%W7;lPmwz8zMdnj9XTEIO5Y`7DN%?FYCvBbldMAYAl0 zIB<^-QyX*u9zTA}1ndCR>g$+*o`HzLl&H_tq9ItbE*h$hKk)66G&!Q}Qg>?kHWaKr zovtZ<{wqa8p!D{G{r!d$vMwJv=JOtPTYo0BY_q3l}XH4}sT0@`&0G5iu#`_0BM;u3(kM=;XK%yx?fNS9f14y?=u1Y8rE=%30VCyVxAdwSGfhC z#I~*(b3MGE=wyem1_7&2&9lTudQabsSxznxm$XZ?208%!{ryb94!|jckqKD+6SY@F z_!@%O$5=I=z5?dz^b-BA-~&Lmg2nLiSz^_E`U<#llSZ;XIskoreM~^_#GPtn0#={C zwuwPx}uCu#PHLVqOk^j;(xfS|Q8l6@)Y0NlHGj|tcTXf!r4 z0jqz!>MKc(RbC*QGvR^&M8+gr?MK1tQ=_FwQ00J!r|^}}Z^=rl{V3=F+`W633FseV z8k?Db)i18NV3nig=OBQ*dYQ~$x-5u0XR9AN0K{Z#B&6)&7Jw%6Kl<2{J7=pOIsm=B zy-dIkKyy_XuPakD;*SH0&>^L$^l^+`fHVR%p%P8~DqXzL6~0T3g#?#rV%6 z(58MtaT6RaX_u9PV|e{URW>n9UT95Q`usho)VCk@!+!kVj=uq0UB0W4r#u({ O0000K diff --git a/toolkit/themes/osx/global/icons/chevron-inverted.png b/toolkit/themes/osx/global/icons/chevron-inverted.png deleted file mode 100644 index 8ad164baaf7d205f16d7d7742d2fdd09caf71efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmV`q2*z3^2a)7uFo>%F3Vi(k&DK4(62e+2 z4U%MH;A1e%to#4||GWQRjNLNoA*|WrAbm^>0_`dP-~NB||GlGmTPlPVsR5QcVe|jP z|JVQDm?lmLhO!bEWPlRK%z#F`{QufEr#uS6vdd=BVc=pos0+0A)&Eysh3O#>mUjVz xE(15n8Db2!43P{$35OBIAEnFF&nX$tVSE;Hp7%VWBOoCR1#t%jAv$|G;T4=~Y`JFe3P&J$IU&NS zuXP$14omYLT?u(OiI1|ox7!^yV^dBJeq-Nr@t>&dBOR)bAwGKtZ99d~gpdSRpq z?lP41W0%6oag*6J8-)2mM;U4$Z?yzhaQ`VOk}zxT-1tayF_1Uvg1dtFI+6Ds9lWO5 zWJALE)CDDb@;}~ij!S^xeDzzbf1g-w@1hy$sU|os0rulGwot}HJVFJxaFymmqT`dl Xk4DNQT~lE;00000NkvXXu0mjfX1>!~ diff --git a/toolkit/themes/osx/global/icons/chevron.png b/toolkit/themes/osx/global/icons/chevron.png deleted file mode 100644 index b2d31e38f56dda9807001c84e1d2bc31ced0eb0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(0wkS_^Bw{z$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gb3I)gLpY+769m#DP8#$lDmE(!aWnnnj?GQcNI#J_!_JZK zSki-L&#st^6pbX0)ERpM_)ciCY+7dU;eg6f|7*r7MlMD^_q6zv4GWx9jn7Cdl4z1B z(qa+R>FCjM)@_z|{`0y@Hq}7;Vd>v`z6mWV&Z^DU&PP65rK`4aalE!S_i$=i*sM53 v@t0$66I0LE`TVbb{O3*3Xi0F)VPtr}*M4EaiEoTRhcbA&`njxgN@xNAvglRU diff --git a/toolkit/themes/osx/global/icons/chevron@2x.png b/toolkit/themes/osx/global/icons/chevron@2x.png deleted file mode 100644 index dd91178030e5f6b315f642909617cce898cdfb7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 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�L5&RZW_>|xBGa*N|I$`y% zjdN6k==)hG6}a#i=%*L|X(rH$@1OymJ<-w8i3sQoYjmuIb+T349E|an+`}E8AAXcS z`migoS!)glV=Ux$-T2G4;w?=T(nTakn&gz+&;Or7v1)B_*jz zllSs&&%C_%NF^5zckawRGjnI|7+Pz1%PT8sQ<{p9PpwSxZ9201QsWO z2fS-~P7Gf#4D}9JNQT4HBje*x@%TBiS*>CxpGT!$e|ZzQFRIQ=f-Cg?F%r?mbXxxm zh4cYa-6!^lUD?B7eVEPad|#h_1H2+9EW{pp1{L!$rKX4b`_YOk1SFU)L5Lo?$^9#BpLypKvD|hrAWuMpu+Y|++uJBiOu#%oMu1Nei2RMZ z25nZm8xF^BW5a8(3!_U5r52|hXU~C?L7k`&e~2mzHoCEaAR{*!Ss-$jx?b8$$%aKe3LcGf57n6|)klBP`}+p(DMK)!4+16*T^(y2rO#m!B`#>VhrY6>;JxmhaV z7uy=A?#s*!qt)@FR>N=GUdaPXhFgc>hrrw=rEZNTllaGoJ*}2M5KeuRLX=q)Xgjp5 z_jAA_s`tEl1&J&7fM=JLx^X>~g5qp=Morn`x7|8ALXqSJ;4#&^Qdegd+(DABdG$8% zlv6O-ZJ4S+ZV7lIk)?DFw_}*ROfJd?aSQAx;db&bQR*C|GXVww?Y1JAfk`>;00000 LNkvXXu0mjfLZ>h~ diff --git a/toolkit/themes/osx/global/icons/error-64.png b/toolkit/themes/osx/global/icons/error-64.png deleted file mode 100644 index 972abaff3bf38afb7291a87b1ef178588082cb31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2533 zcmVJL`w&$oB8qZRluOlCNIdh9Cse5q$pcSFsA`)gy(NT36h%>5 zwFsByQcxah3>Gm3JE?836&o8HgLijk`v1mf@MJufb9QENC3>XM?5=muoZtWZ&i^}e zv1Z#g-OWv>yS!!7>PXWx-erWSylE+ql~dIco0(STW>bP^*z5;HFRv#0c{w9COZ1Z` zh<=Sj7Sa$wOWKKm&%HZ+!VB4WB$oDlPv4hP1e#(!HDd)D#-zqn3pv?O9G<4zwO%{uLdx+jh zDniKu2zUeVKWftTL!G;JQ4#QkD_6<_?>3{knT#!4XsEZ>5n*>i5lRxkh5r-LEA_g5 zxZ|Z{81MkW<#T+WC7k52eds0=dGfXTfeOY!vhN zd(dYK`sQPV{ocgbiU?3kXD8KS%ts}vLtqBD@b9wQGdxmDo0uSLem*b)E_@pnCz*Ti zbv_$?=_Q(b>n*7zaa449zxu@&srAh_7a^yoY3T9CX`!z#JQFG^D6?)Ijbf@!+4kP2 zBdWtP0bIlTJq)iAbG{9W4t;WxtU@7l@CM-9J@9TDg9z7sBB-W)4dB-ac(<_#mt#c8 zR8^6VRpaRJFiqI@zUM=#!`B3G;eY3rI=HL;)mIcYg@PjQZzBPjAPet}yuTF#MDS-0 zX99~bhIPsm)(Ou9c*1P~#56H}OY~zW@(m3RJVn5VMLtM`SqTwrU*yB!y&_x+$%G|B zjkMZY8pn58glCCw4F?Xy!gJ#k=4i?oqa_LNT+G0+ z8!-kmsy{IBV(l9>HMEB4Ff$6)WdiW)Y94?LJnttY2B{)~3jA%K!FT=RTDF13LIzli zKdJU|`vs^_S*y<-KTa2s-m;Cs7|;$#e;2+@0scIWJ%cf50i~2e$}2O53BdhiteBeY z{WAA-19N*Yfe3Eo*5I>t1^9Cek7MUT#%l%at);21g)W5bn0oCO!{AIvAVMjTXZUFx zv(mHjR9SFEUKF(y7c6d0vCDsseU~H%0}qSWDv|FO@Kph2(+;U9-b>1{0@w;`b-xI6 ziXwCC`^Y^;blvz|Gks|adSWHM8-QE(iGt= z`nu*bJd&LAmZ|`D!p+SD7GWR-5zcxdPcbeZw2#Z=*eOs-s(GhF5)l}FDx%ayrMm1C zP^to|S9W+haIGG|ev_i%^?B0X3NbWW(Ws>bP`T6^V8TK zk^HTDjIk0#Fq51NMQ!&f!ha&*E5$m2Bl=H;6(b+(KHo)^Qp=zoRt01?9>{|V@E;5K z3eUi@LWEBhM0ik$pgP_-0c=x2(X}POj|q7H+MY$YQi2E#Jw4Lnjhg~amN<)Y%~PkD*_AjiGm30@ZGqek*+&TR)81kzUTO&AZj~z-~i>P zr(*~C4-9g|10U9(Ev{IyP#;T(uz+Kq#Te|UJ^^2-tR!X{B>JhS>{gfn^KTFx=_h)9 z@YXG|*Q_BelL20zw^)SPS+Yzsw6^BDyXkwqy_ECaCHlKa`y8o1 zH*1SfwZLb#`+SDsKLmUp@L^|~8sN<(_=E2d{f50(EOYYi{XzfDQTH_d9&C*e;e`h@ z?bS^&BJlFK+9yJ90(k!toXz&TLIj5YGvIFm-iWIC)zuFC0J8aQqCeoH|L}EN3cES# z5kV7~;E3=nMCc-Vb#qM(>FCfb7DF?EMc9ftIf%iIA3uKkGFH;Y*92Pm-T_Rv5B<+a zL|*4PpUcq&%z60P>qi#hIr7&i?)G??2+u%-jjjlDb7Wgqs0amNELlqLadF$TLd}xr z&Ze(rvRTLQ1~5j3Ke_}z!^so$s7&ZHLVgkU5WV~W(f%zEL5mQ$+CWOKu+vFC{=wb$|#jY(RB*sIG2N zgcZsJHav6HD(b@+E+X>pN4R|=0fIc?2N0nX#`sWeEg5j!JQhxOI_>jt`#$*5zXAV2 zjN2y`AV`EKToF+Fvv<%FvH;IRfPV@24e6Ld>_>TBJ6({nUKMNiXo5FrPXpU zy9GG@XEQT&8SsBe0AG>-LDgXwjB!1T@nKX415=?~(;aYVMbV7tjkO`}C0!3QNs{xF222 vDCfV6QZQr)dwY&=6 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 diff --git a/toolkit/themes/osx/global/icons/information-32.png b/toolkit/themes/osx/global/icons/information-32.png deleted file mode 100644 index 4501bc813a0ee502fdea711dfb2f4a37cac8abfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1773 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 FV1m-E`I7(u diff --git a/toolkit/themes/osx/global/icons/information-large.png b/toolkit/themes/osx/global/icons/information-large.png deleted file mode 100644 index 3912f1c79aba05b623e2efa110bc33af2241e36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2592 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 diff --git a/toolkit/themes/osx/global/icons/notloading_16.png b/toolkit/themes/osx/global/icons/notloading_16.png deleted file mode 100644 index ece0ee18a1cffa9bccdd9eae5146b48df48819c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP)bW!lA9!2mbp6&O@ z-xyoQUik4m@AE$2&+~FPSI>*JLt%4+evuYPH&VKA-=POeV9jSnRCd?>}UN`FK1Y1=`@i zBez^GABn}{w-8hf2E*skXyoekdIr1+3FGlt59~!E5g(PIR4Sj>>vcETF7pSY0-V`w z_9Pq*rw4<<*5w-UzF8;~0>xs{N4jLQdh<|yKuE1tM{>EGWnGh-&E_4Hw-43@5Vdm5 zW^)|OYv5d`)4jpnu+Bjuk&xMJHa}PfcxJcT8A{Cp90Bf9sbo{BRJ*J0UOsvp(ji^e z=5MwefP;d_<#OsS|6dNYTCJCw2jmD_NS`_%0=7t(Y_8Op$z5dJ& zg~g)3;Kznq*M6qiY^In@CJc2fA|O UbWt)`L;wH)07*qoM6N<$f?sGkasU7T diff --git a/toolkit/themes/osx/global/icons/panebutton-active.png b/toolkit/themes/osx/global/icons/panebutton-active.png deleted file mode 100644 index ca241c7b8a1026051003876e4a75ff0c8113392a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmV;B0dM|^P)1RCwBalcF5 zHQr{V!Wx-*5K#U%QWwgHs}BG@%7OFfoQaiQ)S%9pf&k7LgWM(+gG5n50nO0wqZ+(; z4&f%Ysr4Y1q1HpVNQalpVI+ODp)7gn279P8n&On uAcs<2!r#Rr*WA-_JoQ?SY68}O1sDLI3vuP}p_g$000008U}fi7AzZCsS>JiWYmiIEGZ*S~IDW@2~=obMc4&^*%o z{xz8&R8K96>+&jlTGjN(#qT4#;lkXwof8#Q*>qWM3BUC=>bTQw_-3Q3wT{j6f3i0_ z-$Z|M|Lvl;zS2uBFJx^m|KFG2kLa(f^H-aCvYmmMVe^Ts{;AdrK+a|GboFyt=akR{ E07*V%+5i9m diff --git a/toolkit/themes/osx/global/icons/panel-dropmarker.png b/toolkit/themes/osx/global/icons/panel-dropmarker.png deleted file mode 100644 index e605e835c75a704ec7943f8563a1c9ee465bd5e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)Q!3HEdXMMW?q%u5R978x{lP_Gllx1jQvL`t+ zv-0k#Q?H~t*giTw;(336|8*WNt|&1fp&|`4vod{%@c;k+(`)|x*q9g*aiiiw6Hmf+!c=_by76f*492$;?#IE@)-CxfS}pUXO@ GgeCxA8az<| diff --git a/toolkit/themes/osx/global/icons/question-16.png b/toolkit/themes/osx/global/icons/question-16.png deleted file mode 100644 index 8d8311fced6539c644d4195d98e427bb4dae4ea0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcmV-o1D*VdP)PZkmFXBxE#ghm^1T_c>9yAb)CZggiY9K~ICGoK_ z(PXo`vper@tH&fbQ1oo z{p#$C2VKACnTS&xf?4OGulr+W?n>)=BfGjahGlsUMh-zJ@pD4p(`bOtpS+Uq7LWGd zTya~@sVE=Tv48krU9S1Y?tMv^Nrs4aV^8*3 z`74eDJk6<$S!P{}<#ByyHd7DNFeswL^EXvo?w-WZNQhWWM>?hccon~<-=RG5{M6LP z>wS@cYWH&C$+#BJm1_vM2mvFVOd^v?Af1jQm5LGQV%8eN)XY$|^yBfl!qA0o;)>B6 z%?}eDWD^Z*+Ui>mAJ^l#4yGAPA=PiQDRpl$aEgO7qc<+v(;r62x3n-!|BtikEV2w) sJz08g*p!26#~Ia6D((Nr`L6&20GE!IZI*{D$N&HU07*qoM6N<$f=W-4O8@`> diff --git a/toolkit/themes/osx/global/icons/question-32.png b/toolkit/themes/osx/global/icons/question-32.png deleted file mode 100644 index 7c80831b04c1c9632f8d1c48edb5b3bc4fee1487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1962 zcmV;b2UYlqP)W5{N)jeGwqrY9GPY-b+wD1T-gp*|mn$8Q-@Es|?>pyy=iGZGAp{m{k|cRQ zWXc1N_jd&&>kcW3@falK9_m|FJ(j*R1L1t`IEBCGGealN{&mj{dhL|DmcVG#Sp}@^ zJ9KVmxcTmv1G@3ubzKTJtXFW?S_REbQW=>30I6Alu~8Qz!wv>-IIzsZ$?WX)Bj--+ z`;>-RixF8szz0{z0uMbk^2=Z-`fT5WI(oLKNTmg)W&|=hfqaqNa|FuM4GjqC5?Y8@ zY?Xw80UHvd8>?3Dl*Ic~bl>A^D`F8baJ3YaxwH*tj;3 zyZp~L+xODje3?X<05dSY^@HT=Yd5q$v-Q3p(z!-nx!BPyGUD-iQ9YuYLXg5AHt@LC%yGf|KB$ z=u@$4vx=qK`7bOSf8X+w$cu(s5o&V;xN<3j$>9(8UpoE7IeKNve!2ylR_{36wJm_G zNwJ|xWpmja7d;7gS#WN9w`q7}mqZ!jdh@*bqGYoffp}*CjK!FYEqlV-eRNa62p?!_ z575Mt*VSgzhYs%0Yk)rfZyL}4YLsjYACp(r?cw`$ssr}?eBm2^TMcQ@^zZ@3WNap& zw#4^67VFSZES3g2cJ(i%pXs1;b!E*bQ#Ovhmq*r)B4b7IyLYq5=AHTea8QPATHf4x zXDo_vWR(iWWNao7P>t3D!6vl?T4Ta9+j46>ym++;RSS~X6mOknMaSTnRWru6odw`* z4yUKCf-zAl8PH@|+Y*dwaBWe^@v40041Ma=F*sJqO9s~hh9^w!Z=>qBwacg>;8GUw z`b!OT!UPzT|78L?Inl&gB+@0ox*`LiKsTZgdR=M~K<8=+KmA^$2HI@E6%MVp@WO*S?<-YLs(mK#L`>kNABMa&FSq1y5y$?PrI-av1W;A` zOZygsm*h{uRE4l*K?H0YUdU=e%Ow0p?cng*( z+P3KhL!P{OGVKbxr1(Y5%+r2AIh;$o$jrJ(-?6cKvs?rIkF#mK^2Qtr7J2TzU)*^{7hyVjLFzcz?@9JlU%du`)3M~_CBBmLM#^n2M_NJ zqjzhi_#AsD=c#+C#@&Tt3WeP08OCI6PXlD>>A{n~)r{7@SW6S~1$h|)0`+G*t|OAX zG;_^xkxJbJV=*RU%l^?hJO01p7wHuHm)Xo$(Dlkbu$a|DEjQkv1M5usE93}+u^5x5 z%^yg}+Q>RLKl1k5vDR(f0c9;R*~W!LkP5A0n!GN0f>3BP(u^jOLgUDVLNY986w|3M zl2=bX`6Rs>CY$ySBz`DadNX8WL;bHjJ2CxPGH;F0*{f2}>xLBbdDNS#s##uRcQw66UygX^ z1HU+|N4p+xjrO29obb*F`Me9$3*Pwt3^h-llc?f2;-LdkigsupWa!VOM0WR)nrap`J$GoIp!pj wa=O^{+y@N!r1V7y6n!w$e_r-_{(k`m0Ge64aS#o0tpET307*qoM6N<$f*)+iA^-pY diff --git a/toolkit/themes/osx/global/icons/question-64.png b/toolkit/themes/osx/global/icons/question-64.png deleted file mode 100644 index 96fd7464091af2de527a48bedbb068613a8bd824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3970 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 c__`FF7&;S4c07*qoM6N<$f(NaVO8@`> diff --git a/toolkit/themes/osx/global/icons/question-large.png b/toolkit/themes/osx/global/icons/question-large.png deleted file mode 100644 index dd2b21874b0aa4d63179c16774a3dff2d8913ceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 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 BV4VN} diff --git a/toolkit/themes/osx/global/icons/resizer-rtl.png b/toolkit/themes/osx/global/icons/resizer-rtl.png deleted file mode 100644 index 6ab7d33457318b3fb83e923b7e75539f6c09dcca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^{2}1{rUgjo_S|OXCsqA!>p@Uul8zgyg5CFdB(T* z_s=_QW6a9R;_;tvm&Io2RENjamj0>1{w&B1aD5EP#n$_lJ5rYDXg_W z$p&xm2LAzEmgR0v@x`o$F8~g~H;)@*3Ls=yWZ*c=7<*>mI6O_0eB+#e!?3$>pK(FN zaabvJ0B~rzt|4C6^&=Cf*9pKOm;*Rmr-qK>brKmk4u=2*hvBwuBOt=#!Ojkc>*Voq z9AyIMOE>~E2XtL`B;w5Dxp3q0zVA;Tc(a68RTbf6*gvv>i|}`Aa1!i*1RkAft@kOM iRHqa^41=WNYv32N$tj}{hfnVS0000}1{rUgjo_S|OXCspVi|OjstEG)6t`_w8X*6+l z;s1Ysd3YAAP!e0ca-}45;o-~6{iPdBKGwNyyLj>9M#d9r=g!|S5qg>)Bjs45R%F`r r!{G$e@_t#OS``XXd{ECtDnm{r-UW|oLNaL diff --git a/toolkit/themes/osx/global/icons/resizer@2x.png b/toolkit/themes/osx/global/icons/resizer@2x.png deleted file mode 100644 index 2304cc65fef9260618b1af67e65fc1eddb6de67f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI?KP)fo(ZNS(Q(p-R8;KLqfsN;bu=F*sO{!_Qse12?vM`*bC+*keY^G^i zBrCkaEBrrL2=R+724_panac?UTWdLap)MB!%tu`e0p_Dx>pKqSqlHJuaV+sLA2qJK z5@0@BRn-mylToGAEk@nhnE>-q%AELU=!w`iZYMO>P zr!-om&|w(LfD+~eQH?>{w%vzLBVmY2DN|@3qg~e>o~Z9I@VBUrPy^6#4*{pqx~{jg mhi544KEWik@B8u{>bnQ&6}&qPKAI%}0000 - - - - - diff --git a/toolkit/themes/osx/global/icons/searchfield-cancel.svg b/toolkit/themes/osx/global/icons/searchfield-cancel.svg deleted file mode 100644 index 9899144e95..0000000000 --- a/toolkit/themes/osx/global/icons/searchfield-cancel.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/toolkit/themes/osx/global/icons/sslWarning.png b/toolkit/themes/osx/global/icons/sslWarning.png deleted file mode 100644 index e8ad586b6e9a9e2ff278ca9694d4cf2e513e7bbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4120 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 WM@NbylrtP)3D%d> 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 PIkt|bfkyeQdtv_r3A;*c diff --git a/toolkit/themes/osx/global/icons/warning-16.png b/toolkit/themes/osx/global/icons/warning-16.png deleted file mode 100644 index 2ab4b3915ea83f6da4a0c9fc87a40d25f569e307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 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 DN=tK< diff --git a/toolkit/themes/osx/global/in-content/common.css b/toolkit/themes/osx/global/in-content/common.css deleted file mode 100644 index a987cbfe1f..0000000000 --- a/toolkit/themes/osx/global/in-content/common.css +++ /dev/null @@ -1,121 +0,0 @@ -/* - This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this file, - - You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../shared.inc -%include ../../../shared/in-content/common.inc.css - -xul|tabs { - padding-right: 0; - padding-left: 0; -} - -xul|tab[visuallyselected] { - text-shadow: none; -} - -xul|button, -html|button, -xul|colorpicker[type="button"], -xul|menulist { - margin-top: 3px; -} - -xul|button, -html|button { - /* use the same margin of other elements for the alignment */ - margin-left: 4px; - margin-right: 4px; -} - -xul|caption { - padding-inline-start: 0; -} - -xul|groupbox > xul|*.groupbox-body { - padding: 0; -} - -xul|menulist:not([editable="true"]) > xul|menupopup > xul|menuitem[checked="true"]::before, -xul|menulist:not([editable="true"]) > xul|menupopup > xul|menuitem[selected="true"]::before { - display: none; -} - -xul|menulist:not([editable="true"]) > xul|*.menulist-dropmarker { - display: -moz-box; - margin-top: 1px; - margin-bottom: 1px; -} - -xul|menulist > xul|menupopup xul|menu, -xul|menulist > xul|menupopup xul|menuitem, -xul|button[type="menu"] > xul|menupopup xul|menu, -xul|button[type="menu"] > xul|menupopup xul|menuitem { - padding-inline-end: 34px; -} - -xul|*.help-button > xul|*.button-box > xul|*.button-icon { - margin-inline-start: 0; -} - -xul|*.checkbox-icon { - margin-right: 0; -} - -xul|*.radio-icon { - margin-inline-end: 0; -} - -xul|*.numberbox-input-box { - -moz-appearance: none; - border-width: 0; -} - -xul|description { - font-size: 1.25rem; - line-height: 22px; -} - -xul|*.text-link:-moz-focusring { - color: var(--in-content-link-highlight); - text-decoration: underline; - box-shadow: none; -} - -xul|button:-moz-focusring, -xul|menulist:-moz-focusring, -xul|checkbox:-moz-focusring > .checkbox-check, -html|input[type="checkbox"]:-moz-focusring + html|label:before, -xul|radio[focused="true"] > .radio-check, -xul|tab:-moz-focusring > .tab-middle > .tab-text { - outline: 2px solid rgba(0,149,221,0.5); - outline-offset: 1px; - -moz-outline-radius: 2px; -} - -xul|radio[focused="true"] > .radio-check { - -moz-outline-radius: 100%; -} - -xul|spinbuttons { - -moz-appearance: none; -} - -xul|*.spinbuttons-up { - margin-top: 0 !important; - border-radius: 4px 4px 0 0; -} - -xul|*.spinbuttons-down { - margin-bottom: 0 !important; - border-radius: 0 0 4px 4px; -} - -xul|*.spinbuttons-button > xul|*.button-box { - padding-inline-start: 2px !important; - padding-inline-end: 3px !important; -} - -xul|*.spinbuttons-button > xul|*.button-box > xul|*.button-text { - display: none; -} diff --git a/toolkit/themes/osx/global/in-content/info-pages.css b/toolkit/themes/osx/global/in-content/info-pages.css deleted file mode 100644 index a25b9f6a3d..0000000000 --- a/toolkit/themes/osx/global/in-content/info-pages.css +++ /dev/null @@ -1 +0,0 @@ -%include ../../../shared/in-content/info-pages.inc.css \ No newline at end of file diff --git a/toolkit/themes/osx/global/inContentUI.css b/toolkit/themes/osx/global/inContentUI.css deleted file mode 100644 index 17e2e6ae33..0000000000 --- a/toolkit/themes/osx/global/inContentUI.css +++ /dev/null @@ -1,144 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc - -/* - * The default namespace for this file is XUL. Be sure to prefix rules that - * are applicable to both XUL and HTML with '*|'. - */ -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -/* Page background */ -*|*:root { - -moz-appearance: none; - padding: 18px; - background-image: /* Texture */ - url("chrome://global/skin/inContentUI/background-texture.png"), - /* Gradient */ - linear-gradient(#ADB5C2, #BFC6D1); -} - -/* Use the new in-content colors for #contentAreaDownloadsView. After landing - of bug 989469 the colors can be moved to *|*:root */ -*|*#contentAreaDownloadsView { - background: #f1f1f1; - color: #424e5a; -} - -html|html { - font: message-box; -} - -/* Content */ -*|*.main-content { - /* Needed to allow the radius to clip the inner content, see bug 595656 */ - overflow: hidden; - background-image: linear-gradient(rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.25) 50%, rgba(255, 255, 255, 0.05)); - border: 1px solid rgba(50, 65, 92, 0.4); - border-radius: 5px; -} - -/* Buttons */ -*|button, -menulist, -colorpicker[type="button"] { - -moz-appearance: none; - padding: 1px 4px; - min-width: 60px; - border-radius: 3px; - border: 1px solid rgba(60,73,97,0.5); - box-shadow: inset 0 1px rgba(255,255,255,0.25), 0 1px rgba(255,255,255,0.25); - background-color: transparent; - background-image: linear-gradient(rgba(255,255,255,0.45), rgba(255,255,255,0.2)); - background-clip: padding-box; - color: #252F3B; - text-shadow: @loweredShadow@; -} - -button:-moz-focusring > .button-box, -menulist:-moz-focusring:not([open="true"]) > .menulist-label-box, -colorpicker[type="button"]:-moz-focusring:not([open="true"]) > .colorpicker-button-colorbox { - outline: 1px dotted #252F3B; -} - -html|button[disabled], -button[disabled="true"], -menulist[disabled="true"], -colorpicker[type="button"][disabled="true"] { - opacity: 0.8; - color: #505050; -} - -html|button:not([disabled]):active:hover, -button:not([disabled="true"]):active:hover, -menulist[open="true"]:not([disabled="true"]), -colorpicker[type="button"][open="true"]:not([disabled="true"]) { - box-shadow: inset 0 1px 3px rgba(0,0,0,.2), 0 1px rgba(255,255,255,0.25); - background-image: linear-gradient(rgba(45,54,71,0.3), rgba(45,54,71,0.1)); - border-color: rgba(60,73,97,0.7); -} - -menulist { - -moz-padding-end: 0; - margin-left: 5px; - margin-right: 5px; -} - -/* Tweak margins so the focus ring is in the right place. */ -menulist > .menulist-label-box { - -moz-margin-end: 3px; - margin-top: 1px; -} - -menulist > .menulist-label-box > .menulist-label { - margin-top: 0px !important; - margin-bottom: 0px !important; -} - -menulist > .menulist-dropmarker { - -moz-appearance: none; - display: -moz-box; - background: transparent; - border: none; - -moz-border-start: 1px solid rgba(60,73,97,0.5); - margin-top: -1px; - margin-bottom: -1px; -} - -colorpicker[type="button"] { - margin: 1px 5px 2px 5px; - padding: 3px; - height: 25px; -} - -spinbuttons { - -moz-appearance: none; -} - -spinbuttons > .spinbuttons-box > .spinbuttons-button { - min-width: 12px; -} - -.spinbuttons-button > .button-box > .button-text { - display: none; -} - -.spinbuttons-button[disabled="true"] > .button-box > .button-icon { - opacity: 0.5; -} - -spinbuttons > .spinbuttons-box > .spinbuttons-up { - list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); - border-bottom-width: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -spinbuttons > .spinbuttons-box > .spinbuttons-down { - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); - border-top-left-radius: 0; - border-top-right-radius: 0; -} diff --git a/toolkit/themes/osx/global/jar.mn b/toolkit/themes/osx/global/jar.mn deleted file mode 100644 index 9ca73cc6bc..0000000000 --- a/toolkit/themes/osx/global/jar.mn +++ /dev/null @@ -1,156 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -#include ../../shared/jar.inc.mn - -toolkit.jar: - skin/classic/global/10pct_transparent_grey.png - skin/classic/global/50pct_transparent_grey.png - skin/classic/global/arrow.css - skin/classic/global/autocomplete.css - skin/classic/global/button.css - skin/classic/global/checkbox.css - skin/classic/global/colorpicker.css - skin/classic/global/commonDialog.css - skin/classic/global/customizeToolbar.css - skin/classic/global/dialog.css - skin/classic/global/dropmarker.css - skin/classic/global/filefield.css - skin/classic/global/filters.svg -* skin/classic/global/findBar.css -* skin/classic/global/global.css - skin/classic/global/groupbox.css -* skin/classic/global/inContentUI.css - skin/classic/global/linkTree.css - skin/classic/global/listbox.css - skin/classic/global/menu.css - skin/classic/global/menulist.css -* skin/classic/global/notification.css - skin/classic/global/netError.css - skin/classic/global/numberbox.css - skin/classic/global/popup.css - skin/classic/global/preferences.css - skin/classic/global/progressmeter.css - skin/classic/global/radio.css - skin/classic/global/resizer.css - skin/classic/global/richlistbox.css - skin/classic/global/scrollbars.css (nativescrollbars.css) - skin/classic/global/scale.css - skin/classic/global/scrollbox.css - skin/classic/global/spinbuttons.css - skin/classic/global/splitter.css - skin/classic/global/tabprompts.css - skin/classic/global/tabbox.css - skin/classic/global/textbox.css - skin/classic/global/datetimepicker.css -* skin/classic/global/toolbar.css - skin/classic/global/toolbarbutton.css -* skin/classic/global/tree.css -* skin/classic/global/viewbuttons.css - skin/classic/global/wizard.css - skin/classic/global/alerts/alert.css (alerts/alert.css) - skin/classic/global/arrow/arrow-dn-dis.gif (arrow/arrow-dn-dis.gif) - skin/classic/global/arrow/arrow-dn-dis.png (arrow/arrow-dn-dis.png) - skin/classic/global/arrow/arrow-dn-sharp.gif (arrow/arrow-dn-sharp.gif) - skin/classic/global/arrow/arrow-dn.gif (arrow/arrow-dn.gif) - skin/classic/global/arrow/arrow-dn.png (arrow/arrow-dn.png) - skin/classic/global/arrow/arrow-lft-dis.gif (arrow/arrow-lft-dis.gif) - skin/classic/global/arrow/arrow-lft-hov.gif (arrow/arrow-lft-hov.gif) - skin/classic/global/arrow/arrow-lft-sharp-end.gif (arrow/arrow-lft-sharp-end.gif) - skin/classic/global/arrow/arrow-lft-sharp.gif (arrow/arrow-lft-sharp.gif) - skin/classic/global/arrow/arrow-lft.gif (arrow/arrow-lft.gif) - skin/classic/global/arrow/arrow-rit-dis.gif (arrow/arrow-rit-dis.gif) - skin/classic/global/arrow/arrow-rit-hov.gif (arrow/arrow-rit-hov.gif) - skin/classic/global/arrow/arrow-rit-sharp-end.gif (arrow/arrow-rit-sharp-end.gif) - skin/classic/global/arrow/arrow-rit-sharp.gif (arrow/arrow-rit-sharp.gif) - skin/classic/global/arrow/arrow-rit.gif (arrow/arrow-rit.gif) - skin/classic/global/arrow/arrow-up-dis.gif (arrow/arrow-up-dis.gif) - skin/classic/global/arrow/arrow-up-sharp.gif (arrow/arrow-up-sharp.gif) - skin/classic/global/arrow/arrow-up.gif (arrow/arrow-up.gif) - skin/classic/global/arrow/panelarrow-horizontal.png (arrow/panelarrow-horizontal.png) - skin/classic/global/arrow/panelarrow-horizontal@2x.png (arrow/panelarrow-horizontal@2x.png) - skin/classic/global/arrow/panelarrow-vertical.png (arrow/panelarrow-vertical.png) - skin/classic/global/arrow/panelarrow-vertical@2x.png (arrow/panelarrow-vertical@2x.png) - skin/classic/global/checkbox/cbox-check.gif (checkbox/cbox-check.gif) - skin/classic/global/checkbox/cbox-check-dis.gif (checkbox/cbox-check-dis.gif) - skin/classic/global/console/console-error-caret.gif (console/console-error-caret.gif) - skin/classic/global/console/console-error-dash.gif (console/console-error-dash.gif) -* skin/classic/global/console/console.css (console/console.css) - skin/classic/global/dirListing/dirListing.css (dirListing/dirListing.css) - skin/classic/global/dirListing/folder.png (dirListing/folder.png) - skin/classic/global/dirListing/remote.png (dirListing/remote.png) - skin/classic/global/dirListing/up.png (dirListing/up.png) - skin/classic/global/icons/autocomplete-dropmarker.png (icons/autocomplete-dropmarker.png) - skin/classic/global/icons/autocomplete-search.svg (icons/autocomplete-search.svg) - skin/classic/global/icons/autoscroll.png (icons/autoscroll.png) - skin/classic/global/icons/blacklist_favicon.png (icons/blacklist_favicon.png) - skin/classic/global/icons/blacklist_64.png (icons/blacklist_64.png) - skin/classic/global/icons/chevron.png (icons/chevron.png) - skin/classic/global/icons/chevron-inverted.png (icons/chevron-inverted.png) - skin/classic/global/icons/chevron@2x.png (icons/chevron@2x.png) - skin/classic/global/icons/chevron-inverted@2x.png (icons/chevron-inverted@2x.png) - skin/classic/global/icons/checkbox.png (icons/checkbox.png) - skin/classic/global/icons/checkbox@2x.png (icons/checkbox@2x.png) - skin/classic/global/icons/close.png (icons/close.png) - skin/classic/global/icons/close@2x.png (icons/close@2x.png) - skin/classic/global/icons/glyph-dropdown.png (icons/glyph-dropdown.png) - skin/classic/global/icons/glyph-dropdown@2x.png (icons/glyph-dropdown@2x.png) - skin/classic/global/icons/information-16.png (icons/information-16.png) - skin/classic/global/icons/information-24.png (icons/information-24.png) - skin/classic/global/icons/information-32.png (icons/information-32.png) - skin/classic/global/icons/information-64.png (icons/information-64.png) - skin/classic/global/icons/information-large.png (icons/information-large.png) - skin/classic/global/icons/loading_16.png (icons/loading_16.png) - skin/classic/global/icons/menulist-dropmarker.png (icons/menulist-dropmarker.png) - skin/classic/global/icons/notfound.png (icons/notfound.png) - skin/classic/global/icons/notloading_16.png (icons/notloading_16.png) - skin/classic/global/icons/panebutton-active.png (icons/panebutton-active.png) - skin/classic/global/icons/panebutton-inactive.png (icons/panebutton-inactive.png) - skin/classic/global/icons/panel-dropmarker.png (icons/panel-dropmarker.png) - skin/classic/global/icons/resizer.png (icons/resizer.png) - skin/classic/global/icons/resizer@2x.png (icons/resizer@2x.png) - skin/classic/global/icons/resizer-rtl.png (icons/resizer-rtl.png) - skin/classic/global/icons/resizer-rtl@2x.png (icons/resizer-rtl@2x.png) - skin/classic/global/icons/search-textbox.svg (icons/search-textbox.svg) - skin/classic/global/icons/searchfield-cancel.svg (icons/searchfield-cancel.svg) - skin/classic/global/icons/tabprompts-bgtexture.png (icons/tabprompts-bgtexture.png) - skin/classic/global/icons/warning-16.png (icons/warning-16.png) - skin/classic/global/icons/warning-32.png (icons/warning-32.png) - skin/classic/global/icons/warning-64.png (icons/warning-64.png) - skin/classic/global/icons/warning-large.png (icons/warning-large.png) - skin/classic/global/icons/error-16.png (icons/error-16.png) - skin/classic/global/icons/error-64.png (icons/error-64.png) - skin/classic/global/icons/error-large.png (icons/error-large.png) - skin/classic/global/icons/Error.png (icons/Error.png) - skin/classic/global/icons/question-16.png (icons/question-16.png) - skin/classic/global/icons/question-32.png (icons/question-32.png) - skin/classic/global/icons/question-64.png (icons/question-64.png) - skin/classic/global/icons/question-large.png (icons/question-large.png) - skin/classic/global/icons/sslWarning.png (icons/sslWarning.png) - skin/classic/global/notification/close.png (notification/close.png) - skin/classic/global/notification/error-icon.png (notification/error-icon.png) - skin/classic/global/notification/info-icon.png (notification/info-icon.png) - skin/classic/global/notification/warning-icon.png (notification/warning-icon.png) -* skin/classic/global/in-content/common.css (in-content/common.css) -* skin/classic/global/in-content/info-pages.css (in-content/info-pages.css) - skin/classic/global/scale/scale-tray-horiz.gif (scale/scale-tray-horiz.gif) - skin/classic/global/scale/scale-tray-vert.gif (scale/scale-tray-vert.gif) - skin/classic/global/splitter/dimple.png (splitter/dimple.png) - skin/classic/global/splitter/grip-bottom.gif (splitter/grip-bottom.gif) - skin/classic/global/splitter/grip-top.gif (splitter/grip-top.gif) - skin/classic/global/splitter/grip-left.gif (splitter/grip-left.gif) - skin/classic/global/splitter/grip-right.gif (splitter/grip-right.gif) - skin/classic/global/toolbar/spring.png (toolbar/spring.png) - skin/classic/global/toolbar/toolbar-separator.png (toolbar/toolbar-separator.png) - skin/classic/global/tree/arrow-disclosure.svg (tree/arrow-disclosure.svg) - skin/classic/global/tree/columnpicker.gif (tree/columnpicker.gif) - skin/classic/global/tree/folder.png (tree/folder.png) - skin/classic/global/tree/folder@2x.png (tree/folder@2x.png) - -#ifdef MOZ_PHOENIX -[browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar: -#elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES -[extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar: -#endif -% override chrome://global/skin/dirListing/local.png chrome://global/skin/dirListing/folder.png diff --git a/toolkit/themes/osx/global/linkTree.css b/toolkit/themes/osx/global/linkTree.css deleted file mode 100644 index d83c5bfd9d..0000000000 --- a/toolkit/themes/osx/global/linkTree.css +++ /dev/null @@ -1,32 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/** - * All the properties in this rule are important to avoid having to create - * a special type of tree. This stylesheet can be loaded into a document with - * a single tree that is a link tree. Hardly elegant but it's efficient. - */ -treeitem[selected="true"] > treerow - { - background : transparent !important; - border : none !important; - color : -moz-FieldText !important; - } - -treecell:hover - { - text-decoration : underline !important; - color : #000080 !important; - cursor : pointer; - } - -treecell:hover:active - { - text-decoration : underline !important; - color : red !important; - } - - diff --git a/toolkit/themes/osx/global/listbox.css b/toolkit/themes/osx/global/listbox.css deleted file mode 100644 index 90928c7699..0000000000 --- a/toolkit/themes/osx/global/listbox.css +++ /dev/null @@ -1,113 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -listbox { - -moz-appearance: listbox; - margin: 2px 4px; - background-color: #FFFFFF; - color: -moz-FieldText; -} - -.listcell-label { - margin: 0px !important; - padding-bottom: 1px; - padding-inline-start: 4px; - white-space: nowrap; -} - -/* ::::: listitem ::::: */ - -listitem { - border: 1px solid transparent; -} - -listitem[selected="true"] { - background-color: -moz-mac-secondaryhighlight; - color: -moz-DialogText; -} - -listbox:focus > listitem[selected="true"] { - background-color: Highlight; - color: HighlightText; -} - -/* ::::: listheader ::::: */ - -listheader { - -moz-appearance: treeheadercell; - -moz-box-align: center; - border: 2px solid; - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow; - background-color: -moz-Dialog; - color: -moz-DialogText; - padding: 0 4px; -} - -listheader[sortable="true"]:hover:active { - border-top: 2px solid; - border-right: 1px solid; - border-bottom: 1px solid; - border-left: 2px solid; - -moz-border-top-colors: ThreeDShadow -moz-Dialog; - -moz-border-right-colors: ThreeDShadow; - -moz-border-bottom-colors: ThreeDShadow; - -moz-border-left-colors: ThreeDShadow -moz-Dialog; - padding-top: 1px; - padding-inline-start: 5px; - padding-inline-end: 4px; -} - -.listheader-icon { - margin-inline-end: 2px; -} - -.listheader-label { - margin: 0px !important; -} - -/* ::::: listcell ::::: */ - -.listcell-label { - margin: 0px !important; - padding-bottom: 1px; - padding-inline-start: 4px; - white-space: nowrap; -} - -.listcell-icon { - margin-inline-end: 2px; -} - -.listcell-label[disabled="true"] { - color: GrayText; -} - -/* ::::: listcell checkbox ::::: */ - -.listcell-check { - -moz-appearance: checkbox; - -moz-box-align: center; - margin: 0px 2px; - border: 1px solid -moz-DialogText; - min-width: 13px; - min-height: 13px; - background: -moz-Field no-repeat 50% 50%; -} - -.listcell-check[checked="true"] { - background-image: url("chrome://global/skin/checkbox/cbox-check.gif"); -} - -.listcell-check[disabled="true"] { - border-color: GrayText; -} - -.listcell-check[disabled="true"][checked="true"] { - background-image: url("chrome://global/skin/checkbox/cbox-check-dis.gif"); -} diff --git a/toolkit/themes/osx/global/menu.css b/toolkit/themes/osx/global/menu.css deleted file mode 100644 index 49ca168a64..0000000000 --- a/toolkit/themes/osx/global/menu.css +++ /dev/null @@ -1,187 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -menu, -menuitem, -menucaption { - -moz-appearance: menuitem; - -moz-box-align: center; - color: MenuText; - font: -moz-pull-down-menu; - list-style-image: none; - -moz-image-region: auto; - padding: 0 21px 2px; -} - -menu[disabled="true"], menuitem[disabled="true"], -menu[_moz-menuactive="true"][disabled="true"], -menuitem[_moz-menuactive="true"][disabled="true"] { - color: -moz-mac-menutextdisable; -} - -/* ..... internal content .... */ - -.menu-text, -.menu-iconic-text, -.menu-accel, -.menu-iconic-accel { - margin: 0 !important; -} - -.menu-text, -.menu-iconic-text { - font-weight: inherit; - color: inherit; -} - -menucaption > .menu-text, -menucaption > .menu-iconic-text { - font-weight: bold; -} - -.menu-description { - font-style: italic; - color: -moz-mac-menutextdisable; - margin-inline-start: 1ex !important; -} - -.menu-iconic-icon { - height: 16px; - margin-top: -2px; - margin-bottom: -2px; - margin-inline-end: 5px; - /* Empty icons shouldn't take up room, so we need to compensate - * the 5px margin-end with a negative margin-start. - */ - margin-inline-start: -5px; -} - -/* menuitems with icons */ -.menuitem-iconic, -.menu-iconic, -menuitem[image], -menuitem[src] { - /* 2px higher than those without icons */ - padding-top: 1px; - padding-bottom: 3px; -} - -.menuitem-iconic > .menu-iconic-left > .menu-iconic-icon, -.menu-iconic > .menu-iconic-left > .menu-iconic-icon, -menuitem[image] > .menu-iconic-left > .menu-iconic-icon, -menuitem[src] > .menu-iconic-left > .menu-iconic-icon { - margin-inline-start: 0; - width: 16px; -} - -/* ..... menu arrow box ..... */ - -.menu-right, -.menu-accel-container { - margin-inline-start: 21px; - margin-inline-end: -9px; - -moz-box-pack: end; -} - -.menu-right { - list-style-image: none; - -moz-appearance: menuarrow; -} - -/* ::::: menu/menuitems in menubar ::::: */ - -menubar > menu { - -moz-appearance: none; - padding: 2px 5px 2px 7px; - margin: 1px 0; -} - -menubar > menu[_moz-menuactive="true"] { - color: inherit; - background-color: transparent; -} - -menubar > menu[_moz-menuactive="true"][open="true"] { - -moz-appearance: menuitem; - color: -moz-mac-menutextselect; -} - -/* ..... internal content .... */ - -.menubar-left { - margin: 0 2px; - color: inherit; -} - -.menubar-text { - margin: 0 1px !important; - color: inherit; -} - -/* ::::: menu/menuitems in popups ::::: */ - -menupopup > menu, -menupopup > menuitem, -menupopup > menucaption { - max-width: 42em; -} - -menu[_moz-menuactive="true"], -menuitem[_moz-menuactive="true"] { - color: -moz-mac-menutextselect; - background-color: Highlight; -} - -/* ::::: menu/menuitems in menulist popups ::::: */ - -menulist > menupopup > menuitem, -menulist > menupopup > menucaption, -menulist > menupopup > menu { - max-width: none; - font: inherit; - color: -moz-FieldText; -} - -/* ::::: menuitems in editable menulist popups ::::: */ - -menulist[editable="true"] > menupopup > menuitem, -menulist[editable="true"] > menupopup > menucaption { - -moz-appearance: none; -} - -menulist[editable="true"] > menupopup > :-moz-any(menuitem, menucaption) > .menu-iconic-left { - display: none; -} - -/* ::::: checked menuitems ::::: */ - -:not(menulist) > menupopup > menuitem[checked="true"], -:not(menulist) > menupopup > menuitem[selected="true"] { - -moz-appearance: checkmenuitem; -} - -menulist:not([editable="true"]) > menupopup > menuitem[checked="true"]::before, -menulist:not([editable="true"]) > menupopup > menuitem[selected="true"]::before { - content: '\2713'; /* a checkmark */ - display: block; - width: 15px; - margin-inline-start: -15px; -} - -/* ::::: menuseparator ::::: */ - -menuseparator { - -moz-appearance: menuseparator; - margin: 5px 0; - padding: 1px 0; -} - -/* ::::: autocomplete ::::: */ - -.autocomplete-history-popup > menuitem { - max-width: none !important; - font: message-box; -} diff --git a/toolkit/themes/osx/global/menulist.css b/toolkit/themes/osx/global/menulist.css deleted file mode 100644 index a4feca947e..0000000000 --- a/toolkit/themes/osx/global/menulist.css +++ /dev/null @@ -1,65 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -menulist { - -moz-appearance: menulist; - margin: 5px 2px 3px; - color: -moz-DialogText; - text-shadow: none; -} - -menulist:not([popuponly="true"]) { - min-height: 20px; -} - -.menulist-label-box { - -moz-appearance: menulist-text; - -moz-box-align: center; - -moz-box-pack: center; - margin-bottom: 1px; -} - -.menulist-label { - margin: 1px 3px !important; -} - -.menulist-description { - font-style: italic; - color: GrayText; - margin-inline-start: 1ex !important; -} - -/* ..... dropmarker ..... */ - -.menulist-dropmarker { - display: none; -} - -/* ..... disabled state ..... */ - -menulist[disabled="true"] { - color: GrayText; -} - -menulist[disabled="true"] > .menulist-dropmarker { - padding-inline-start: 7px !important; -} - -/* ::::: editable menulists ::::: */ - -menulist[editable="true"] { - -moz-appearance: menulist-textfield; - margin: 4px 2px; -} - -html|*.menulist-editable-input { - margin: 0px !important; - border: none !important; - padding: 0px !important; - background: inherit; - font: inherit; -} diff --git a/toolkit/themes/osx/global/moz.build b/toolkit/themes/osx/global/moz.build deleted file mode 100644 index 635fa39c99..0000000000 --- a/toolkit/themes/osx/global/moz.build +++ /dev/null @@ -1,6 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -JAR_MANIFESTS += ['jar.mn'] \ No newline at end of file diff --git a/toolkit/themes/osx/global/nativescrollbars.css b/toolkit/themes/osx/global/nativescrollbars.css deleted file mode 100644 index 82ef4d2ac1..0000000000 --- a/toolkit/themes/osx/global/nativescrollbars.css +++ /dev/null @@ -1,89 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -scrollbar { - -moz-appearance: scrollbar; - -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar); - cursor: default; - background-color: white; -} - -scrollbar[root="true"] { - position: relative; - z-index: 2147483647; /* largest positive value of a signed 32-bit integer */ -} - -html|select[size]:not([size="0"]):not([size="1"]) > scrollbar, -html|select[multiple] > scrollbar { - -moz-appearance: scrollbar-small; -} - -@media all and (-moz-overlay-scrollbars) { - scrollbar:not([active="true"]), - scrollbar[disabled="true"] { - visibility: hidden; - } -} - -/* ..... track ..... */ - -slider { - -moz-appearance: scrollbartrack-horizontal; -} - -slider[orient="vertical"] { - -moz-appearance: scrollbartrack-vertical; -} - -/* ..... thumb ..... */ - -thumb { - -moz-appearance: scrollbarthumb-horizontal; -} - -thumb[orient="vertical"] { - -moz-appearance: scrollbarthumb-vertical; -} - -/* ..... increment ..... */ - -scrollbarbutton[type="increment"] { - -moz-appearance: scrollbarbutton-right; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="increment"] { - -moz-appearance: scrollbarbutton-down; -} - -/* ..... decrement ..... */ - -scrollbarbutton[type="decrement"] { - -moz-appearance: scrollbarbutton-left; -} - -scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"] { - -moz-appearance: scrollbarbutton-up; -} - -/* ::::: square at the corner of two scrollbars ::::: */ - -scrollcorner { - /* XXX -moz-appearance: scrollcorner; */ - -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar-base); - width: 16px; - cursor: default; - background-color: white; -} - -/* ::::::::::::::::::::: MEDIA PRINT :::::::::::::::::::::: */ -@media print { - html|div scrollbar { - -moz-appearance: scrollbar; - -moz-binding: url(chrome://global/content/bindings/scrollbar.xml#scrollbar); - cursor: default; - } -} diff --git a/toolkit/themes/osx/global/netError.css b/toolkit/themes/osx/global/netError.css deleted file mode 100644 index 9255f958e3..0000000000 --- a/toolkit/themes/osx/global/netError.css +++ /dev/null @@ -1,145 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - * This defines the look-and-feel styling of the error pages. - * (see: netError.xhtml) - * - * Original styling by William Price - * Updated by: Steven Garrity - * Henrik Skupin - */ - -html { - background: -moz-Dialog; -} - -body { - margin: 0; - padding: 0 1em; - color: -moz-FieldText; - font: message-box; -} - -h1 { - margin: 0 0 .6em 0; - border-bottom: 1px solid ThreeDLightShadow; - font-size: 160%; -} - -ul, ol { - margin: 0; - margin-inline-start: 1.5em; - padding: 0; -} - -ul > li, ol > li { - margin-bottom: .5em; -} - -ul { - list-style: square; -} - -#errorPageContainer { - position: relative; - min-width: 13em; - max-width: 52em; - margin: 4em auto; - border: 1px solid ThreeDShadow; - border-radius: 10px; - padding: 3em; - padding-inline-start: 30px; - background: url("chrome://global/skin/icons/warning-large.png") left 0 no-repeat -moz-Field; - background-origin: content-box; -} - -#errorPageContainer.certerror { - background-image: url("chrome://global/skin/icons/sslWarning.png"); -} - -#errorPageContainer:dir(rtl) { - background-position: right 0; -} - -#errorTitle { - margin-inline-start: 80px; -} - -#errorLongContent { - margin-inline-start: 80px; -} - -#errorShortDesc > p { - overflow: auto; - border-bottom: 1px solid ThreeDLightShadow; - padding-bottom: 1em; - font-size: 130%; - white-space: pre-wrap; -} - -#errorLongDesc { - padding-inline-end: 3em; - font-size: 110%; -} - -#errorLongDesc > p { -} - -#errorTryAgain { - margin-top: 2em; - margin-inline-start: 80px; -} - -#brand { - position: absolute; - right: 0; - bottom: -1.5em; - margin-inline-end: 10px; - opacity: .4; -} - -#brand:dir(rtl) { - right: auto; - left: 0; -} - -#brand > p { - margin: 0; -} - -#errorContainer { - display: none; -} - -#securityOverrideDiv { - padding-top: 10px; -} - -#securityOverrideContent { - background-color: #FFF090; /* Pale yellow */ - padding: 10px; - border-radius: 10px; -} - -/* Custom styling for 'blacklist' error class */ -:root.blacklist #errorTitle, :root.blacklist #errorLongContent, -:root.blacklist #errorShortDesc, :root.blacklist #errorLongDesc, -:root.blacklist a { - background-color: #722; /* Dark red */ - color: white; -} - -:root.blacklist #errorPageContainer { - background-image: url("chrome://global/skin/icons/blacklist_64.png"); - background-color: #722; -} - -:root.blacklist { - background: #333; -} - -:root.blacklist #errorTryAgain { - display: none; -} diff --git a/toolkit/themes/osx/global/notification.css b/toolkit/themes/osx/global/notification.css deleted file mode 100644 index 6d22cf9c86..0000000000 --- a/toolkit/themes/osx/global/notification.css +++ /dev/null @@ -1,206 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -notification { - padding: 3px 3px 4px; - text-shadow: none; -} - -notification[type="info"] { - color: rgba(255,255,255,0.95); - background: linear-gradient(#606060, #404040); - border-top: 1px solid #2a2a2a; - border-bottom: 1px solid #2a2a2a; -} - -notification[type="warning"] { - color: rgba(0,0,0,0.95); - background: linear-gradient(#ffe13e, #ffc703); - border-top: 1px solid #bf8a01; - border-bottom: 1px solid #bf8a01; -} - -notification[type="critical"] { - color: rgba(255,255,255,0.95); - background: linear-gradient(#d40000, #980000); - border-top: 1px solid #5d0000; - border-bottom: 1px solid #5d0000; -} - -notificationbox[notificationside="top"] > notification { - border-top-style: none; -} - -notificationbox[notificationside="bottom"] > notification { - border-bottom-style: none; -} - -.messageText > .text-link { - color: inherit !important; - text-decoration: underline; -} - -.messageImage { - width: 16px; - height: 16px; - margin: 0 4px; -} - -/* Default icons for notifications */ - -.messageImage[type="info"] { - list-style-image: url("chrome://global/skin/notification/info-icon.png"); -} - -.messageImage[type="warning"] { - list-style-image: url("chrome://global/skin/notification/warning-icon.png"); -} - -.messageImage[type="critical"] { - list-style-image: url("chrome://global/skin/notification/error-icon.png"); -} - -.messageText { - margin: 0 3px !important; - padding: 0; - font-weight: bold; -} - -.messageCloseButton { - -moz-appearance: none; - padding: 0; - margin: 0 2px; - border: none; -} - -/* - Invert the close icon for @type=info since both are normally dark. It's unclear - why !important is necessary here so remove it if it's no longer needed. -*/ -notification[type="info"] .close-icon:not(:hover) { - -moz-image-region: rect(0, 64px, 16px, 48px) !important; -} - -@media (min-resolution: 2dppx) { - notification[type="info"] .close-icon:not(:hover) { - -moz-image-region: rect(0, 128px, 32px, 96px) !important; - } -} - -.messageCloseButton:-moz-focusring > .toolbarbutton-icon { - border-radius: 10000px; - box-shadow: 0 0 2px 1px -moz-mac-focusring, - 0 0 0 2px -moz-mac-focusring inset; -} - -@media (min-resolution: 2dppx) { - .messageCloseButton > .toolbarbutton-icon { - width: 16px; - } -} - -/* Popup notification */ - -.popup-notification-body { - max-width: 25em; -} - -.popup-notification-origin:not([value]), -.popup-notification-learnmore-link:not([href]) { - display: none; -} - -.popup-notification-origin { - margin-bottom: .3em !important; -} - -.popup-notification-learnmore-link { - margin-top: .5em !important; -} - -.popup-notification-button-container { - margin-top: 17px; -} - -.popup-notification-menubutton { - -moz-appearance: none; -} - -.popup-notification-menubutton:not([type="menu-button"]):-moz-focusring, -.popup-notification-menubutton:-moz-focusring > .button-menubutton-dropmarker, -.popup-notification-menubutton > .button-menubutton-button:-moz-focusring { - box-shadow: @focusRingShadow@; - position: relative; -} - -.popup-notification-menubutton:not([type="menu-button"]), -.popup-notification-menubutton > .button-menubutton-button, -.popup-notification-menubutton > .button-menubutton-dropmarker { - -moz-appearance: none; - color: #434343; - border-radius: 4px; - border: 1px solid #b5b5b5; - background: linear-gradient(#fff, #f2f2f2); - box-shadow: inset 0 1px rgba(255,255,255,.8), - inset 0 0 1px rgba(255,255,255,.25), - 0 1px rgba(255,255,255,.3); - background-clip: padding-box; - background-origin: padding-box; - padding: 2px 6px; -} - -.popup-notification-menubutton > .button-menubutton-button { - -moz-appearance: none; - margin: 0; - padding-top: 2px; - padding-bottom: 2px; - padding-inline-start: 8px; - padding-inline-end: 5px; -} - -.popup-notification-menubutton > .button-menubutton-dropmarker { - padding: 7px 8px; - margin-top: 0; - margin-bottom: 0; - margin-inline-start: -1px; - list-style-image: url("chrome://global/skin/icons/panel-dropmarker.png"); -} - -.popup-notification-menubutton > .button-menubutton-button:-moz-locale-dir(ltr), -.popup-notification-menubutton > .button-menubutton-dropmarker:-moz-locale-dir(rtl) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.popup-notification-menubutton > .button-menubutton-button:-moz-locale-dir(rtl), -.popup-notification-menubutton > .button-menubutton-dropmarker:-moz-locale-dir(ltr) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.popup-notification-menubutton:not([type="menu-button"]):hover:active, -.popup-notification-menubutton > .button-menubutton-button:hover:active, -.popup-notification-menubutton[open="true"] > .button-menubutton-dropmarker { - box-shadow: inset 0 1px 4px -3px #000, 0 1px rgba(255, 255, 255, 0.3); -} - -.popup-notification-closebutton { - margin-inline-end: -12px; - margin-top: -13px; -} - -.popup-notification-closeitem > .menu-iconic-left { - display: none; -} - -.popup-notification-menubutton > .button-menubutton-button[disabled] { - opacity: 0.5; -} - -.popup-notification-warning { - color: #aa1b08; -} diff --git a/toolkit/themes/osx/global/notification/close.png b/toolkit/themes/osx/global/notification/close.png deleted file mode 100644 index 3300a4d61ec92c7afb2dce9ce6e58898b46f8bfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 795 zcmV+$1LXXPP)S81-$bfbby@ZK~&Id^=2uM# zhR`91BEhrpblA0Kc1eVY-(`4tXMViTf8Gbg|K%u~(kReGGc6j-G*Mt$Vn;d+6p}D7 z{ip)5QOfmT7(*I{b3Kg`#rWroCBq~XENf5YXuEk;RI!jEsH~2M6A$WQO>#tq6Y2)n_kus)aD8jz z=Nfgm|)Ux|0 ZegU22(-a8^IJp1-002ovPDHLkV1m8JWbFU| diff --git a/toolkit/themes/osx/global/notification/error-icon.png b/toolkit/themes/osx/global/notification/error-icon.png deleted file mode 100644 index 54cc7e663b95362b82555f65ae3ebb609e45e928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmV+h0{Q)kP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP! z4JQB&vHMy800D+cL_t(I%Z-vTO9EjS$A5-OOHmCDEv+trWkeq#p=(eSTmzxWr74 zPRGvodcDJbzkdQ8lu9LaG#YvF3FZLZZubpPgb=5`?|)4uli_roGfmT87Xh-Wsy;;< zx~^-{ou!nvuIpMAB(>%sbXb>cmMzZ07*qo IM6N<$f(shd&;S4c diff --git a/toolkit/themes/osx/global/notification/info-icon.png b/toolkit/themes/osx/global/notification/info-icon.png deleted file mode 100644 index 55d45f165cd8473bd7cde5b2ce0d871b4f154f07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP! z4JS2N0zY{G00EUrL_t(I%bkP>9YVLvddaiuo`bAw#m6xlj~Bm?U%DB;`6z7W#w3g?s+z^Kumxh{#*u z2zUv+0KNftK&+JN*;-W!dc5oPmnNsR|7>1dZ;G`&u z8xc9MEAK59i&#WvwrQ=;0kqcVW#4>0|M1Ykdc8iY)oRbny^cns$M$Jcuh)-6Q$23hRwkXf@3xGV&FYNm?O((wZzb|*>d7gJ2MbUWIt86QK zo_7tjtHyc)Tm?aJ8^`h37?X&|%ovlzaXb!!;1;;r=>GnV7O#P0z~6}Pfe{b^Uu@xT Xj$uN%1ffLB00000NkvXXu0mjf2=?V1 diff --git a/toolkit/themes/osx/global/notification/warning-icon.png b/toolkit/themes/osx/global/notification/warning-icon.png deleted file mode 100644 index 13cf79d6df563d7d69bf05bd9c6f2b22e9e57bc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP! z4Jb9=nj^LV00HtzL_t(I%axPAYZOrs$3OG-M|QJCB!*N8r=Ye8h=ST&6~mH7YyyE` z;aXTk5Ig^oU}>Y(VrA+ST6igp;5Bk^VjEH%x$JG;yB(X2TsD`&fq`N8zWIK?Z{9;y znU+8c_*`e}DxB2dOA!RYC+FNUfbaW#Ywgo%I5Vv&A{)-RCEye|b_OGg{WPgAEwyN5)EK^mr7Y;N%8Dm}moit5%RrR5&K1$Pc7wCAN_xuvR z!9Hh<*#=y<+g0Ez@TIPuh&&UKxhwA=48vE>IUjJx$HzC$`$tDdHv#9I^TRNFIdy=D zw5+uofCZ|-U~pYT=0s%v`&p&2a)|s%YfE$fQcSNLZqA1z{ z&L-Ibb8v9b2M&S5x;9M}aUAc6hvrTU#r= zUhkT<)|=dKRaG;<1K@sDRnoA??Ck8>=H})PQPovo1(@Ogq6EJG1x7s%xLPWtp8x;= M07*qoM6N<$g4lHw82|tP diff --git a/toolkit/themes/osx/global/numberbox.css b/toolkit/themes/osx/global/numberbox.css deleted file mode 100644 index e5de22d218..0000000000 --- a/toolkit/themes/osx/global/numberbox.css +++ /dev/null @@ -1,33 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -textbox[type="number"] { - -moz-appearance: none; - -moz-box-align: center; - padding: 0 !important; - border: none; - background-color: transparent; - cursor: default; -} - -html|*.numberbox-input { - text-align: right; - padding: 0 1px !important; -} - -.numberbox-input-box { - -moz-appearance: textfield; - margin-right: 4px; - border: 3px solid; - -moz-border-top-colors: transparent #888888 #000000; - -moz-border-right-colors: transparent #FFFFFF #000000; - -moz-border-bottom-colors: transparent #FFFFFF #000000; - -moz-border-left-colors: transparent #888888 #000000; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - background-color: -moz-Field; -} diff --git a/toolkit/themes/osx/global/popup.css b/toolkit/themes/osx/global/popup.css deleted file mode 100644 index cf0266a3a6..0000000000 --- a/toolkit/themes/osx/global/popup.css +++ /dev/null @@ -1,141 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -menupopup, -panel { - -moz-appearance: menupopup; - background-color: Menu; -} - -menupopup > menu > menupopup { - margin-top: -4px; -} - -.popup-internal-box { - padding: 4px 0; -} - -panel[titlebar] { - -moz-appearance: none; /* to disable rounded corners */ -} - -panel[type="arrow"] { - -moz-appearance: none; - background: transparent; -} - -panel[type="arrow"][side="top"], -panel[type="arrow"][side="bottom"] { - margin-left: -25px; - margin-right: -25px; -} - -panel[type="arrow"][side="left"], -panel[type="arrow"][side="right"] { - margin-top: -25px; - margin-bottom: -25px; -} - -.panel-arrowcontent { - -moz-appearance: none; - background: var(--arrowpanel-background); - border-radius: var(--arrowpanel-border-radius); - box-shadow: 0 0 0 1px var(--arrowpanel-border-color); - color: var(--arrowpanel-color); - border: none; - padding: var(--arrowpanel-padding); - margin: 1px; -} - -.panel-arrow[side="top"] { - list-style-image: var(--panel-arrow-image-vertical, - url("chrome://global/skin/arrow/panelarrow-vertical.png")); - margin-left: 16px; - margin-right: 16px; - margin-bottom: -1px; -} - -.panel-arrow[side="bottom"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-vertical.png"); - -moz-transform: scaleY(-1); - margin-left: 16px; - margin-right: 16px; - margin-top: -1px; -} - -.panel-arrow[side="left"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal.png"); - margin-top: 16px; - margin-bottom: 16px; - margin-right: -1px; -} - -.panel-arrow[side="right"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal.png"); - transform: scaleX(-1); - margin-top: 16px; - margin-bottom: 16px; - margin-left: -1px; -} - -@media (min-resolution: 2dppx) { - .panel-arrow[side="top"], - .panel-arrow[side="bottom"] { - list-style-image: var(--panel-arrow-image-vertical, - url("chrome://global/skin/arrow/panelarrow-vertical@2x.png")); - width: 18px; - height: 10px; - } - - .panel-arrow[side="left"], - .panel-arrow[side="right"] { - list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal@2x.png"); - width: 10px; - height: 18px; - } -} - -/* ::::: tooltip ::::: */ - -tooltip { - -moz-appearance: tooltip; - margin-top: 18px; - padding: 2px 3px; - max-width: 40em; - color: InfoText; - font: message-box; - cursor: default; -} - -tooltip[titletip="true"] { - /* See bug 32157 comment 128 - * margin: -2px 0px 0px -3px; - */ - max-width: none; -} - -/* rules for popups associated with menulists */ - -menulist > menupopup { - min-width: 0px; -} - -menulist > menupopup:not([position]) { - margin-inline-start: -13px; - margin-top: -2px; -} - -menulist[editable="true"] > menupopup { - -moz-appearance: none; -} - -menulist > menupopup > .popup-internal-box { - padding: 0; -} - -menulist:not([editable="true"]) > menupopup { - padding: 4px 0; -} diff --git a/toolkit/themes/osx/global/preferences.css b/toolkit/themes/osx/global/preferences.css deleted file mode 100644 index d0b82a819c..0000000000 --- a/toolkit/themes/osx/global/preferences.css +++ /dev/null @@ -1,64 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -prefwindow { - padding: 0; - font: -moz-dialog !important; -} - -prefpane { - padding: 12px 12px 0 12px; -} - -prefwindow[type="child"] > prefpane { - padding: 0; -} - -.prefWindow-dlgbuttons { - margin: 0 12px 12px; - padding-top: 0 !important; -} - -.paneSelector { - font: message-box; - padding: 1px 4px; - -moz-appearance: toolbar; - margin: 0; -} - -radio[pane] { - border: solid transparent; - border-width: 0 2px; - padding: 5px 4px 3px; - margin: 0; - -moz-appearance: none; - text-shadow: rgba(255, 255, 255, 0.4) 0 1px; -} - -radio[pane]:active:hover { - text-shadow: none; -} - -radio[pane] > .paneButtonIcon { - /* preload external filter file */ - background-image: url("chrome://global/skin/filters.svg"); -} - -radio[pane]:active:hover > .paneButtonIcon { - filter: url("chrome://global/skin/filters.svg#iconPressed"); -} - -radio[pane][selected="true"] { - -moz-border-image: url("chrome://global/skin/icons/panebutton-active.png") 0 2 fill repeat stretch; -} - -radio[pane][selected="true"]:-moz-window-inactive { - -moz-border-image: url("chrome://global/skin/icons/panebutton-inactive.png") 0 2 fill repeat stretch; -} - -.paneButtonLabel { - margin: 0 !important; -} diff --git a/toolkit/themes/osx/global/progressmeter.css b/toolkit/themes/osx/global/progressmeter.css deleted file mode 100644 index 13fce252ab..0000000000 --- a/toolkit/themes/osx/global/progressmeter.css +++ /dev/null @@ -1,22 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -progressmeter { - -moz-appearance: progressbar; - margin: 2px 4px; - min-width: 128px; - height: 12px; -} - -.progress-remainder[flex="100"], .progress-remainder[flex="0"] { - background-image: none !important; - -moz-appearance: none; -} - -.progressmeter-statusbar { - margin: 0; - border-width: 1px; -} diff --git a/toolkit/themes/osx/global/radio.css b/toolkit/themes/osx/global/radio.css deleted file mode 100644 index e21d93011b..0000000000 --- a/toolkit/themes/osx/global/radio.css +++ /dev/null @@ -1,43 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -radiogroup { - margin: 1px 0px 1px 0px; -} - -radio { - -moz-appearance: radio-container; - -moz-box-align: center; - margin: 4px 2px; - -moz-user-focus: ignore; -} - -.radio-label-box { - margin-inline-start: 0px; - padding: 0px; -} - -.radio-icon { - margin-inline-end: 2px; -} - -.radio-label { - margin: 1px 0 !important; -} - -radio[disabled="true"] { - color: GrayText !important; -} - -.radio-check, .radio-check-box1 { - -moz-appearance: radio; - margin: 0 1px 1px; - /* vertical-align tells native theming where to snap to. However, this doesn't - * always work reliably because of bug 503833. */ - vertical-align: bottom; - width: 1.3em; - height: 1.3em; -} diff --git a/toolkit/themes/osx/global/resizer.css b/toolkit/themes/osx/global/resizer.css deleted file mode 100644 index 18cdd2bc93..0000000000 --- a/toolkit/themes/osx/global/resizer.css +++ /dev/null @@ -1,69 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -resizer { - -moz-appearance: resizer; - background: url("chrome://global/skin/icons/resizer.png") no-repeat; - background-size: 100% 100%; - cursor: se-resize; - min-width: 15px; - width: 15px; - min-height: 15px; - height: 15px; -} -@media (min-resolution: 2dppx) { - resizer { - background-image: url("chrome://global/skin/icons/resizer@2x.png"); - background-size: 100% 100%; - } -} - -resizer[type="window"] { - display: none; -} - -resizer[rtl="true"], -resizer[dir="bottomend"]:-moz-locale-dir(rtl) { - background: url("chrome://global/skin/icons/resizer-rtl.png") no-repeat; -} -@media (min-resolution: 2dppx) { - resizer[rtl="true"], - resizer[dir="bottomend"]:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/icons/resizer-rtl@2x.png"); - background-size: 100% 100%; - } -} - - -resizer[dir="left"], -resizer[dir="bottomleft"], -resizer[dir="bottomstart"] { - transform: scaleX(-1); -} - -resizer[dir="bottomleft"], -resizer[dir="bottomstart"]:not([rtl="true"]):not(:-moz-locale-dir(rtl)), -resizer[dir="bottomend"][rtl="true"] { - cursor: sw-resize; -} - -resizer[dir="top"], -resizer[dir="bottom"] { - cursor: ns-resize; -} - -resizer[dir="left"], -resizer[dir="right"] { - cursor: ew-resize; -} - -resizer[dir="topleft"] { - cursor: nw-resize; -} - -resizer[dir="topright"] { - cursor: ne-resize; -} diff --git a/toolkit/themes/osx/global/richlistbox.css b/toolkit/themes/osx/global/richlistbox.css deleted file mode 100644 index 605c89abb3..0000000000 --- a/toolkit/themes/osx/global/richlistbox.css +++ /dev/null @@ -1,27 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -richlistbox { - -moz-appearance: listbox; - margin: 2px 4px; - background-color: -moz-Field; - color: -moz-FieldText; -} - -richlistbox[disabled="true"] { - color: GrayText; -} - -richlistitem[selected="true"] { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -richlistbox:focus > richlistitem[selected="true"] { - background-color: Highlight; - color: HighlightText; -} - diff --git a/toolkit/themes/osx/global/scale.css b/toolkit/themes/osx/global/scale.css deleted file mode 100644 index 2e090bf28d..0000000000 --- a/toolkit/themes/osx/global/scale.css +++ /dev/null @@ -1,46 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -.scale-slider { - -moz-appearance: scale-horizontal; - background: url("chrome://global/skin/scale/scale-tray-horiz.gif") 0% 50% repeat-x; - margin: 2px 4px; - width: 100px; -} - -.scale-slider[orient="vertical"] -{ - -moz-appearance: scale-vertical; - background: url("chrome://global/skin/scale/scale-tray-vert.gif") 50% 0% repeat-y; - margin: 4px 2px; - width: auto; - height: 100px; -} - -.scale-thumb { - -moz-appearance: scalethumb-horizontal; - border: 2px solid; - -moz-border-top-colors: ThreeDLightShadow ThreeDHighlight; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDLightShadow ThreeDHighlight; - background-color: -moz-Dialog; - min-width: 30px; - min-height: 15px; -} - -.scale-thumb[orient="vertical"] { - -moz-appearance: scalethumb-vertical; - min-width: 15px; - min-height: 30px; -} - -.scale-thumb[disabled="true"] { - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow !important; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow !important; -} diff --git a/toolkit/themes/osx/global/scale/scale-tray-horiz.gif b/toolkit/themes/osx/global/scale/scale-tray-horiz.gif deleted file mode 100644 index b87fe68c15a880deadf73304263a50657d7e6c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 ycmZ?wbhEHbWMp7tSjfQ8(9m$;z=8i@p!k!8k&A(eL5BedK=KSs%py$z4Aua)mJW{q diff --git a/toolkit/themes/osx/global/scale/scale-tray-vert.gif b/toolkit/themes/osx/global/scale/scale-tray-vert.gif deleted file mode 100644 index 97687b2e229de10d081cb99cadc6fb92fd7af5ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 ycmZ?wbhEHbWMg1tSjfQ8(9m$;z=8i@p!k!8k&A(eL5BedK=KSs%py$z4Aua)st%6; diff --git a/toolkit/themes/osx/global/scrollbox.css b/toolkit/themes/osx/global/scrollbox.css deleted file mode 100644 index c9b7276698..0000000000 --- a/toolkit/themes/osx/global/scrollbox.css +++ /dev/null @@ -1,62 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* Horizontal enabled */ -.autorepeatbutton-up[orient="horizontal"], -.scrollbutton-up[orient="horizontal"] { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down[orient="horizontal"], -.scrollbutton-down[orient="horizontal"] { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -/* Horizontal disabled */ -.autorepeatbutton-up[orient="horizontal"][disabled="true"], -.scrollbutton-up[orient="horizontal"][disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-lft-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down[orient="horizontal"][disabled="true"], -.scrollbutton-down[orient="horizontal"][disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-rit-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -/* Vertical enabled */ -.autorepeatbutton-up:not([orient="horizontal"]), -.scrollbutton-up { - list-style-image: url("chrome://global/skin/arrow/arrow-up-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down:not([orient="horizontal"]), -.scrollbutton-down { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-sharp.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -/* Vertical disabled */ -.autorepeatbutton-up[disabled="true"]:not([orient="horizontal"]), -.scrollbutton-up[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-up-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.autorepeatbutton-down[disabled="true"]:not([orient="horizontal"]), -.scrollbutton-down[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.gif"); - -moz-image-region: auto; /* cut off inheritance */ -} - -.scrollbutton-up > .toolbarbutton-text, -.scrollbutton-down > .toolbarbutton-text { - display: none; -} diff --git a/toolkit/themes/osx/global/shared.inc b/toolkit/themes/osx/global/shared.inc deleted file mode 100644 index 350fed1721..0000000000 --- a/toolkit/themes/osx/global/shared.inc +++ /dev/null @@ -1,20 +0,0 @@ -%filter substitution - -%define loweredShadow 0 1px rgba(255, 255, 255, .4) -%define focusRingShadow 0 0 1px -moz-mac-focusring inset, 0 0 4px 1px -moz-mac-focusring, 0 0 1.5px 1px -moz-mac-focusring -%define yosemiteFocusRingShadow 0 0 0 0.5px -moz-mac-focusring inset, 0 0 0 2px -moz-mac-focusring - -%define roundButtonBorder 1px solid rgba(0,0,0,.35) -%define roundButtonBackground linear-gradient(#f6f6f6, #e9e9e9) -%define roundButtonShadow 0 1px rgba(255,255,255,.5), inset 0 1px 1px rgba(255,255,255,.5) -%define roundButtonPressedBackground #dadada -%define roundButtonPressedShadow 0 1px rgba(255,255,255,.4), inset 0 1px 3px rgba(0,0,0,.2) - -%define scopeBarBackground linear-gradient(#E8E8E8, #D0D0D0) repeat-x -%define scopeBarSeparatorBorder 1px solid #888 -%define scopeBarTitleColor #6D6D6D - -%define toolbarbuttonCornerRadius 3px -%define toolbarbuttonBackground linear-gradient(#FFF, #ADADAD) repeat-x -%define toolbarbuttonPressedInnerShadow inset rgba(0, 0, 0, 0.3) 0 -6px 10px, inset #000 0 1px 3px, inset rgba(0, 0, 0, 0.2) 0 1px 3px -%define toolbarbuttonInactiveBorderColor rgba(146, 146, 146, 0.84) diff --git a/toolkit/themes/osx/global/spinbuttons.css b/toolkit/themes/osx/global/spinbuttons.css deleted file mode 100644 index bf89520f68..0000000000 --- a/toolkit/themes/osx/global/spinbuttons.css +++ /dev/null @@ -1,31 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -spinbuttons { - height: 24px; - min-height: 24px; - -moz-appearance: spinner; - cursor: default; -} - -.spinbuttons-up { - -moz-appearance: none; - -moz-box-flex: 1; - min-width: 1px; - min-height: 1px; - margin: 0; - padding: 0; -} - -.spinbuttons-down { - -moz-appearance: none; - -moz-box-flex: 1; - min-width: 1px; - min-height: 1px; - margin: 0; - padding: 0; -} - diff --git a/toolkit/themes/osx/global/splitter.css b/toolkit/themes/osx/global/splitter.css deleted file mode 100644 index caaa83ad0a..0000000000 --- a/toolkit/themes/osx/global/splitter.css +++ /dev/null @@ -1,124 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -/* ::::: splitter (vertical) ::::: */ - -splitter { - -moz-box-align: center; - -moz-box-pack: center; - cursor: ew-resize; - min-width: 9px; - min-height: 9px; - background: url("chrome://global/skin/splitter/dimple.png") transparent no-repeat center; -} - -splitter[state="collapsed"][collapse="before"], -splitter[state="collapsed"][substate="before"], -splitter[state="collapsed"][collapse="after"]:-moz-locale-dir(rtl), -splitter[state="collapsed"][substate="after"]:-moz-locale-dir(rtl) { - cursor: e-resize; -} - -splitter[state="collapsed"][collapse="after"], -splitter[state="collapsed"][substate="after"], -splitter[state="collapsed"][collapse="before"]:-moz-locale-dir(rtl), -splitter[state="collapsed"][substate="before"]:-moz-locale-dir(rtl) { - cursor: w-resize; -} - -splitter:-moz-lwtheme { - background: none; -} - -/* ::::: splitter (horizontal) ::::: */ - -splitter[orient="vertical"] { - cursor: ns-resize; - min-width: 0px; - min-height: 9px; - min-width: 9px; - background: url("chrome://global/skin/splitter/dimple.png") transparent no-repeat center; -} - -splitter[orient="vertical"][state="collapsed"][collapse="before"], -splitter[orient="vertical"][state="collapsed"][substate="before"] { - cursor: s-resize; -} - -splitter[orient="vertical"][state="collapsed"][collapse="after"], -splitter[orient="vertical"][state="collapsed"][substate="after"] { - cursor: n-resize; -} - -splitter[disabled="true"] { - cursor: default !important; -} - -/* ::::: splitter grippy ::::: */ - -grippy { - cursor: pointer; - margin: 0px 1px; - min-width: 4px; - min-height: 115px; - background-color: transparent; - background-repeat: no-repeat; -} - -grippy:hover { - background-color: ThreeDHighlight; -} - -splitter[orient="vertical"] > grippy { - margin: 1px 0px; - min-width: 115px; - min-height: 4px; -} - -/* ..... normal state ..... */ - -/* vertical grippies */ -splitter[collapse="before"] > grippy, -splitter[collapse="after"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-left.gif"); -} - -splitter[collapse="after"] > grippy, -splitter[collapse="before"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-right.gif"); -} - -/* horizontal grippies */ -splitter[collapse="before"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-top.gif"); -} - -splitter[collapse="after"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-bottom.gif"); -} - -/* ..... collapsed state ..... */ - -/* vertical grippies */ -splitter[collapse="before"][state="collapsed"] > grippy, -splitter[collapse="after"][state="collapsed"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-right.gif"); -} - -splitter[collapse="after"][state="collapsed"] > grippy, -splitter[collapse="before"][state="collapsed"] > grippy:-moz-locale-dir(rtl) { - background-image: url("chrome://global/skin/splitter/grip-left.gif"); -} - -/* horizontal grippies */ -splitter[collapse="before"][state="collapsed"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-bottom.gif"); -} - -splitter[collapse="after"][state="collapsed"][orient="vertical"] > grippy { - background-image: url("chrome://global/skin/splitter/grip-top.gif"); -} - diff --git a/toolkit/themes/osx/global/splitter/dimple.png b/toolkit/themes/osx/global/splitter/dimple.png deleted file mode 100644 index 4d0b91bfea743f38796fabf7e599ce6f23b6e246..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c4!3HFg*81KCQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jiflby978y+CnqE%Y+!g~rLiqRKupY!)##3c#F?_f!jB9^ zSAeX0+j64=oSmChIht?q{Qv*|I@==_jcaTSt)|kvPPx6SfCe#my85}Sb4q9e0Ol?* A$p8QV diff --git a/toolkit/themes/osx/global/splitter/grip-bottom.gif b/toolkit/themes/osx/global/splitter/grip-bottom.gif deleted file mode 100644 index af6290fe9deacdcdab045c2d7c81df5c22d6bc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmZ?wbhEHbEM{O~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#m?XaL)Ki2*JpSC zPq-0zeFdYC*U~qyRuxF^FY>)#oR|J8B8kb~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#mnFX=aLx~R|+=Y znaf_K;@Y=7bkU+!jMA*jBUe~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#mnFXLz=*~YqOsp zlT~d@+}0XDbJ5~kK?gLCZn{1(sqOllwb|wm&Zpm;*`az?ZCXufnE&&Q;!FJso!0nU WPfm-yrmww+wYYeN>UkkX25SIG3s$25 diff --git a/toolkit/themes/osx/global/splitter/grip-top.gif b/toolkit/themes/osx/global/splitter/grip-top.gif deleted file mode 100644 index 3cba0059461c6d52d41fda25610aecba188fa35b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmZ?wbhEHbEM{O~*v!CSXqbHL*s=da1I3>#j0_Bn3_1)z05ZdY#n#{i=d!&Pug~uO zAHS7RC9`wI6t?Wu`*hwM`;v3|M`TxIC#O(?g9ndP`*EeBl{sqjeO45E8aA%Gv8L>F IF9U-$0KE=Rn*aa+ diff --git a/toolkit/themes/osx/global/tabbox.css b/toolkit/themes/osx/global/tabbox.css deleted file mode 100644 index 4fcbac486d..0000000000 --- a/toolkit/themes/osx/global/tabbox.css +++ /dev/null @@ -1,148 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* - The default style of these tabs is that of an NSTabView with tabs at - the top in the "regular" size. These tabs can be used with or without - a tabbox element. - For bottom tabs you should use the "tabs-bottom" class on the tabbox - or the tabs element. Bottom tabs use a style that's similar to the - one used in Adium. -*/ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -tabbox { - margin: 0 5px; -} - -tabpanels { - -moz-appearance: tabpanels; - padding: 33px 15px 15px; -} - -tabs { - -moz-box-align: center; - font: menu; -} - -tabbox > tabs { - padding: 0 10px; - margin-bottom: -12px; - position: relative; -} - -tab { - -moz-appearance: tab; -} - -tab:-moz-focusring { - /* Tab focus rings need to overlay adjacent tabs. */ - position: relative; -} - -tab:first-of-type { - padding-inline-start: 2px; -} - -tab:last-of-type { - padding-inline-end: 2px; -} - -tab[visuallyselected="true"] { - color: #FFF; - text-shadow: rgba(0, 0, 0, 0.4) 0 1px; -} - -.tab-middle { - padding: 1px 6px 2px; -} - -.tabs-left, -.tabs-right { - -moz-box-flex: 1; -} - -/* Tabs at the bottom - * These tabs are smaller, left aligned and don't extend into the tabpanel. - */ - -tabbox.tabs-bottom > tabpanels { - padding: 10px; -} - -tabbox.tabs-bottom > tabs, -tabs.tabs-bottom { - background-color: rgba(0, 0, 0, 0.1); - padding: 0; - margin: 0; - border-top: 2px solid; - -moz-border-top-colors: #888 rgba(0, 0, 0, 0.08); - -moz-box-align: start; - font: message-box; -} - -tabbox.tabs-bottom > tabs > .tabs-left, -tabs.tabs-bottom > .tabs-left { - -moz-box-flex: 0; -} - -tabbox.tabs-bottom > tabs > tab, -tabs.tabs-bottom > tab { - -moz-appearance: none; - margin: -1px 0 0; - padding: 0 0 2px 0; - position: relative; - border-inline-end: 1px solid rgba(0, 0, 0, 0.19); -} - -tabbox.tabs-bottom > tabs > tab > .tab-middle, -tabs.tabs-bottom > tab > .tab-middle { - padding: 1px 2px 0 2px; -} - -tabbox.tabs-bottom > tabs > tab:not([visuallyselected=true]):hover, -tabs.tabs-bottom > tab:not([visuallyselected=true]):hover { - background-color: rgba(0, 0, 0, 0.1); - border-inline-end-color: rgba(0, 0, 0, 0.1); -} - -tabbox.tabs-bottom > tabs > tab[visuallyselected=true], -tabs.tabs-bottom > tab[visuallyselected=true] { - color: #000; - text-shadow: none; - border: solid #888; - border-width: 0 2px 2px; - border-radius: 2px; - -moz-border-left-colors: rgba(0, 0, 0, 0.08) #888; - -moz-border-right-colors: rgba(0, 0, 0, 0.08) #888; - -moz-border-bottom-colors: rgba(0, 0, 0, 0.08) #888; - margin-inline-end: -1px; - margin-top: -2px; - margin-bottom: 1px; - padding: 0; -} - -tabbox.tabs-bottom > tabs > tab[beforeselected=true], -tabs.tabs-bottom > tab[beforeselected=true] { - border-inline-end-color: transparent; - margin-inline-end: -2px; -} - -tabbox.tabs-bottom > tabs > tab:first-of-type:not([visuallyselected=true]), -tabs.tabs-bottom > tab:first-of-type:not([visuallyselected=true]) { - border-inline-start: 4px solid transparent; -} - -tabbox.tabs-bottom > tabs > tab:first-of-type[visuallyselected=true], -tabs.tabs-bottom > tab:first-of-type[visuallyselected=true] { - margin-inline-start: 2px; -} - -tabbox.tabs-bottom, -tabbox.tabs-bottom > tabpanels, -tabbox.tabs-bottom > tabs > tab[visuallyselected=true] > .tab-middle, -tabs.tabs-bottom > tab[visuallyselected=true] > .tab-middle { - -moz-appearance: dialog; -} diff --git a/toolkit/themes/osx/global/tabprompts.css b/toolkit/themes/osx/global/tabprompts.css deleted file mode 100644 index 14a23f2696..0000000000 --- a/toolkit/themes/osx/global/tabprompts.css +++ /dev/null @@ -1,67 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Tab Modal Prompt boxes */ -tabmodalprompt { - background-image: url(chrome://global/skin/icons/tabprompts-bgtexture.png); - background-color: hsla(0,0%,10%,.5); - font-family: sans-serif; /* use content font not system UI font */ - font-size: 110%; -} - -.mainContainer { - color: black; - background-color: hsla(0,0%,100%,.95); - background-clip: padding-box; - border-radius: 2px; - border: 1px solid hsla(0,0%,0%,.5); -} - -.topContainer { - padding: 20px; -} - -.buttonContainer { - padding: 12px 20px 15px; - background-color: hsla(0,0%,0%,.05); - border-top: 1px solid hsla(0,0%,0%,.05); -} - -button { - -moz-appearance: none; - padding: 2px 0; - margin: 0; - margin-inline-start: 8px; - border-radius: 2px; - color: black !important; - background-color: hsl(0,0%,90%); - background-image: linear-gradient(hsla(0,0%,100%,.7), transparent); - background-clip: padding-box; - border: 1px solid; - border-color: hsl(0,0%,65%) hsl(0,0%,60%) hsl(0,0%,50%); - box-shadow: 0 1px 0 hsla(0,0%,100%,.9) inset, - 0 1px 2px hsla(0,0%,0%,.1); -} - - -button[default=true] { - background-color: hsl(0,0%,79%); -} - -button:hover { - background-color: hsl(0,0%,96%); -} - -button:hover:active { - background-image: linear-gradient(hsla(0,0%,100%,.2), transparent); - background-color: hsl(0,0%,70%); - box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset, - 0 1px 3px hsla(0,0%,0%,.2); -} - -button:focus { - box-shadow: 0 0 1px -moz-mac-focusring inset, - 0 0 4px 1px -moz-mac-focusring, - 0 0 1.5px 1px -moz-mac-focusring; -} diff --git a/toolkit/themes/osx/global/textbox.css b/toolkit/themes/osx/global/textbox.css deleted file mode 100644 index d7a31c7acc..0000000000 --- a/toolkit/themes/osx/global/textbox.css +++ /dev/null @@ -1,102 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -@namespace html url("http://www.w3.org/1999/xhtml"); - -textbox { - -moz-appearance: textfield; - cursor: text; - margin: 4px; - border: 3px solid; - -moz-border-top-colors: transparent #888888 #000000; - -moz-border-right-colors: transparent #FFFFFF #000000; - -moz-border-bottom-colors: transparent #FFFFFF #000000; - -moz-border-left-colors: transparent #888888 #000000; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - padding: 0px; - background-color: -moz-Field; - color: -moz-FieldText; -} - -html|*.textbox-input, -html|*.textbox-textarea { - margin: 0px !important; - border: none !important; - padding: 0px 1px !important; - background-color: inherit; - color: inherit; - font: inherit; -} - -.textbox-contextmenu { - cursor: default; -} - -textbox[focused="true"] { - -moz-border-top-colors: -moz-mac-focusring -moz-mac-focusring #000000; - -moz-border-right-colors: -moz-mac-focusring -moz-mac-focusring #000000; - -moz-border-bottom-colors: -moz-mac-focusring -moz-mac-focusring #000000; - -moz-border-left-colors: -moz-mac-focusring -moz-mac-focusring #000000; -} - -textbox[readonly="true"] { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -textbox[disabled="true"] { - cursor: default; - -moz-border-top-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-right-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-bottom-colors: transparent ThreeDShadow -moz-Dialog; - -moz-border-left-colors: transparent ThreeDShadow -moz-Dialog; - background-color: -moz-Dialog; - color: GrayText; -} - -textbox.plain { - -moz-appearance: none !important; - background-color: transparent; - padding: 0px !important; - margin: 0px !important; - border: none !important; -} - -textbox.plain html|*.textbox-input, -textbox.plain html|*.textbox-textarea { - padding: 0px !important; -} - -/* ::::: search box ::::: */ - -textbox[type="search"] { - -moz-appearance: searchfield; - padding: 1px; - font-size: 12px; -} - -.textbox-search-clear { - list-style-image: url(chrome://global/skin/icons/searchfield-cancel.svg); - -moz-image-region: rect(0, 14px, 14px, 0); - margin-bottom: 1px; -} - -textbox[type="search"].compact { - padding: 0; - font-size: 11px; -} - -textbox[type="search"].compact > .textbox-input-box > .textbox-search-icons > .textbox-search-clear { - width: 11px; -} - -.textbox-search-clear:not([disabled]) { - cursor: default; -} - -.textbox-search-icons:not([selectedIndex="1"]) { - visibility: hidden; -} diff --git a/toolkit/themes/osx/global/toolbar.css b/toolkit/themes/osx/global/toolbar.css deleted file mode 100644 index f07332d2f3..0000000000 --- a/toolkit/themes/osx/global/toolbar.css +++ /dev/null @@ -1,127 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -toolbox { - /* Setting -moz-appearance:toolbox causes sheets to attach under the - * toolbox and has no other effects. It doesn't render anything. */ - -moz-appearance: toolbox; -} - -toolbar { - min-width: 1px; - min-height: 20px; - -moz-appearance: toolbar; -} - -%ifdef MOZ_AUSTRALIS -menubar:-moz-lwtheme, -toolbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-color: transparent; -} -%else -menubar:-moz-lwtheme, -toolbar:-moz-lwtheme { - -moz-appearance: none; - background: none; - border-style: none; -} -%endif - -menubar { - -moz-appearance: dialog; /* For content menubars, "toolbar" is too dark, so we use "dialog". */ - min-width: 1px; -} - -toolbarseparator { - -moz-appearance: none; - margin: 3px 4px; - background: url("chrome://global/skin/toolbar/toolbar-separator.png") transparent repeat-y; - padding: 0; - width: 1px !important; -} - -/* ::::: toolbarpaletteitem ::::: */ - -toolbarpaletteitem { - cursor: grab; -} - -toolbar[iconsize="small"] toolbarpaletteitem[type="spacer"] { - min-width: 24px !important; -} - -toolbarpaletteitem[type="spacer"] { - min-width: 32px !important; -} - -.toolbarpaletteitem-box[type="spacer"] { - border: 1px solid #A3A3A3; - background: url("chrome://global/skin/10pct_transparent_grey.png") repeat; - width: 32px; - margin-top: 18px; -} - -.toolbarpaletteitem-box[type="spring"] { - border: 1px solid #A3A3A3; - background: url("chrome://global/skin/toolbar/spring.png") #FFFFFF no-repeat; - width: 32px; - margin-top: 18px; -} - -.toolbarpaletteitem-box[type="spring"][place="toolbar"] { - background: url("chrome://global/skin/10pct_transparent_grey.png") repeat; -} - -.toolbarpaletteitem-box[type="spacer"][place="toolbar"], -.toolbarpaletteitem-box[type="spring"][place="toolbar"] { - margin: 2px; -} - -.toolbarpaletteitem-box[type="separator"][place="palette"] { - width: 2px; - height: 50px; -} - -.toolbarpaletteitem-box[type="spacer"][place="palette"], -.toolbarpaletteitem-box[type="spring"][place="palette"] { - margin-top: 0; - margin-bottom: 2px; - height: 32px; -} - -.toolbarpaletteitem-box[type="spring"][place="palette"] { - background-position: center; - margin-left: 8px; - margin-right: 8px; -} - -/* ..... drag and drop feedback ..... */ - -toolbarpaletteitem[place="toolbar"] { - margin-left: -2px; - margin-right: -2px; - border-left: 2px solid transparent; - border-right: 2px solid transparent; -} - -toolbarpaletteitem[dragover="left"] { - border-left-color: #000000; -} - -toolbarpaletteitem[dragover="right"] { - border-right-color: #000000; -} - -toolbar[iconsize="small"] toolbarspacer { - min-width: 24px !important; -} - -toolbarspacer { - min-width: 32px !important; -} - diff --git a/toolkit/themes/osx/global/toolbar/spring.png b/toolkit/themes/osx/global/toolbar/spring.png deleted file mode 100644 index 807e1f5e54d7e290fac91334d273168000b1ec4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G6FprVLn>}1r6eRwNRn_kaKzw1!WG8Fd=jMxRxrEC8feHa z;5x!;vSBqtmKj%q6M&9m@O1TaS?83{1OTV4Ow<4X diff --git a/toolkit/themes/osx/global/toolbar/toolbar-separator.png b/toolkit/themes/osx/global/toolbar/toolbar-separator.png deleted file mode 100644 index 21e17543a0d793a91b3ac27dc53233306328b4bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrH!3HFQ?xr>YDVB6cUq=RpjeRx011AIdoCO|{ z#S9GG!XV7ZFl&wkP*Bv<#W95Adh(C||LvKbot+QYvk7oBINs!_T9DA+2~@z~>FVdQ I&MBb@05;7VbpQYW diff --git a/toolkit/themes/osx/global/toolbarbutton.css b/toolkit/themes/osx/global/toolbarbutton.css deleted file mode 100644 index ab24387e3c..0000000000 --- a/toolkit/themes/osx/global/toolbarbutton.css +++ /dev/null @@ -1,124 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -toolbarbutton { - -moz-box-align: center; - -moz-box-pack: center; - margin: 0 2px; - padding: 3px 2px; - background-color: transparent; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4); -} - -toolbarbutton[open="true"], -toolbarbutton:not([disabled="true"]):active:hover { - text-shadow: none; -} - -.toolbarbutton-text { - margin: 0 !important; /* !important for overriding global.css */ - padding: 0px; - text-align: center; - vertical-align: middle; -} - -toolbarbutton[disabled="true"], -toolbarbutton[disabled="true"]:hover, -toolbarbutton[disabled="true"]:hover:active, -toolbarbutton[disabled="true"][open="true"] { - color: -moz-mac-disabledtoolbartext !important; -} - -/* ::::: toolbarbutton menu ::::: */ - -.toolbarbutton-menu-dropmarker { - -moz-appearance: none !important; - border: none !important; - background-color: transparent !important; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.png"); - padding: 0; - padding-inline-start: 2px; - width: auto; -} - -.toolbarbutton-menu-dropmarker[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.png"); - padding: 0; - padding-inline-start: 2px; -} - -/* ::::: toolbarbutton menu-button ::::: */ - -toolbarbutton[type="menu-button"] { - -moz-box-align: stretch; - -moz-box-orient: horizontal !important; -} - -toolbarbutton[type="menu-button"], -toolbarbutton[type="menu-button"]:hover, -toolbarbutton[type="menu-button"]:hover:active, -toolbarbutton[type="menu-button"][open="true"], -toolbarbutton[type="menu-button"][disabled="true"], -toolbarbutton[type="menu-button"][disabled="true"]:hover, -toolbarbutton[type="menu-button"][disabled="true"]:hover:active { - background-color: transparent; -} - -.toolbarbutton-menubutton-button { - -moz-box-align: center; - -moz-box-pack: center; - -moz-box-orient: vertical; - text-shadow: inherit; -} - -/* ::::: toolbarbutton badged ::::: */ - -.toolbarbutton-badge { - background-color: #d90000; - font-size: 9px; - padding: 1px 2px; - color: #fff; - border-radius: 2px; - box-shadow: 0 1px 0 hsla(0, 100%, 100%, .2) inset, - 0 -1px 0 hsla(0, 0%, 0%, .1) inset, - 0 1px 0 hsla(206, 50%, 10%, .2); - margin: -6px 0 0 !important; - margin-inline-end: -6px !important; - min-width: 14px; - max-width: 28px; - line-height: 10px; - text-align: center; - -moz-stack-sizing: ignore; -} - -.toolbarbutton-badge:-moz-window-inactive { - background-color: rgb(230,230,230); - box-shadow: none; - color: rgb(192,192,192); -} - -toolbar[mode="icons"] > *|* > .toolbarbutton-badge { - margin-inline-end: -10px !important; -} - -/* .......... dropmarker .......... */ - -.toolbarbutton-menubutton-dropmarker { - -moz-appearance: none; - border: none; - background-color: transparent !important; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.png"); - width: auto; - padding: 0 5px; -} - -.toolbarbutton-menubutton-dropmarker[disabled="true"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.png"); -} - -toolbarbutton.tabbable { - -moz-user-focus: normal !important; -} diff --git a/toolkit/themes/osx/global/tree.css b/toolkit/themes/osx/global/tree.css deleted file mode 100644 index 472a51fc91..0000000000 --- a/toolkit/themes/osx/global/tree.css +++ /dev/null @@ -1,296 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include shared.inc -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -tree { - margin: 0px 4px; - color: -moz-DialogText; - background-color: #FFFFFF; - -moz-appearance: listbox; -} - -/* ::::: tree focusring ::::: */ - -.focusring > .tree-stack > .tree-rows > .tree-bodybox { - border: 1px solid transparent; -} - -.focusring:focus > .tree-stack > .tree-rows > .tree-bodybox { - border: 1px solid -moz-mac-focusring; -} - - -/* ::::: tree rows ::::: */ - -treechildren::-moz-tree-row { - border-top: 1px solid transparent; - height: 18px; - background-color: -moz-field; -} - -treechildren:not(.autocomplete-treebody)::-moz-tree-row(multicol, odd) { - background-color: -moz-oddtreerow; -} - -treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected) { - background-color: -moz-mac-secondaryhighlight; -} - -treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected, focus) { - background-color: Highlight; - color: HighlightText; -} - -tree[seltype="cell"] > treechildren::-moz-tree-row, -tree[seltype="text"] > treechildren::-moz-tree-row { - border-top: none; - background-color: transparent; -} - -/* ::::: tree cells ::::: */ - -treechildren::-moz-tree-cell { - padding: 0px 2px 0px 2px; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell-text, -tree[seltype="text"] > treechildren::-moz-tree-cell-text, -treechildren::-moz-tree-cell-text { - color: inherit; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell { - padding: 0px 1px 0px 1px; -} - -tree[seltype="text"] > treechildren::-moz-tree-cell-text { - padding: 0px 1px 1px 1px; -} - -treechildren::-moz-tree-cell-text(selected) { - color: -moz-DialogText; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell(active, selected) { - background-color: -moz-mac-secondaryhighlight; - -} -tree[seltype="cell"] > treechildren::-moz-tree-cell-text(active, selected) { - color: -moz-DialogText; -} - -tree[seltype="text"] > treechildren::-moz-tree-cell-text(active, selected) { - background-color: -moz-mac-secondaryhighlight; - color: -moz-DialogText; -} - -treechildren::-moz-tree-cell-text(selected, focus) { - color: HighlightText; -} - -tree[seltype="cell"] > treechildren::-moz-tree-cell(active, selected, focus) { - background-color: Highlight; -} -tree[seltype="cell"] > treechildren::-moz-tree-cell-text(active, selected, focus) { - color: HighlightText; -} - -tree[seltype="text"] > treechildren::-moz-tree-cell-text(active, selected, focus) { - background-color: Highlight; - color: HighlightText; -} - -/* ::::: lines connecting cells ::::: */ - -treechildren::-moz-tree-line { - /* XXX there should be no border on Mac, but trees currently - paint the line black by default, so I'll just leave this - for now. */ - visibility: hidden; - border: 1px dotted grey; -} - - -/* ::::: tree separator ::::: */ - -treechildren::-moz-tree-separator { - border-top: 1px dashed #C7C7C7; - margin: 0 2px; -} - - -/* ::::: drop feedback ::::: */ - -tree[seltype="cell"] > treechildren::-moz-tree-cell(primary, dropOn), -tree[seltype="text"] > treechildren::-moz-tree-cell(primary, dropOn), -treechildren::-moz-tree-cell(primary, dropOn) { - background-color: #A1A1A1 !important; - color: #FFF !important; - background-image: none; -} -tree[seltype="cell"] > treechildren::-moz-tree-cell-text(primary, dropOn), -tree[seltype="text"] > treechildren::-moz-tree-cell-text(primary, dropOn), -treechildren::-moz-tree-cell-text(primary, dropOn) { - color: #FFF !important; -} - -treechildren::-moz-tree-drop-feedback { - background-color: #A1A1A1; - width: 50px; - height: 2px; - margin-inline-start: 5px; -} - -/* ::::: tree progress meter ::::: */ - -treechildren::-moz-tree-progressmeter { - margin: 2px 4px; - border: 2px solid; - -moz-border-top-colors: #AAAAAA #000000; - -moz-border-right-colors: #FFFFFF #000000; - -moz-border-bottom-colors: #FFFFFF #000000; - -moz-border-left-colors: #AAAAAA #000000; -} - -treechildren::-moz-tree-cell-text(progressmeter) { - margin: 2px 4px; - -moz-appearance: progressbar; -} - -/* ::::: tree columns ::::: */ - -treecol, -treecolpicker { - -moz-appearance: treeheadercell; - -moz-box-align: center; - -moz-box-pack: center; - border: 2px solid; - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow; - background-color: -moz-Dialog; - color: -moz-DialogText; - padding: 0px 4px; -} - -.treecol-image { - padding: 0px 1px; -} - -.treecol-text { - margin: 0px !important; -} - -treecol[hideheader="true"] { - -moz-appearance: none; - border: none; - padding: 0; - max-height: 0px; -} - -/* ..... internal box ..... */ - -treecol:hover:active, -treecolpicker:hover:active { - border-top: 2px solid; - border-bottom: 1px solid; - border-inline-start: 2px solid; - border-inline-end: 1px solid; - -moz-border-top-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-right-colors: ThreeDDarkShadow; - -moz-border-bottom-colors: ThreeDDarkShadow; - -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow; - background-color: #666666; -} - -/* ::::: column drag and drop styles ::::: */ - -treecol[dragging="true"] { - -moz-border-top-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow!important; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow !important; - -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow !important; - padding: 0px 4px !important; - background-color: ThreeDShadow !important; - color: ThreeDHighlight !important; -} - -treecol[insertafter="true"]:-moz-locale-dir(ltr), -treecol[insertbefore="true"]:-moz-locale-dir(rtl) { - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; -} - -treecol[insertafter="true"]:-moz-locale-dir(rtl), -treecol[insertbefore="true"]:-moz-locale-dir(ltr) { - -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow; -} - -treechildren::-moz-tree-column(insertbefore) { - border-inline-start: 1px solid ThreeDShadow; -} - -treechildren::-moz-tree-column(insertafter) { - border-inline-end: 1px solid ThreeDShadow; -} - -/* ::::: column picker ::::: */ - -.tree-columnpicker-icon { - list-style-image: url("chrome://global/skin/tree/columnpicker.gif"); -} - -/* ::::: twisty ::::: */ - -treechildren::-moz-tree-twisty { - -moz-appearance: treetwisty; - padding-inline-end: 2px; -} - -treechildren::-moz-tree-twisty(open) { - -moz-appearance: treetwistyopen; -} - -treechildren::-moz-tree-twisty(Name, separator) { - -moz-appearance: none; -} - -treechildren::-moz-tree-indentation { - width: 16px; -} - -/* ::::: gridline style ::::: */ - -treechildren.gridlines::-moz-tree-cell { - border-inline-end: 1px solid GrayText; - border-bottom: 1px solid GrayText; -} - -treechildren.gridlines::-moz-tree-row { - border: none; -} - -/* ::::: editable tree ::::: */ - -.tree-input { - -moz-appearance: none; - border-width: 0; - box-shadow: @focusRingShadow@; - margin: 0; - margin-inline-start: -2px; - padding: 2px 1px 1px; -} - -treechildren::-moz-tree-cell(active, selected, focus, editing), -tree[seltype="cell"] > treechildren::-moz-tree-cell(active, selected, focus, editing), -tree[seltype="text"] > treechildren::-moz-tree-cell(active, selected, focus, editing) { - background-color: transparent; - border: none; -} - -treechildren::-moz-tree-cell-text(active, selected, editing) { - opacity: 0; -} diff --git a/toolkit/themes/osx/global/tree/arrow-disclosure.svg b/toolkit/themes/osx/global/tree/arrow-disclosure.svg deleted file mode 100644 index 0fee858071..0000000000 --- a/toolkit/themes/osx/global/tree/arrow-disclosure.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - diff --git a/toolkit/themes/osx/global/tree/columnpicker.gif b/toolkit/themes/osx/global/tree/columnpicker.gif deleted file mode 100644 index 167f3789af3f67f7992ddfd9e1d858cf86b95e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZ?wbhEHbRS#eXgg5e6dvCuEok=4FG>%6o>!- diff --git a/toolkit/themes/osx/global/tree/folder.png b/toolkit/themes/osx/global/tree/folder.png deleted file mode 100644 index 8f21ff790a3fec82a2db69d749ebd234fcaa75a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`)Ym%P6qNh3p^r= z85p>QL70(Y)*K0-;3H2L#}JFt$v^)8w`W$B@M)Ry{XDnUyMO&Xj!7=k43{o!`6R)` z)+w0kkWqQx^Zl7$|4+uA4%kp0_P2ihm#94wOT=@2FJ;&7JS6V;!;Y!>OB3&n(tr2< z`!3I$*s^{8?q-98(=TuT50~HTCv>mik=mh#t;g5>k1u*)|LgwFZxWt6s_z!IFv@24{mqZ5>rlC~<&nUl zhF_`d|HJiexeKjhO4`9F%KiPX{=D6@Q+Ui90wx`8J;=t;$Rn_NVrMGDg(+Jv-Lr9V Q2l|%5)78&qol`;+0RB6MX#fBK diff --git a/toolkit/themes/osx/global/tree/folder@2x.png b/toolkit/themes/osx/global/tree/folder@2x.png deleted file mode 100644 index c07acf5ffbb3a4a30fe550fe5d9d3db1770bcfdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0E3x4VELmAt+DX_*BrK5;GE6Yj z-Bs7Eer385laZ>a=k(cSeGJm(+U=<-OK5I+7P0O8{71g7Vgf}ikDqruTh zu61%Du z`bSJ;K#2IROhDux<2`^V0);}U08IF&64WOHA#aoc9z5WR1tk4jVK;EpBmm=GXeCpl zatwbev4wzjDFH@PfDnsZbp|5;znueI_c;*u1V>F72zb7ogpT7supO>cK-x6p83=3f z>A3!GyGjL^;hPW>Q&0|wONs@g0s-Hqz;^u-logjCllo-}Y}W radio, -#viewGroup > toolbarbutton { - -moz-box-orient: vertical; - -moz-box-align: center; - -moz-appearance: toolbarbutton; - font: menu; - text-shadow: @loweredShadow@; - margin: 0; - padding: 0 1px; - height: 22px; -} - -#viewGroup > radio[selected=true], -#viewGroup > toolbarbutton[checked=true] { - color: #FFF !important; - text-shadow: rgba(0, 0, 0, 0.4) 0 1px; -} diff --git a/toolkit/themes/osx/global/wizard.css b/toolkit/themes/osx/global/wizard.css deleted file mode 100644 index 9c5e6200ce..0000000000 --- a/toolkit/themes/osx/global/wizard.css +++ /dev/null @@ -1,62 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -wizard { - padding: 14px; -} - -#header { - display: inline !important; -} - -.wizard-header { - -moz-appearance: dialog; -} - -.wizard-header-box-1 { - color: #000; -} - -.wizard-header-box-text { - padding: 6px 10px; - font: menu; - font-weight: bold; -} - -.wizard-header-label { - margin-left: 23px; - font-weight: bold; -} - -.wizard-header-box-icon { - margin-top: 3px; - margin-inline-end: 20px; - margin-bottom: 0; - margin-inline-start: 3px; -} - -wizard[branded="true"] .wizard-header-icon { - list-style-image: url("chrome://branding/content/icon48.png"); -} - -.wizard-page-box { - padding: 15px 23px; - -moz-appearance: dialog; -} - -.wizard-buttons-separator { - margin: 0 !important; - border-bottom: 1px solid #fff !important; -} - -.wizard-buttons-btm { - padding: 3px 6px 6px; -} - -.wizard-button { - font: menu !important; -} - diff --git a/toolkit/themes/osx/mochitests/.eslintrc.js b/toolkit/themes/osx/mochitests/.eslintrc.js deleted file mode 100644 index 2c669d844e..0000000000 --- a/toolkit/themes/osx/mochitests/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { - "extends": [ - "../../../../testing/mochitest/chrome.eslintrc.js" - ] -}; diff --git a/toolkit/themes/osx/mochitests/chrome.ini b/toolkit/themes/osx/mochitests/chrome.ini deleted file mode 100644 index b7c425bc70..0000000000 --- a/toolkit/themes/osx/mochitests/chrome.ini +++ /dev/null @@ -1,3 +0,0 @@ -[DEFAULT] - -[test_bug510426.xul] diff --git a/toolkit/themes/osx/mochitests/test_bug510426.xul b/toolkit/themes/osx/mochitests/test_bug510426.xul deleted file mode 100644 index 4294ce42de..0000000000 --- a/toolkit/themes/osx/mochitests/test_bug510426.xul +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - diff --git a/toolkit/themes/osx/moz.build b/toolkit/themes/osx/moz.build deleted file mode 100644 index fab1daff25..0000000000 --- a/toolkit/themes/osx/moz.build +++ /dev/null @@ -1,8 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -DIRS += ['global', 'mozapps'] - -MOCHITEST_CHROME_MANIFESTS += ['mochitests/chrome.ini'] diff --git a/toolkit/themes/osx/mozapps/downloads/buttons.png b/toolkit/themes/osx/mozapps/downloads/buttons.png deleted file mode 100644 index 04da26a25248313c15a6088cdb192bf8fab01301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2288 zcmV!$0vZ&VzsXzMWrN-MhjA$s2LqUX{1GE8k5?X zR{YV18rzg2ZT*xKtql^ZI5WzFf-TB`d`4S3F{$#G=`d@*oI}nW&bjwu(I%5(4U}9aQHt)F9hC>;z{UZ>>W0S zZG+YV-*18+i6R;r1bu{=e}pzdzX87Q|DG2|0APOvK1g<%ilcXM-dLu7`jx1N-*vJI`&qcI_%B+sc(IKjt>V5Y|0~;7u$H zW4U`(RaF^bVPQ^`N4p`>(b4Hwu3Y&#JUskeT>h6mb{p6V)`Ksi@aK3qyabqe6%`ey zySlo17A#ocbh%vT9S+CgzP>(=zX|-O48I!1!yJF$z=6c5sHh0MrxM@mOH53R1HO92 ziWSHE`}_H#{WtLW+<}FBI>}B@UD0@weqhU3174Bw+zF~H8c%Wu_zxI9N5*p}7+!8X zNgwcUa?mgGoI}rbh;^y)?(YiqAzSP1+qb*Ly3}|XKV)m|?Ck6n>OE592l3p29;x@z z__V31sVPP8Cu2>lP;9B<_Bbe*^Uw2X11XP_4TLy{QQ#0hUw&9ga;2E{Hxg_-n41c+w?3j=SGeknMF2q z$Z4|S-TTZI@zSMB57B}>eE6`-Znx)>4b!QTY?+yvpXe5`4-E78$&7|N)~#FjH*wmK z4KJt^rp(vC-eGfi6pELi?yVIK4a>>NsS&3Q+2EW@m@*#&-^=j#qgVr_cG&Qp>4k-b z_2RT48`|(aUq8@yfbSF!GCD<{ws??SluuLODf~#Vh^G;0lJGN8q*%m%2K=|GP=dCy znI@qG#WO!?LV-XOF(#n|#WQUh{NpGVn1m8v(hOI|LP9VXqzUF4Ee3O;&_F4e`xmsv zVlYSN(q!nP%uJ(w4O(Fs%-xIPZM(+Wi$k@`<)U-)48X{(b z3O{Pps4*KiZp^xT`SL2oXo#3#72em^cl4SyYnBuj7cW+fMzH9>{YDdR^5n@;iqY^D z>JJ&=LqbBr6{8_Kd_XfJyk-0dfe+Yqz?PPl z%JlT~y@>5^8SnvZFCsK|rKP2P1a8q`zy}^Sz<TG}|oQPlLhIAv;u>+>v>_c7^po4^Oo%Lkc<4|w>1hYxu8!0*oo zyd|(dn}3h9@W89Ox;o3x&(ELPV%ak`13r+-b~B2Vyw06F_YzKEzQd)mXKV(1Ae(Ij z7iqq`U(m2wQmd>eZZCvu2H9_afP|HU%GW$~zE(z<306 zf0{mh`e=5~$)2?-_`u8Z4&-n+=9H9_qz48D`m%d3vuABuJ}`g&e1GBt-QC@VbR7^7 z5Ps~~vGrE@02=)u@qvzxj-BpUJt*jj6DLlrw8{sjO`A4`_y7XHKQsK){QUeBOMGDY z^5p?Xj~;!yt*xykB_(BpJ7#EauS-fw+GT|gBqt}2J9X;RYuBz_yPlYs_$Jx#uB%R` z^L;CPAR;2dAK^o0Yinye+ET#q&8t_h{!GOOhU5n*_Q&zvICt*c61v73ScM)fQ2aWr z%nwlP-_X#|0!Q3Gy<-ie;a$awU#FG%0gC<6h95R>-uw++V+}l)ot<5#_;p&HA3y+C z6c-n_N)rRw%<=NBTw6@@12=BmsM)b&$20N^wr$%s@A~!YF0=dqhQB^HH#bVg=j7x#urYjR zmLCAVDJv^$2#*G}4F$eY<^$exY@e5x_aS=QdGh4RruhLAG0qRbI~u0rx@)ui z0G>TSs=GGJ57gDwy-upTwwxa@5!3vDiJ0aGOvHMAKqHp(0~)cMAJE9~^8@mxG2Hxs z0lxok@yh=TSrqO6g)EBp|3Vf;%?E}d?V8x$swnxuFhtJ>EQlc=upowfz=90&0dKa= zk)e7R-dFR+GdwkDhYxu8z^|462`~VMhV18mi%}8)0000< KMNUMnLSTZewr+U< diff --git a/toolkit/themes/osx/mozapps/downloads/downloadIcon.png b/toolkit/themes/osx/mozapps/downloads/downloadIcon.png deleted file mode 100644 index 42dc4943d7a5375bd4452c435a28993745a2d5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1301 zcmV+w1?u{VP)%;?B~W(ZKc+w%ujH$6)dvbv)73BR0S%xp~~Pg znKMuA835bP>X`DxMMG5*D!!{guk$K;7rsH4vjZK@HeR%*J(`h+yt*^`MU%zE?g}8O zm90~is+P<9PUFVnbu`Y_BX2ARM@CGWie}^?FJ;uFnq^Z*X7i2!^iBF6eU1L9WyTD% zs}sjYk05<870ClE*gpNHq8WL}OBu>iM@mb| zXh+UeHj=E`HB$A8`o}AP zxFF8mXm5aaj6wW82_yqz#QhxmTrr5a`i@Tkzpvjyz>j_&1>W+5;I==)hlHrGmE%C} z0k>CxnA})gSU3;)umo2em$6qLi`|Ui!2s0ES0mzs2zUjEEfg=;+H0U1S0Lth5xy9| zwClsoW1R^6^=*U?3sGi2g~+@}@4o@bN$KN{hd%=IP=$A`p$PiTALjASogdC+sUu`0 z5aP)w z3ZQOQ_sCkL$Z=&uI2FVzWSoQegM*lOaR~BKhO#R?$6d!j-HHaqC9eQXN8h$9r0i2h9YAFu}BN2)aki8f7e`@iX#}mok*yv-bi`tL9`}RovXc;)Bc4pGHG= zQ3{zw_DtNG_Gm^P^1jqJBTbvSK-r}1RWvHElW0wQG<)@Ox?TMTSkOdN=g#IH00000 LNkvXXu0mjfJyK@= diff --git a/toolkit/themes/osx/mozapps/downloads/downloads.css b/toolkit/themes/osx/mozapps/downloads/downloads.css deleted file mode 100644 index 3ba246c1fc..0000000000 --- a/toolkit/themes/osx/mozapps/downloads/downloads.css +++ /dev/null @@ -1,123 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../../global/shared.inc - -#downloadView { - -moz-appearance: none; - margin: 0; - padding: 0; - border-width: 0; -} - -/* Download View Items */ -richlistitem[type="download"] { - padding: 5px; - min-height: 44px !important; - border: 1px solid transparent; -} - -richlistitem[type="download"]:not([selected="true"]):nth-child(odd) { - background-color: -moz-oddtreerow; -} - -richlistitem[type="download"] .dateTime, -richlistitem[type="download"] .status { - font-size: smaller; - color: #555; -} - -richlistitem[selected="true"][type="download"] { - outline: none; -} - -richlistbox:focus > richlistitem[selected="true"][type="download"] .dateTime, -richlistbox:focus > richlistitem[selected="true"][type="download"] .status { - color: highlighttext; -} - - -richlistitem[type="download"] button { - -moz-appearance: none; - min-height: 16px; - min-width: 16px; - max-height: 16px; - max-width: 16px; - padding: 0; - margin: 0 1px 0 1px; -} - -/** - * Images for buttons in the interface - */ -richlistitem[type="download"] button { - list-style-image: url(chrome://mozapps/skin/downloads/buttons.png); -} -.cancel { - -moz-image-region: rect(0px, 16px, 16px, 0px); -} -.cancel:hover { - -moz-image-region: rect(0px, 32px, 16px, 16px); -} -.cancel:hover:active { - -moz-image-region: rect(0px, 48px, 16px, 32px); -} - -.pause { - -moz-image-region: rect(48px, 16px, 64px, 0px); -} -.pause:hover { - -moz-image-region: rect(48px, 32px, 64px, 16px); -} -.pause:not([disabled="true"]):hover:active { - -moz-image-region: rect(48px, 48px, 64px, 32px); -} -.pause[disabled="true"] { - -moz-image-region: rect(48px, 16px, 64px, 0px); -} - -.resume { - -moz-image-region: rect(16px, 16px, 32px, 0px); -} -.resume:hover { - -moz-image-region: rect(16px, 32px, 32px, 16px); -} -.resume:hover:active { - -moz-image-region: rect(16px, 48px, 32px, 32px); -} - -.retry { - -moz-image-region: rect(32px, 16px, 48px, 0px); -} -.retry:hover { - -moz-image-region: rect(32px, 32px, 48px, 16px); -} -.retry:hover:active { - -moz-image-region: rect(32px, 48px, 48px, 32px); -} - -.blockedIcon { - list-style-image: url(chrome://global/skin/icons/Error.png); -} - -/* prevent flickering when changing states */ -.downloadTypeIcon { - height: 32px; - width: 32px; - padding-inline-end: 2px; -} - -#search { - -moz-box-pack: end; - padding-inline-end: 4px; - -moz-appearance: statusbar; -} - -#clearListButton { - -moz-appearance: toolbarbutton; - min-height: 18px; - min-width: 0; - margin: 0 6px; - text-shadow: @loweredShadow@; -} diff --git a/toolkit/themes/osx/mozapps/downloads/unknownContentType.css b/toolkit/themes/osx/mozapps/downloads/unknownContentType.css deleted file mode 100644 index 28d01b57af..0000000000 --- a/toolkit/themes/osx/mozapps/downloads/unknownContentType.css +++ /dev/null @@ -1,30 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#unknownContentType { - font: menu; -} - -description { - font-weight: bold; -} - -.plain { - background-color: transparent; - background-image: none; - border: none; -} - -#contentTypeImage { - margin-right: 3px; - width: 16px; -} - -#container > .small-indent { - margin-left: 0px; -} - -.small-indent label { - margin-left: 0px; -} diff --git a/toolkit/themes/osx/mozapps/extensions/about.css b/toolkit/themes/osx/mozapps/extensions/about.css deleted file mode 100644 index cfabd47dba..0000000000 --- a/toolkit/themes/osx/mozapps/extensions/about.css +++ /dev/null @@ -1,78 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#genericAbout { - padding: 0px; - min-height: 200px; - max-height: 400px; - width: 30em; -} - -#clientBox { - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -.basic-info { - padding: 10px; -} - -#extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png"); - max-width: 64px; - max-height: 64px; - -moz-margin-end: 6px; -} - -#genericAbout[addontype="theme"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric.png"); -} - -#genericAbout[addontype="locale"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/localeGeneric.png"); -} - -#genericAbout[addontype="plugin"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric.png"); -} - -#genericAbout[addontype="dictionary"] #extensionIcon { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png"); -} - -#extensionName { - font-size: 200%; - font-weight: bolder; -} - -#extensionVersion { - font-weight: bold; -} - -#extensionDescription { - margin-top: 4px; -} - -#groove { - margin-top: 8px; -} - -#extensionDetailsBox { - overflow: auto; - min-height: 100px; -} - -.boxIndent { - -moz-margin-start: 18px; -} - -#extensionCreator, .contributor { - margin: 0px; -} - -.sectionTitle { - padding: 2px 0px 3px 0px; - margin-top: 3px; - font-weight: bold; -} diff --git a/toolkit/themes/osx/mozapps/extensions/alerticon-error.png b/toolkit/themes/osx/mozapps/extensions/alerticon-error.png deleted file mode 100644 index 8740e4911a857dd0d2e479529594fa4bb17adf11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3402 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 diff --git a/toolkit/themes/osx/mozapps/extensions/alerticon-info-negative.png b/toolkit/themes/osx/mozapps/extensions/alerticon-info-negative.png deleted file mode 100644 index 2c5f628ab6001ba2f20a19e20f5d6c556b8f0169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1564 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!3HGX7W?Z1DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y`Fl?$S+WE4mMTrO-#(89#j!qr6ysy79TzX|Hq2RcR{6tPGV4HE*U9uO0r zY=Inj!cWZuruHIWvR;}z)qsJ4X@aMVV@SoVmLPABkVFx?|G(|rWo184Tx6!T^MsjX zhobmK~WgTW#%}>vOB~ z|I5Bn)Qa0NyLjLK-}{Qsxu2hB$!A@!;i0*=-+=jc>FwCtT|4`9U%wL*x%br6z|Ebz zyK8pW=~c6sL`xq#CkF~AZsOf;%;*$5D^2EEm0-bL{u!?iT5r$)maMhs-aM9=0z;3M zooZ9nySlv91rMH#$XWUOR&TUp%S$;Hj`o&S;o;Y=*z{U?6wF z~^62-<^o#217ngPKXZiH3c~xT3vL6SsjgBS!JNrj5)V$wN?USjG z28ZiX{W!nauAUxgk6lV<*|TkynH@G*|C&|RAv9j@g%!i<_{XU`bAEM%ta~tv^WK|# z8qz0Iz8?D(l~efeZOlE!^qc@K#?T&{6NNDo-q*j;USG3y|F(ao2Dx`jFQ&N&tZ-_b zd2?s?#D~Z0F5L;aoj7Y>+*$>O%HKx0JLmB7^7c-g_pZ1iR^$?CUwu#DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yY-;xWReF(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y) zTAW{6lnjiIG-a4(VA$ce2&53`8Y`Flt zp`oFRo28MfqqCE?$S+WE4mMTrO-#(89#j!qr6ysy79TzX|Hq2RcR{6tPGV4HE*U9uO0r zY=Inj!cWZuruHIWvi@zbYcT@@<2p|l$B>F!OD660W_A=fnx6Ju&&~gclEM<<5T34S zWnp1mnYmMzbl!;M`p3SlsWnt#YVU%jp;6q@+^e@V32?BOsHNH0RM)XwRC;wtu6p<9 z+27O3Dy!1x{WDzlL|;VsY2*&QsB2I83mQe^SNFtSUHmKVztBA9nCU&|UK;wIx$~>H zS%-7}{)2)m1yus(@XTe%Qr8M&y}`DI!s*#bcZ)r)7iRe>U3z?x@mi#Y{^n_30n;KB4lO^oV^gh}NW$%{EV5N?Ma;Zei*{F9 zaFl)e@uu>1c;PaZ(#LFijPL6X6gb|i4w~$3dEUvKWA(y7){8c$nUbBf8^jahLv+fY zWE?K@Jzv6BAdwk(PjI24@8^uJ6>FcZ;hsCMp|rJbi(t?e+uPe@n|CnExcw43+-5$5 zZ`oXJ;d6zlw<}&p{HncP%B!OGJ8A!c`J8raLM*J=E8>sk`$XC@F5-H9P%-CMe*Tlt a21bU@ajS~uCcW$cm1drDSr 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 RA!q;q002ovPDHLkV1jy~C2s%# diff --git a/toolkit/themes/osx/mozapps/extensions/category-dictionaries.png b/toolkit/themes/osx/mozapps/extensions/category-dictionaries.png deleted file mode 100644 index 54ae4f93fc5c8179b44d062f61cae2bee4a652dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1769 zcmV!Ck9eR~5(M-xzbQz4u9S z^3ulEXb`I)L?QUr3sHok)`F--Y<D!Z zFf$~Y8SR}^IQQA%MmPE0Af4L|wj_aFH*5X@BGfWhL}%D?mc@pqg)bJzP>tyaA3Y5sFh zKKUd^u08&7GX`M8j4^X+d%K>y=R;qvM~;2>^qqHc=FA!X8{;_g$iwH^y7BGX{&*!oG2$thsdl2kiZRo0GSm;OtvYuv~4iS{+8EA~UQM5|E&`PV|X3 zZs@%ez0t-sx!G{GPqaJU{w?Fe&w`;40K{S_j4g;1p+GV=t%KXUfx=AXAYZTB>g3kI;Z(&819#XOmh?zcVpTfk&U({0v{<7DFK=#@4BB42z0@olWDh zXRjfNS}ICo>K!l)G3U%kvMEH5K){qDNxT}EQ{CuOqa~O-r4~YvDfTvv_4X;w-hD3@ zFYho;6R!|hF))mo%8VJf!x$nXDF&M<*|f&8tmq2<{M;^YI=14(p(VxP#=5h!9(kc0 z<8xp68f6&JwBe--4>Pq+9SS}<5(hX3S%xr)o?_~WnIMfG$;B%>yz|4KU}trbtJl}8 zH=P?(=SnR3%(<_FiD-@ORi#S|L*XBri77e;#*8x~pk>lSq#!eyB1w{UYus_?M>+Gp z5Ad;j@8{Wmm@B(Cczidw=ZohkZuDv7=|4Tn6Tdl+AyQ&d3n|`^Gh<*faEFvg2^R<> zGC8^$h(6)KC-3_LSM3OQ-}fa}%PrbC^1>63@z;lbL@m%$^bk`|q9-YgnaYd=t&1rI z5#K!Oaz%$Rd# zBv}L$1CxV^X$o$P6I1K76gSolGI-**=ec_MDK7l%$5Ukb{{qSDA4$3ljy= zLWH12kV<+tcG^TOMsa8X%0v-_8yN}i^d4ja7EB>hf#IZN%v5GlLMb8=l%$dfCj@fQ zn=msnp+#UA6h{(c?+mpvMNo^=yWu7>o!%$hIKX*5OQ{-0OQCdnPs|+&#wqBT^n?&B zmW5$qNU&*1NVMoIYDE~Sqo4%WXjH9j+a72;BIUt zAwfjq4hkbfNJ0`R=zYR4qKTfd0tyg-*yr42z^Y|#H$+CzGjU6LBoTpt);jB+Opzdn zOd_H8q)FgTD3B$!7={r_y2KQ@4Xgm;Rh63xa40fvsb-{jg#dE{3gEcI(v4|qU{Fh? zWdp=e9LYe?y9g!AVSor~fylfCI0TG9vafPe0S-sXQ+8=gJKa09tn5w3m7O(<>P*p* zU^!G$Nik>Y!Qce}Jpv4BskCTBj;!i{yk3ix14n>eps~-mX$!c$y5CyekGR>us{|Ne zfB*^1c!l^EH>K2i=3dXd20RC>*=OA3zzV4RZ*^b;B>Vmel%Pwalwo+K00000 LNkvXXu0mjfD_$)g diff --git a/toolkit/themes/osx/mozapps/extensions/category-discover.png b/toolkit/themes/osx/mozapps/extensions/category-discover.png deleted file mode 100644 index a6f5b49b37f13cf890f82309ea9aff678916ec71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324 zcmV+{1=IS8P)!-zPFNiH}Zhs=KPY&iT$c-BmZZJDWN7oS*c=C-(4s-h~~xcn!JU$nz!=Bu;Gaw2{OE@#UU&j{A`ut>Hxs6gf)*o$0PbAe z$lT#!AEHk$Jildp$5_$YGmD!*2z+++3Rj=J&-B5qcwL6T%?&M_mFvoLHxBUb@#6^~ z)VOcJtySh)tGxf>UY@?*;P)R^Xx}gX7W~!4 zoqTX=A9MM+`S~_SPCiAb)n4DQ1=}Yk-kE4FaQD|M+wF*QH`%;)c&Zmh3>+tfs}Ifvfm#_wxP zPc-P11JnYXSy*80d*$0=34r6*XE?KefyL##76j5W4l54?X)m#DaysDb2Y!4cflzCl znw;Go%GGbUwYZiiO$2ILGs8JnpJwS&1mM{06xVLvPwcGH)xki`C{}MW(R`Uu8+m1r zz>ozKGtCQQ)6FzkO_Zd;aLm%gnDf$1i6+A+fW6xXj5M}0wqu5=x%u3POHk%%hm6Nq_#=k5dS6*B|ZwDHh1 zW~QKu=KCtbn!$rvXG}!bC!pepSjTH~!%PWon0EcuT%}tk)YmtV7f

*?ByP_X8H9~M72*D(-h7sq*dTTC&Wnw10-dj4wOR#LI?ra5@RHmG0Scp zuPaL|6R13v9x`HxjO@P{1jQ|VNjuni>8=qlqarm1)GHeXLuh~gu|(O9 zT_6=q4N*s{*H3c*%@8H616lImovlDxF+J}k0xT~+psKuYSKOn(4q!Jh2WvQ<-!Pr9f8D#4rHv<-W<89*UNukaxL zg$3WB0^trQFsA~Y_!1WU=QpLNPV@=Gu;6Dbf$%EEP=hkeDOiOa5Ef$+77Rmr;>1H$ z`~wTtL+Hdf3};b;oH@BgcppvN54rWR-)~mc|H;~|uwVqrsNpOO>VH~f8`CT}USr{g|L$DX+g%eV$5cp0sb9Vp3M3;S2K`sl_MEMo$47AWI#cpJlllH5d?xAee~%{O2f z=OJf-GA_g16#5c!=fnJlRvxKefn_wI1TT8_cWg?`Oody2=)S|RkHCUe&|LCP3%=8e zLvJ)-Ic{PMd(aIbnP>LmjCWa%hI&8RwgpzAi8_?1j;Vy+SJd<2n_XzaO3b1Tm8ko! zm1v?%-3NCHL$Cx*^gsn_zGDd*kd`*y5>}uEORyIzuqUyjb%7 diff --git a/toolkit/themes/osx/mozapps/extensions/category-plugins.png b/toolkit/themes/osx/mozapps/extensions/category-plugins.png deleted file mode 100644 index 5c4d8bf471825d8960b8d35f6060ba620b7b0adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmV-+1Bv{JP))k|ptNP7Apva?4~R5Xpk!f6~jG>VLjA-M7!GsYZiSj#!Cyin(} zfx5bP7X_R-%8)wabIeLAo<>Q@6EXBy%sj%eV^d;e0!NOF%WfZ)gXli8vWDeM7=+0* zAO`xeXU}cy-hIm{o{(@uy8%AA-r{j_UA`EY(p@|z=DKzR{Ll3kkBYjc-2gY7-r|vw z9q^$GCUh4!8n1dcAU}h!Uf9M~(_4Jku6BxSQ#A~p3~UgB+2?wTM?_qqNU*Bm(ZEI_ zgoljY;yZV?Q6xmw@Ms`F2;&K-w|IE?Wr~EU8g32v3!4Qak5|3L!@@36#Heccdor*^ zi00X@x43E`TGjCP_6DN(VbNP$H4x?P4R8-^5<*R;ey?A(-w{_0gsK`IH{m)VNZ297 z3W+)qtF9TOY8c#}glkODWuUNCCj!+qe-L+j6ssl->YmUO!_VU6JE<>}40#l&fdBvi M07*qoM6N<$g7*)s5C8xG diff --git a/toolkit/themes/osx/mozapps/extensions/category-recent.png b/toolkit/themes/osx/mozapps/extensions/category-recent.png deleted file mode 100644 index 7ecfc7d4c86e1b5569271ae2a90d4465e64bcfe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642 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 diff --git a/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric-16.png b/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric-16.png deleted file mode 100644 index 4ad1a1a8251b5b93eea10fa88e74d76916134b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmVWn+{w*_4=+B#Og*27J-)_fG)V#8|$wc%H+T4c*?`1n=<< z)C_ZuCJ8T_M4ckr&wrf)+}73>CqPuga8%V1L28QZC|jNw6>&x(N+H5jYns9r0IsU4 zQ$Q4A$`lStSJ0j+D1rx#)B>9?4p^9<<;;Bh)jC|K(|HYuDaSFdQ z7&{Nv>0Z0RxrH~_-+9X5yKl%@i8Q0kNsHN@cXxWOE> z3P;X{dBeLfnb(t5TZ6%13?z{m)$ylsKH$rePsQ>@~ diff --git a/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric.png b/toolkit/themes/osx/mozapps/extensions/dictionaryGeneric.png deleted file mode 100644 index 54ae4f93fc5c8179b44d062f61cae2bee4a652dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1769 zcmV!Ck9eR~5(M-xzbQz4u9S z^3ulEXb`I)L?QUr3sHok)`F--Y<D!Z zFf$~Y8SR}^IQQA%MmPE0Af4L|wj_aFH*5X@BGfWhL}%D?mc@pqg)bJzP>tyaA3Y5sFh zKKUd^u08&7GX`M8j4^X+d%K>y=R;qvM~;2>^qqHc=FA!X8{;_g$iwH^y7BGX{&*!oG2$thsdl2kiZRo0GSm;OtvYuv~4iS{+8EA~UQM5|E&`PV|X3 zZs@%ez0t-sx!G{GPqaJU{w?Fe&w`;40K{S_j4g;1p+GV=t%KXUfx=AXAYZTB>g3kI;Z(&819#XOmh?zcVpTfk&U({0v{<7DFK=#@4BB42z0@olWDh zXRjfNS}ICo>K!l)G3U%kvMEH5K){qDNxT}EQ{CuOqa~O-r4~YvDfTvv_4X;w-hD3@ zFYho;6R!|hF))mo%8VJf!x$nXDF&M<*|f&8tmq2<{M;^YI=14(p(VxP#=5h!9(kc0 z<8xp68f6&JwBe--4>Pq+9SS}<5(hX3S%xr)o?_~WnIMfG$;B%>yz|4KU}trbtJl}8 zH=P?(=SnR3%(<_FiD-@ORi#S|L*XBri77e;#*8x~pk>lSq#!eyB1w{UYus_?M>+Gp z5Ad;j@8{Wmm@B(Cczidw=ZohkZuDv7=|4Tn6Tdl+AyQ&d3n|`^Gh<*faEFvg2^R<> zGC8^$h(6)KC-3_LSM3OQ-}fa}%PrbC^1>63@z;lbL@m%$^bk`|q9-YgnaYd=t&1rI z5#K!Oaz%$Rd# zBv}L$1CxV^X$o$P6I1K76gSolGI-**=ec_MDK7l%$5Ukb{{qSDA4$3ljy= zLWH12kV<+tcG^TOMsa8X%0v-_8yN}i^d4ja7EB>hf#IZN%v5GlLMb8=l%$dfCj@fQ zn=msnp+#UA6h{(c?+mpvMNo^=yWu7>o!%$hIKX*5OQ{-0OQCdnPs|+&#wqBT^n?&B zmW5$qNU&*1NVMoIYDE~Sqo4%WXjH9j+a72;BIUt zAwfjq4hkbfNJ0`R=zYR4qKTfd0tyg-*yr42z^Y|#H$+CzGjU6LBoTpt);jB+Opzdn zOd_H8q)FgTD3B$!7={r_y2KQ@4Xgm;Rh63xa40fvsb-{jg#dE{3gEcI(v4|qU{Fh? zWdp=e9LYe?y9g!AVSor~fylfCI0TG9vafPe0S-sXQ+8=gJKa09tn5w3m7O(<>P*p* zU^!G$Nik>Y!Qce}Jpv4BskCTBj;!i{yk3ix14n>eps~-mX$!c$y5CyekGR>us{|Ne zfB*^1c!l^EH>K2i=3dXd20RC>*=OA3zzV4RZ*^b;B>Vmel%Pwalwo+K00000 LNkvXXu0mjfD_$)g diff --git a/toolkit/themes/osx/mozapps/extensions/discover-logo.png b/toolkit/themes/osx/mozapps/extensions/discover-logo.png deleted file mode 100644 index cd50735a8943c0b63d42b33064c9411fe2900d5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12007 zcmVF5r^;0~J>mVMYDTT0M@RyJ-?i`ObLUn~SKsih-*e7+&N7) zhcVy0cOPH=;v73(w4NeVC(JDep2?$0;@+hlWzo8S`FcKaA9xePR^+@?=*-XakUop(U%GGrC_Twcy zR2&iqK0*kj6bLCeGg?N7bMdM8nZvd5(S92pyECdCddBVXG5vjqFDS8jTxBgOW%j$Ycj`)O%y$7n@i zVV1)D41TqYJa6n53c>FKTR!yHPyFN06mICpw^)Ax7R;tySto#0hU;o=b_I}!6fBok5@6g8dBr-V? z=@t-@(&9X`Q)if+8mCsS00Ltz*4l=}6@22Snp+5~2j1qF9=~z9pGC^-R#8A$E8tfb zh=U4I5HLA%fcCUu(}qpd>b35`4?ptL1pC(O*EmtEKVmF+i3|t_zgA&>W`dcCGc3$b zVK5kLF-^-X1RBJhKNYxP^}zK(&8uJ760a!KJ~l3KP|Xntly`Na1)t!q?f|?eHQ2En3+7o?8F&@AVh007L2lIjqaTf zpI%fy@i1^%Rfg(8BQm&d1`}0VXD9dnPTz`4|8(hRy84E9%}pG8#9FRv3@?KNQ*G@9kn{cJBSaJ6=erpZ(+4Y|iDfziSk4S+nUfG9Bxfn_l41?%m8zjqmqeM4IotTA7}TCAZ78H_O)BvEY0FU~PM(0APn3D@_- z&(&(as8ni{ibYEKX=?dVv|q$EAsaXL@|xFO#kx&>1d$<(G;wSItFZQ2srFBP=hxmc zpD!FbJvNaYo1DJ#d6|Xc?6EgVCxJE+Azh@Cq_=l9rDEZIk3R5~4_$l1>w~BNhIuFO z7K>>>H3nrY)=DfeIX%s)!M+y^?0bIclD@hhUgJ2Dtpl4_zhN86WS0EoL2Bh`>g6f4 zR!AY)a?v0y?Fqhn-${(I2*F)DNAl08+TZ_;Uv?9T#OGq8-dwI!nV6oVTCeHn=g@?^ z(Fzx1V&b5V)|$4qZZf%Ur&g5V_D868>fl$m zY`bXPk#sKiW{qHKcAn|EdGf`wea>(n|EKr92;m@vixnP9M`#@pYt8E6jR+xs``)j9 zv}ft>eBtBoYfm>Fs9wwdZ$IWyjy%Z`eW8yk04v1AutTfeX9X|-s+MtYK z{l*T-gJa8{b9B$AK8ldP=_K3f?+VDuGDnV|#+8E2tGc=F(jl??(DCO6*CHBXmJUc4 zAsph!C-f`Sy%cL#t>V;){R7sRKZ3^W#&KO%t-T0qG)7yDF<2`w&1{IJ5mUYp+aLYL zl^sD4zTZoA;-tGkdRVP7QH@%8hA^m5tN8>$NEF5RK{E>`1QxsT{PP{Y?+-jTkv(j! z-Cz(@@)P7|CRo+u@>~DuI>LI0Xk>d%K4;}x*o|cA)^5BU&vOa=GPY!s$M1dl4>LYgFV@b2F^ob}IvG zuA)*6@I03&s1o`Wv~HRO4OR#Q4fPre9l7kco-N4PBVXyo+E+*~c}u2qiz;jEl<5PNwrpHZg!D;p+dFlbH16h#{A{d z_x0$3?X~>kwb7|lgnmd6#`x8cpkBkT*NCGC(E$6b^XTp}(ZZJz@;AW&@zk!hMQeo> zNsP>qOuNKE4XqW%>T~wC5ts|G5^JHSBa5-}i$Cf{@+0555qO`q_U1&ohfMb-RB4p* zkuN`$y%G|HXqX-v6PAV<(pVE=brlyy6lumMrYRK47LIYntgii zH~W!PE=DVjiWQ+B;`;%9y-wu&SgoC>73W_4ir=0S()-{KgKfaI z&5Y8y2QyEpwh=Kj9HVH4Vn#&>Yd`qO552zo{A(3Pzq`#EeK?Wnd|R@0HQDYhIBtrl za1yLKcY8tzuohz!puonUW3Vy8Dy&rq6ao!aW2`2Z%W&H*FQ>J&<*bbb`1qfEcK`7o zuCw)i#9}d8(b-dD#mYKEYaAk_3BwqzEyjQ&W7;zLM}Mru&6O|xl@IKD=zqNl;cPey zSV#wi#2DQeBE~j=+NX}%*rsYF0J2u6cdRAQGW@;#iXv@l&y5o=4VKuteEM`0J+*Lz%i>1JqV=RDWp z_Sf9X*Z%R_EanUGhd+PlOXojpJ^aCT*Bja%t2v^=XEKPHmW16#%e`m1y9;-`o8E!J)7KQRkDMW2MGrf zp2ZuyoW)JQ#-|Uj=J)>albjiwKv<123fC39_Ej%s?dqYAF87=XZ{d_1>9T2a4?}%LR`yQNnk@rj*Q?)ic-M~&_mUUAF5Y_8t2PSh{<#niQaBASX)T;p z>=MAn7=)B`<MsIrtDFm@iGcYiWHu5t~PyL|u(yp6q#Yrp$8==D@CM;s& z8rCSPqQ&md-V){0Yh`y^!s%>Fi~hb2Rt@*j)0HFXfF~^p2l_6)8Fj;-^1ge%!FTR^ z7_7z`gXc(I{*vo%JN%vZKh4c+`|x#+7}{7)_w z{)v`()^FSK4$n*WIga;5B>G%M-!^gxrZIZSBpiBjN$S-F4(#8_BfIWra$=Ou))X`O z8XGoVhPC|su7AAq@2wSE5ebCzR0YVYkhnUHuFarp^B5CT6|MGI?xh;XNx0GqM}jNC zkrqcnYfGB`zAiFp4_8`TX-RjjVEE0S;qShEf-imLTUZ*=jMnj1NAN$N{_w+p1_`2g z5`XppQYMhX!*N`Mm5d!d(g-qyKnStx)$cj9>n92qU|@LDTzB7!|J2ph=Q=`el2TqH zCDYbgu!h!@rCOL|^z>=Z8Nb6AjW!_&i8T?r zK1WJu`oSBxwzP9 z8W93VJ~!1quL5Ov|IqP)p^bY4;emQH-T7)51nBMl~E7jm{WHipK2R z5jYa0Xuxi3&5}-eIMU!sL$YTB>8swxH~!BG zJ=`?h$yEbwT-=|dE1f_}ac&pQ;J&pbgXcL&VR59v+j_mq}0!BKil`QmtzyW=p8zX;fIi=z7C0nno;}cUCgkk`&!7DO!>) zq0)rPkZ>ezDG!Z3XC7ozy@ICzI}#)oM;PqIZ((9|j*}x(jf|L5bgjJTL*NnV32M`O z8@AS2s@lUK8mg6!c;w~(?}1%E4Y*J9wwo@w;h!z`k!lDlhSuO{3)+Hk!EupZfIh~95;dMcsPznVRnjA zegP>Yjugboyyux1{G{MEJF0M+y8tMcD!)^&R;e9(oYs1tmhwC;g;}zdJgt6_HsjOd zYO48ZGD(jpR`d<5rs_u=J~7&imm3bp8ij8%bfnY55fJMb9V?<(5vvB=Vi@BzA6!U* zXhM_%WHZT}N+xk+Q_aEXrbf5Bu8ZrrcnJ^Jb4eszJg@P0 z8K*#)%96BGAKTBWfesug&_^Rwnb%Eoj#;kkryjKt#iTt)H3=W$y)Xz#rki=wu$8yyt!5-m9AR69*EKi@nj zl&bOXoU0-{9j0B939`=@uDHOyRQcxc?nnNmwKcb0#R}JTa2yxUb8sAq<2tymi|Yuy z@mW^A{PondrM0sUA(QNVa-1u-uD}{i6en#`_#)vr=qNy&MpJ#}x-pp^hPJ%~aEa9{{yAIg;yMY0kc=EXbT$WpHhR|^e(%W# zmU(WwjCrun1+G};xO6}Ftt}q>(tpmR*BgDp6lQU=bVkq z%}kT&8KP1PSiNR5`;HytqIKQ4(xNri!_glK?0tJFq? zq3PU&z;VEFK*SbdVeQp7vS!oOSQPdAUUZN@r&{TF$=>6I3}ATWFEnySv6{!9c?`!rt6C2Mj2u0HH8BW_XjvOzX8O1JVd+mkbE+_w`-^STAym|Qh-~Ww-m-y96ZL}|}R~THop?c{{ZdWa7+6Pw- z;HFZ{OiXa#k%yR_o+Ovc@N=(xGeSVATqK)qrCbeIzkVx^?tO&yLoImP!}9`cSjAX@ z5iVMIXlc+AA{s!koKx!A8-5CK6FAMrW^1`?9>L>T?*>m@;zj)7?WkmNw?8GxD z)&TZRx2oIr9m&qk|NF@^E%hy%Hs0+A{>E~tthcQ!Z?Mr!Y9YU1HeLK; zDW!{a+@|f)SS0z$13a;NKN~K-j#K#rp&!xPJ3!fwah)Vj9@$H8PI1$Q0h>zXL}FkQ zF)ooz5Xl6wlO&Q!B9S1l4w02;0a0iOLQNQIf=J_sh9ET5BaI(uiq)86CE$1O$g*vy zi%1n%Jn}c#sEn7$kW6Hl9k21|_fK*8%|Fk^YhHzy?FSn&bNHJaIk1zp!z*ZOYeVZ8 zV-!k9aWawJ+u1!J>-F&NmW{9bhYJYPy3at~-tqD^xl1?pJkj0NzP6*Ije()gcPVe+ z)co9hT&|SWP*-KZ6;3iT2G4b*l{vC~+i;RCn7EFPD>%|&*8>l6_{mXvS8Sj)GsI$S zC|9baGC3-K#L%ks?BBPC>-t+oE**hi#K;uJNueE!G6LmDl$7Tx9HM!vqIuWi-0Oyz ztN`H%Hm`(jLoHZq2#SX={vvL&1;&Ma%Jco&wP94JqrLyD^%H;hp3H_fe0YgXKBs1Rfq2aTY+c*&y`Jul zwY_~^WHYUJi59O`n(=DI@#Lo7(aqi2`5wPEFJv;umg|3=u64KIwX8sTZ3yKfYIBSo zd6d8Z(ig~=eGVU=;JWLsrzM-DQmtT=LIBBBj;^jg9z3yt>lYDz85>s7k&lVP#>yKN zp|rwSbM85WuuGsmwQxi<h%hHpV-UEQ~N2ErtcZu`OzDf zi1M6B-3x^kzwyQ`m$bKKuNoNap}no0T&@>uVum^whI>hVqSMzOj}K{hBQ+T2V$56po^63kWw& zDIc@%fl=aQiq-47NoKl;@<&mHQH-jgRpSdiP#NMICkGl69aiw|AAE!M(U0>>zx+zB ze(~!$^w>WU1U~)!gI@)@&yOhNGGGnBs^P)6uNdf|r@NC}u8UMU!{~_vm@x0<+ImH- zEW?{`q^+%+U~&)s^keu_k5Zp}l(0C4RuRc`l8){!23HPp>f{-&x$a8ButIt2aklp6 zaipSJtrABeL8NJI@8&yW0fApbg+9jWrtP*o^`|&D_|6va&sKqr(HNx~6nIhWRLElsJ$7etgYE9h+K$#F znWUuu%Adnu^G3e-f~iY=FHCm~{VWd>_h;~`aqio*nbUz+qzjh=8P&WsyXUuYQ^=%rSv(UJzoDumYO>S|i6 z<{mLSH_OQAIG10ugYoextaa$>ZsEWDKW`zKbWw4H(J>x|P5p+0?1&eJv>_sbEMLy6r;W^;BrnNOK5r|mF zv|jQbI5T!1YuEN80N)R=GWDAKzIpGbU;fJ5_MHt`CBWZ);cqfW5AOSz<2awlFD|AR z=I7PIVp)wW^qo4j(D!7Cb)$WKU1+W8?d!#LGdNDOT5A+ag~TdkVseawC+8{aL9V#r ztz3Ei8xS~DDKBP^%jz#|z9aR!OED zs?{1Q^3h7u-oKHHwqDH4%rwc4VXBd_fie^VWu1g$vn?r;PI;sf4sQ1v0zYhI?ZS|B zI*GA~!IqZnm-p}4{oc=f@)KFWx+BM)ycYOWA)ikb^9!nwFX%#{Xp4oSEfz}@iX{dz z(|tlfduIo^_I8q~Zmcy8rK$*}Bc42Zoc^t^<>i;YxY1})m?o;1NoR9pTH4t0(wpcX z+`yqDd)T~j1Fopz*8>9IXD}yuY}AlUrHNccrlpfz2Tn1#W-U@iK!~+TwCfTXMQj90 zYr-HV2qQvY5rm2`XzW*BnZ+WAb(zwc#|a`qJBtPEXg{Uwr+J zS3UB;{cm#DY})eZzTLb2u3Rkqa-mQZ#X><83q^{>f+!Trwood|Rhd$U?;F-`?x8g| z2-c!hgw`=yMI1SPg4I{NiPak}KWEOf9RnDpuokM-BG>GA1N-)T9p4vx>!0sueDo-e z8`ss;o>h+hjRSL(F3hGa4+ zJP&m2Zby)5NfU(;)moigu7ib=TPPLt!gXcYTJzV}-EiZC z3y90E*?#9|Kk=8}io@{3g?xUXSSYAsxnfG?vQ>U5VO8L2;gL*bNvE^6oeQfI*CmcV{^mLx7xe7xUU%`uB@g_QZ2eCQ?;jkr{gRqLRibsx3 z)4QS*gM(5fN@I@`MixJ?RBHwu!7to#GfB_I4@1W0W|^Iyr?+PXuIr#xjM6cS<&w45 zkaS?77TO?cI!WbasOF~#BB%wL7Lmdeuxr-|Vjbg3!(e|qbuXY?snFh#+R*Pv{mR@9#z)3&RUF~ zqC-h$&g3Z;$|PM)yGOCRcgZB;Y|Ja~{oehL4fOWBrZt=W zt%MAIy;u>LRE;PyEEbA*PNOkHc&&s{fC_3Dr4f$e#DQNq0seHqkz%2l8C=qMe@I%8+%$d~;0-t(Eq zKip*JEMeGa#=Sr?oawoFf13HbE?U)kf2Hnyr9NNooSa#}m6k+8kV!gZS`uIkDhfeq ztOz)L;tZA+4jmpvipEUUOE|Q&w_r4;#6jp_L^H@|iVEm=vfXA`;h0fNa#QMEaA zP(Z5?Khiw3u$r%pu4Sa!#%LwSnR+)PY~`On`xgv!Xu8{zcwVFJHI;PO^XMt0?-Nxu zQN<8OlBl9-=})j&sjzL+YU+MS?5t*Sc9c&4pa{!T)M|Bd{&7~+zQgFq#65rV>0Pfo zaC~uoNo{S}Jh-z2s92`TDFIomn`m^ZcJKPty*q_4x7O-Grsn(9>osa&nuqTHIz2r@ zB)k;8Lt7XfnIe@*vti37`d6+aRxycmH>F|`ZIcx8lXyb&mYc6&^yDYT(e^%Q5Z9{`9@U!Bvyx5qtH609%;Tda|si1AL*1!Hk}~pHAbWr9?3N~vGeag z&5FJxt*vR|Skc|r&fW)~q%!9dR}Db~p_PbilJ-82Vj)j0hL)BrBH2&1G)K7}6BR~D zR*qsyBd3p@T6pyrzj^F`FC$8^T+z~5rn<`#uuEafosXRuTgX>F+uf0A^Mmk;Acz?o zAEBdX9sBm)&*a1iSV1b+j+jwQcO>uVR2!We0~n4G_$jlfJa;BFw;{bluCKte%lok=L^iv=858%D2fTAkV-9} z62!dtrft+}b=Iukf@k66=~H-~gTQby?B&`kU&3X>t!x`?$0m|Q%^a@P8m%>PtdSjS zQOCbYZ%+%Uq)Qw(mP&o^(NS{})Eua?HhMAAx?YH7xnu;6Wps3cLa9ozT&7s|Pahx4 z|J>K^JN|b|oYrzBcDvkr=K@eK1o^CzohMJujxFYEpUbAbb|K~E+9sHrn_+Qro~fxZ zlrp3g0Zm~!Y0@#j;Q+)K@cI5Nmi}t!F3Z1t?Xy- zzC*ZPl1Co-9>XhEFxPc6E4x|=wIw!&xmX|^i8Y{=LFt$%(!|=5Dj%aG6_Cv)iDSj& zLdAY<_h_t_B&!sd3aI(esL8yxQ;WtPA1lb&*|`sYchA(DM<$BPsr7u2%R+XSsah^~ zv`fIAh3t$@=BuNV`FCBuZSeo(GQnrFE$y8h9V-yl(9zjR7zHdW9w%QYu&`LY_C876%(*J9h+~cK$CT?K!yCG&RedtOX_QiAvN=|7-ofnTVHTn+ExAsD*pPAs z+CmmX=tz>OW;2SLz;z=;5aV{P!F5N7qKGKgtXtJCmhtRo*Un1Q*bm2wUq3aY4xd-R zJ-<+Ee-vPMnTCet;F_}yAm=$d3&NGUU21WoF_@b{{&t)LAb*J_-B^aOk|!mpzZij{<7XPnIty zdHE~=vrKD~m|3j-V8~ z-+K=TO+G)x;`}_7N}V{4kWfQMa z+Wgh3zP9B4W8;*I6;duF9Y{)WF&L$|;@Ybaj%8;0G^b9U=G5`iSR```^9=O$HdC95 zHa*6XVn7%>)DsRu2((fJenb>#!cY+ejpTY;c$}`DZYCz?I63ky(k&f4ad>Pg)MLPZ z1r9EwR-R$_KP#{-W3a_D02UX3e7^lUH`A-sqJIQ7S}Q(tVtnCcE{cpN$hd-}v?PS3 zud9`Tz78gj9b$H3f(QP24>}u@%%mxmEA;hrHey$+@k|k~a*{$kMACDRqFJ2?BWm@C zdZ6$_jg5U)1iSEM$b7y`sTNYLO>%0Y%o4TUxkRljowhzpkmebj*)ulsiVMWK7kYpG z>+`G0rYGyXHk%NiYfF1_u&13>gI%m$)q^K2nS>;rNFb3U6AAX6JV`ySv1aR5ZoBz< zq9`DaLyQV3s5W-$S0kJxQqt^>)C7T|9>mn^5$l5Q(4~(tHa1SV5>lx}96Y(e-X|C4 zfVTq=o@XA;citBQ_-vwtCI5QGPv~Dmd4^C<0@P!BG&c5Q8&P1CsnkQN^=NUi7`}dNrus=BKF>#7Xt@66PnANM+F*QBSVxjt}gC`bWfAD1f_%do;3er4B zsLx7t&hv!zOp1M`Z}(g`iXYo>wxYh!k?{_LybM!Vl4EmXs5NmjWw%>SSVHr zq8MwT9zqb*uvSv4RH@V=%C&%UHKJ0F&_)tP;lk`<_4a@G&asadE73El_4%muS&wAr z$5iC=1%A$P&R5lw*7DJ`CoUI4uCqd-jV0aILjQ_Bl8H1=>^#K-_wOf>N|N*p;884> zDU~XeYZ29YNX?I_`Vor@`A}LGb6uW+~pJFvQ_u=lYEbF)Q)83UuUvQ<-!Pr9f8D#4rHv<-W<89*UNukaxL zg$3WB0^trQFsA~Y_!1WU=QpLNPV@=Gu;6Dbf$%EEP=hkeDOiOa5Ef$+77Rmr;>1H$ z`~wTtL+Hdf3};b;oH@BgcppvN54rWR-)~mc|H;~|uwVqrsNpOO>VH~f8`CT}USr{g|L$DX+g%eV$5cp0sb9Vp3M3;S2K`sl_MEMo$47AWI#cpJlllH5d?xAee~%{O2f z=OJf-GA_g16#5c!=fnJlRvxKefn_wI1TT8_cWg?`Oody2=)S|RkHCUe&|LCP3%=8e zLvJ)-Ic{PMd(aIbnP>LmjCWa%hI&8RwgpzAi8_?1j;Vy+SJd<2n_XzaO3b1Tm8ko! zm1v?%-3NCHL$Cx*^gsn_zGDd*kd`*y5>}uEORyIzuqUyjb%7 diff --git a/toolkit/themes/osx/mozapps/extensions/extensionGeneric-16.png b/toolkit/themes/osx/mozapps/extensions/extensionGeneric-16.png deleted file mode 100644 index fc6c8a258357de80221a574049b4d76d2567c74f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)J|P2`b9RP5OWN%HABOACC;y-Eyb??!i-XjG)T0}~m9;he|Jv8n zz-`6$7i0iS>^kpoAk7)P#A$WNCWrqi$9@0DANKqo zbI|>N*d8Z1_E=%|-*1xRNz2LF{{yBu9|6S>*aaSQEdPT9Lsq-|58h>u6Pry?|Ie+$ zZp$Ib>cJ()rU!EYpYt@c|Fx&`{%0Hv{~x%+_P^62!~Z7zYG4|~hhdNy$g3cmL7HJ< zAYk01^51`}H5fZA(Esl@!Rc_@gw|RR4dTP(KftQHUs#L+g0xxb}9ddVao|xi$H-2qLIZx>ae8)E>0O%b53biUm)!d s3Lqe@3i2a}hVuQP^5!7*AdN5#0G@%Nl7(9`A^-pY07*qoM6N<$f+8agumAu6 diff --git a/toolkit/themes/osx/mozapps/extensions/extensionGeneric.png b/toolkit/themes/osx/mozapps/extensions/extensionGeneric.png deleted file mode 100644 index 6a76774c7bf6059748b511207414b34515b7c6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1302 zcmV+x1?l>UP)atVpz%s>@>I`XezltQ?tu8l#9XUz=C)| z0p((t0g(*pFj*5T

%^HO}<8nXDLUCj0XAJZsBkT~=a`6EpuAhI0=8-}}7JjR64r zKeeEbmc7lqyz^Pvrs{y9_K6*|DS0dRq@oW0hbSDTJzP8qf`@VQ2Gmuq2C>3l4xMcTt^D{CeSs z6L9g)Dd_ys04?LyaB}Pr7;YAT{zg7jT;C75ms21}=W$JN0IyuOIPG-8pY7k(&1qgb zoCya8k|9tl8xb7fNez?u=JB6sdQ|YiuofC`mCiCR{3-+XUP=N*LkPI5S@k1HLU|5* z%<}+KrnMxDRvHh^I{BOZ+aRjauNTde+%g#dNC3=w(Xg(r=<4n%bM24{GP>g-KqpfQ zR)%=zju`f`R~k1!#<`b3)w&r{o8#d1wnWIilnSNBtSR&SFLyxJKq72AyB0Rq`a?vu zH-sIL!|Eyz2q}LY0uQ@^Ux717)4AhLN+zEd0Gb!P)2D{!vG?apIJ0@q)g;(6r~vhq z7*GvFfwF%MZ2vR}w)Q>+FLe7r{KrdS7zLzf#w zwoAe5T@lO+fWj`M`T7r~5Yf2^e2T3AV3TpBI>)e!%zvXh7ur0$lb;QM?bY*Xt#dCn zn7gS>aT7jyd>@q>J)?xP$2{hO3?f=wA-K*FR_P@Wa$EvoZ59ADSg5ymeSZSlu)}G( z(*f&z2R)-~x98-Mt*)@VMDmm4PWCD)+I=_IwY*FOvV9KI065i*&7=CM-hT9JEu^<9 zZf$9ZIGNX?thMgi1lFrvNb1$7!mWdposP>TtzhWWjsJ>;;=gotJ|D zVevgQ3$@vZXr9wZ6*}9)+fCU%i2yR&08O!zG|z?3_I2$%EGrcKjsQ}d0JO=}j}!@B zY6Re0BKiXXmf8e}(}&zXGMqa-Qin2NA5OJhJqeKgS>l4sO#mG{tf&zGjR0Xb0YZ!9 zgS1AOPfqiEeU)EdaN!e~$>+irWNucVK>{u+u3$zL$Wc|OhA9ACAaiJkqcv(jZZe8` z(=xG{p3ziWs5xnE3lIL~;@{lVT&Z&^+v}O@aAReS7(6vI`T%aP&bUBU25CKv0b1EN zw8`Ky;YiPDq&}?FDBJ12P3o|K=(rCNd`tpC^%7WpT4H+7>MXD(n&;NqD|I+(GFaz- zQK@0JPhi4L`d5hWQP|hC+&8xtl?P^lEzvSzd2;IQzQvL|c#m1AXHXuf#gy%+aJ+LJ zg8gEGuor+f8OyK-)tcICvaRpjc5x*XcDn&+jj~L*RW%X%imdCg%iMafYsTvE86 zP=gdAJElvG=D8n^R6dp+#CHNMwP*`#qEaIxYvyz{cz_X;*TVqtlnR&ExX)>aqp+Dp z^PEp$TB`tCSqIhm%=gXm){3ylaMuws{s91MS70r~cFO7B|4km;KZsJ~yoFSdT>t<8 M07*qoM6N<$f=p6r?EnA( diff --git a/toolkit/themes/osx/mozapps/extensions/extensions.css b/toolkit/themes/osx/mozapps/extensions/extensions.css deleted file mode 100644 index 9614967a4b..0000000000 --- a/toolkit/themes/osx/mozapps/extensions/extensions.css +++ /dev/null @@ -1,1199 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@import url("chrome://global/skin/inContentUI.css"); - -%include ../../global/shared.inc - -@namespace html url("http://www.w3.org/1999/xhtml"); - - -/*** global warnings ***/ - -.global-warning-container { - overflow-x: hidden; -} - -.global-warning { - -moz-box-align: center; - padding: 0 8px; - color: #916D15; - font-weight: bold; -} - -.global-warning, -.global-warning .button-link { - text-shadow: @loweredShadow@; -} - -#addons-page[warning] .global-warning-container { - background-color: rgba(255, 255, 0, 0.1); - background-image: url("chrome://mozapps/skin/extensions/stripes-warning.png"); - background-repeat: repeat-x; -} - -#detail-view .global-warning { - padding: 4px 12px; - min-height: 31px; - border-bottom: 1px solid rgba(50, 65, 92, 0.4); -} - -@media (max-width: 600px) { - .global-warning-text { - display: none; - } - - .global-warning .warning-icon { - background-color: rgba(255, 255, 255, 0.7); - box-shadow: 0px 0px 2px 4px rgba(255, 255, 255, 0.7); - border-radius: 10px; - } -} - -/*** global informations ***/ -#addons-page .global-info-container { - background-color: #e3e6eb; - border-top-right-radius: 5px; - border-top-left-radius: 5px; -} - -/* Plugins aren't yet disabled by safemode (bug 342333), - so don't show that warning when viewing plugins. */ -#addons-page[warning="safemode"] .view-pane[type="plugin"] .global-warning-container, -#addons-page[warning="safemode"] #detail-view[loading="true"] .global-warning-container { - background-color: inherit; - background-image: none; -} - - -/*** notification icons ***/ - -.warning-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-warning.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - -.error-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-error.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - -.pending-icon, -.info-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-info-positive.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - -.addon-view[pending="disable"] .pending-icon, -.addon-view[pending="uninstall"] .pending-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-info-negative.png"); - width: 16px; - height: 15px; - margin: 3px 0; -} - - -/*** view alert boxes ***/ - -.alert-container { - -moz-box-align: center; -} - -.alert-spacer-before { - -moz-box-flex: 1; -} - -.alert-spacer-after { - -moz-box-flex: 3; -} - -.alert { - -moz-box-align: center; - padding: 10px; - color: #373D48; - font-size: 12px; - border: 1px solid #A8B8D1; - border-radius: 8px; - background-image: linear-gradient(rgba(255, 255, 255, 0.7), rgba(236, 241, 247, 0.7)); - background-clip: padding-box; - box-shadow: 0 -3px 0 rgba(58, 78, 103, 0.05) inset, - 0 3px 0 rgba(175, 195, 220, 0.3); -} - -.alert .alert-title { - font-weight: bold; - font-size: 200%; - margin-bottom: 15px; -} - -.alert button { - margin: 1em 2em; -} - -.loading { - list-style-image: url("chrome://global/skin/icons/loading_16.png"); - padding-left: 20px; - padding-right: 20px; -} - - - -/*** category selector ***/ - -#categories { - -moz-appearance: none; - border: none; - -moz-margin-end: -1px; - background-color: transparent; - position: relative; - margin-top: 31px; -} - -.category { - -moz-appearance: none; - color: #252F3B; - border-width: 1px; - border-style: solid; - border-color: transparent; - padding: 10px 4px; - -moz-box-align: center; - overflow: hidden; - min-height: 0; -} - -.category:-moz-locale-dir(ltr) { - border-top-left-radius: 5px; - border-bottom-left-radius: 5px; -} - -.category:-moz-locale-dir(rtl) { - border-top-right-radius: 5px; - border-bottom-right-radius: 5px; -} - -.category[disabled] { - border-top: 0; - border-bottom: 0; - height: 0; - opacity: 0; - transition-property: height, opacity; - transition-duration: 1s, 0.8s; -} - -.category:not([disabled]) { - height: 52px; - transition-property: height, opacity; - transition-duration: 1s, 0.8s; -} - -.category[selected] { - background-color: rgba(255, 255, 255, 0.35); - color: -moz-dialogtext; - border-color: rgba(50, 65, 92, 0.4); - -moz-border-end-color: #C9CFD7; -} - -.category-name { - font-size: 150%; -} - -/* Maximize the size of the viewport when the window is small */ -@media (max-width: 800px) { - .category-name { - display: none; - } -} - -.category-badge { - background-color: #55D4FF; - padding: 2px 8px; - margin: 6px 0; - border-radius: 10000px; - color: #FFF; - font-weight: bold; - text-align: center; -} - -.category-badge[value="0"] { - visibility: hidden; -} - -.category-icon { - width: 32px; - height: 32px; - -moz-margin-start: 6px; -} - -#category-search > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-search.png"); -} -#category-discover > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-discover.png"); -} -#category-locale > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-languages.png"); -} -#category-searchengine > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-searchengines.png"); -} -#category-extension > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-extensions.png"); -} -#category-service > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-service.png"); -} -#category-theme > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-themes.png"); -} -#category-plugin > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-plugins.png"); -} -#category-dictionary > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-dictionaries.png"); -} -#category-experiment > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-experiments.png"); -} -#category-availableUpdates > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-available.png"); -} -#category-recentUpdates > .category-icon { - list-style-image: url("chrome://mozapps/skin/extensions/category-recent.png"); -} - - -/*** header ***/ - -#header { - margin-bottom: 18px; -} - -.nav-button { - list-style-image: url(chrome://mozapps/skin/extensions/navigation.png); -} - -#back-btn:-moz-locale-dir(ltr), -#forward-btn:-moz-locale-dir(rtl) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right: none; - -moz-image-region: rect(0, 20px, 20px, 0); - padding-right: 3px; -} - -#back-btn:-moz-locale-dir(rtl), -#forward-btn:-moz-locale-dir(ltr) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - -moz-image-region: rect(0, 40px, 20px, 20px); - padding-left: 3px; -} - -#header-utils-btn { - list-style-image: url("chrome://mozapps/skin/extensions/utilities.svg#utilities"); - -moz-margin-end: 18px; -} - -#header-utils-btn > .toolbarbutton-menu-dropmarker { - list-style-image: url("chrome://mozapps/skin/extensions/toolbarbutton-dropmarker.png"); - padding: 0; - -moz-margin-start: 2px; -} - -#header-search { - margin: 0; - -moz-appearance: none; - padding: 3px 5px 2px; - border: 1px solid rgba(60,73,97,0.5); - border-radius: 10000px; - box-shadow: inset 0 1px 1px rgba(0,0,0,0.15), 0 1px rgba(255,255,255,0.25); - background: linear-gradient(rgba(255,255,255,0.2), rgba(255,255,255,0.3)); - background-clip: padding-box; -} - -@media (max-width: 600px) { - #header-search { - width: 12em; - } -} - -#header-search[focused] { - box-shadow: @focusRingShadow@, inset 0 1px 1px rgba(0,0,0,0.15); - border-color: -moz-mac-focusring; -} - -#header-search > .textbox-input-box { - -moz-padding-start: 15px; - background: url("chrome://mozapps/skin/extensions/search.png") left no-repeat; -} - -#header-search > .textbox-input-box:-moz-locale-dir(rtl) { - background-position: right; -} - -#header-search > .textbox-input-box > html|*.textbox-input::-moz-placeholder { - color: #5C6470; - opacity: 1.0; -} - -.view-header { - padding: 4px; - margin: 0; - min-height: 31px; - border-bottom: 1px solid rgba(50, 65, 92, 0.4); - background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.05)); -} - - -/*** sorters ***/ - -.sort-controls { - -moz-appearance: none; -} - -.sorter { - -moz-appearance: none; - border: none; - color: #41434B; - background-color: transparent; - border-radius: 10000px; - padding: 0 6px; - margin: 0 6px; - min-width: 12px !important; - -moz-box-direction: reverse; -} - -.sorter[checkState="1"], -.sorter[checkState="2"], -.sorter:active:hover { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; - box-shadow: inset #A3A6AC 0 1px 1px, @loweredShadow@; -} - -.sorter:hover { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; -} - -.sorter[checkState="1"] { - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); -} - -.sorter[checkState="2"] { - list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); -} - -.sorter .button-icon { - -moz-margin-start: 4px; -} - - -/*** discover view ***/ - -.discover-spacer-before, -.discover-spacer-after { - -moz-box-flex: 1; -} - -#discover-error .alert { - max-width: 45em; - -moz-box-flex: 1; -} - -.discover-logo { - list-style-image: url("chrome://mozapps/skin/extensions/discover-logo.png"); - -moz-margin-end: 15px; -} - -.discover-title { - font-weight: bold; - font-size: 24px; - font-family: MetaWebPro-Book, "Trebuchet MS", sans-serif; - margin: 0 0 15px 0; -} - -.discover-description { - text-align: justify; - margin: 0 0 15px 0; -} - -.discover-footer { - text-align: justify; -} - - -/*** list ***/ - -.list { - -moz-appearance: none; - margin: 0; - border: none; - background-color: transparent; -} - -.addon { - border-bottom: 1px solid #B6B1B9; - padding: 5px; - color: #373D48; -} - -.details { - cursor: pointer; - margin: 0; - -moz-margin-start: 10px; -} - -.icon-container { - width: 48px; - height: 48px; - margin: 3px 7px; - -moz-box-align: center; - -moz-box-pack: center; -} - -.icon { - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png"); - max-width: 48px; - max-height: 48px; -} - -.addon[active="false"] .icon { - filter: grayscale(1); -} - -.addon-view[type="theme"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric.png"); -} - -.addon-view[type="locale"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/localeGeneric.png"); -} - -.addon-view[type="plugin"] .icon { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric.png"); -} - -.addon-view[type="dictionary"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png"); -} - -.addon-view[type="experiment"] .icon { - list-style-image: url("chrome://mozapps/skin/extensions/experimentGeneric.png"); -} - -.name-container { - font-size: 150%; - margin-bottom: 0; - font-weight: bold; - color: #000; - text-shadow: @loweredShadow@; - -moz-box-align: end; - -moz-box-flex: 1; -} - -.creator { - font-weight: bold; -} - -.creator .text-link { - color: #0066CC; -} - -.description-container { - margin-top: 8px; - -moz-margin-start: 6px; - -moz-box-align: center; -} - -.description { - margin: 0; -} - -.warning, -.pending, -.error { - -moz-margin-start: 48px; - font-weight: bold; - text-shadow: @loweredShadow@; - -moz-box-align: center; -} - -.content-container, -.basicinfo-container { - -moz-box-align: start; -} - -.addon[status="installing"] > .content-container { - -moz-box-align: stretch; -} - -.update-info-container { - -moz-box-align: center; -} - -.advancedinfo-container, -.update-available { - -moz-box-align: end; -} - -.install-status-container { - -moz-box-pack: end; - -moz-box-align: end; -} - -.name-outer-container { - -moz-box-pack: center; -} - -.relnotes-toggle-container, -.icon-outer-container { - -moz-box-pack: start; -} - -.status-container, -.control-container { - -moz-box-pack: end; -} - -.addon-view .warning { - color: #916D15; -} - -.addon-view .error { - color: #864441; -} - -.addon-view .pending { - color: #1B7123; -} - -.addon-view[pending="disable"] .pending, -.addon-view[pending="uninstall"] .pending { - color: #62666E; -} - -.addon-view[notification="warning"] { - background-image: linear-gradient(rgba(255, 255, 0, 0.2), rgba(255, 255, 0, 0.1)); -} - -.addon-view[notification="error"] { - background-image: linear-gradient(rgba(255, 0, 0, 0.2), rgba(255, 0, 0, 0.1)); -} - -.addon-view[notification="info"] { - background-image: linear-gradient(rgba(0, 0, 255, 0.2), rgba(0, 0, 255, 0.1)); -} - -.addon-view[pending="enable"], -.addon-view[pending="upgrade"], -.addon-view[pending="install"] { - background-image: linear-gradient(rgba(0, 255, 0, 0.2), rgba(0, 255, 0, 0.1)); -} - -.addon-view[pending="disable"], -.addon-view[pending="uninstall"] { - background-image: linear-gradient(rgba(128, 128, 128, 0.2), rgba(128, 128, 128, 0.1)); -} - -.addon .relnotes-container { - -moz-box-align: start; - height: 0; - overflow: hidden; - opacity: 0; - transition-property: height, opacity; - transition-duration: 0.5s, 0.5s; -} - -.addon[show-relnotes] .relnotes-container { - opacity: 1; - transition-property: height, opacity; - transition-duration: 0.5s, 0.5s; -} - -.addon .relnotes-header { - font-weight: bold; - margin: 10px 0; -} - -.addon .relnotes-toggle { - -moz-appearance: none; - border: none; - background: transparent; - font-weight: bold; - -moz-box-direction: reverse; - cursor: pointer; - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); -} - -.addon .relnotes-toggle > .button-box > .button-icon { - -moz-padding-start: 4px; -} - -.addon[show-relnotes] .relnotes-toggle { - list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); -} - -.addon[active="false"] { - background-color: rgba(135, 135, 135, 0.1); - background-image: linear-gradient(rgba(135, 135, 135, 0), - rgba(135, 135, 135, 0.1)); -} - -.addon-view[active="false"], -.addon-view[active="false"] .name-container { - color: #686A6B; -} - -.addon-view[notification="warning"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-warning.png"), - linear-gradient(rgba(255, 255, 0, 0.04), - rgba(255, 255, 0, 0)); - background-repeat: repeat-x; -} - -.addon-view[notification="error"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-error.png"), - linear-gradient(rgba(255, 0, 0, 0.04), - rgba(255, 0, 0, 0)); - background-repeat: repeat-x; -} - -.addon-view[pending="enable"], -.addon-view[pending="upgrade"], -.addon-view[pending="install"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-info-positive.png"), - linear-gradient(rgba(0, 255, 0, 0.04), - rgba(0, 255, 0, 0)); - background-repeat: repeat-x; -} - -.addon-view[pending="disable"], -.addon-view[pending="uninstall"] { - background-image: url("chrome://mozapps/skin/extensions/stripes-info-negative.png"), - linear-gradient(rgba(128, 128, 128, 0.04), - rgba(128, 128, 128, 0)); - background-repeat: repeat-x; -} - -.addon[selected] { - background-color: rgba(105, 125, 149, 0.39); - color: black; -} - -.addon[selected] .name-container { - text-shadow: @loweredShadow@; -} - -.addon[active="false"][selected] .name-container { - color: #3F3F3F; -} - - -/*** search view ***/ - -#search-filter { - padding: 5px 20px; - font-size: 120%; - overflow-x: hidden; - border-bottom: 1px solid rgba(50, 65, 92, 0.4); -} - -#search-filter-label { - font-weight: bold; - color: #666; -} - -.search-filter-radio { - -moz-appearance: none; - padding: 0 10px; - margin: 0 3px; - border-radius: 10000px; -} - -.search-filter-radio[selected] { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; - box-shadow: inset #A3A6AC 0 1px 1px, @loweredShadow@; -} - -.search-filter-radio:hover { - text-shadow: @loweredShadow@; - background-color: #C0C3CB; -} - -.search-filter-radio .radio-check { - display: none; -} - -.search-filter-radio .radio-icon { - display: none; -} - -#search-allresults-link { - margin-top: 1em; - margin-bottom: 2em; -} - -/*** detail view ***/ - -#detail-view .loading { - opacity: 0; -} - -#detail-view[loading-extended] .loading { - opacity: 1; - transition-property: opacity; - transition-duration: 1s; -} - -.detail-view-container { - padding: 0 2em 2em 2em; - font-size: 110%; -} - -#detail-notifications { - margin-top: 1em; - margin-bottom: 2em; -} - -#detail-notifications .warning, -#detail-notifications .pending, -#detail-notifications .error { - -moz-margin-start: 0; -} - -#detail-icon-container { - width: 64px; - -moz-margin-end: 10px; - margin-top: 6px; -} - -#detail-icon { - max-width: 64px; - max-height: 64px; -} - -#detail-summary { - margin-bottom: 2em; -} - -#detail-name-container { - font-size: 200%; -} - -#detail-screenshot { - -moz-margin-end: 2em; - max-width: 300px; - max-height: 300px; -} - -#detail-screenshot[loading] { - background-image: url("chrome://global/skin/icons/loading_16.png"), - linear-gradient(rgba(255, 255, 255, 0.5), transparent); - background-position: 50% 50%; - background-repeat: no-repeat; - border-radius: 3px; -} - -#detail-screenshot[loading="error"] { - background-image: url("chrome://global/skin/media/error.png"), - linear-gradient(rgba(255, 255, 255, 0.5), transparent); -} - -#detail-desc-container { - margin-bottom: 2em; -} - -#detail-desc, #detail-fulldesc { - -moz-margin-start: 6px; - /* This is necessary to fix layout issues with multi-line descriptions, see - bug 592712*/ - outline: solid transparent; - white-space: pre-wrap; - min-width: 10em; -} - -#detail-fulldesc { - margin-top: 1em; -} - -#detail-contributions { - border-radius: 5px; - border: 1px solid rgba(50, 65, 92, 0.3); - margin-bottom: 2em; - padding: 1em; - background-color: rgba(255, 255, 255, 0.35); -} - -#detail-contrib-description { - font-style: italic; - margin-bottom: 1em; - color: #373D48; -} - -#detail-contrib-suggested { - color: grey; - font-weight: bold; -} - -#detail-contrib-btn { - -moz-appearance: none; - color: #FFF; - border: 1px solid #3A4EEE; - border-radius: 3px; - list-style-image: url("chrome://mozapps/skin/extensions/heart.png"); - background-color: #2F73EF; - background-image: linear-gradient(rgba(251, 252, 253, 0.70), rgba(246, 247, 248, 0.27) 49%, - rgba(231, 232, 233, 0.25) 51%, rgba(225, 226, 229, 0.1)); -} - -#detail-contrib-btn .button-box { - padding: 0 6px 1px 6px; -} - -#detail-contrib-btn .button-icon { - -moz-margin-end: 3px; -} - -#detail-contrib-btn:not(:active):hover { - border-color: #4271FF; - background-color: #0459F7; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), - 0 0 3.5px hsl(190, 90%, 80%); - transition: background-color .4s ease-in, - border-color .3s ease-in, - box-shadow .3s ease-in; -} - -#detail-contrib-btn:active:hover { - background-color: #8FA1C1; - border-color: rgba(0, 0, 0, 0.65) rgba(0, 0, 0, 0.55) rgba(0, 0, 0, 0.5); - box-shadow: 0 0 6.5px rgba(0, 0, 0, 0.4) inset, - 0 0 2px rgba(0, 0, 0, 0.4) inset; -} - -#detail-grid { - margin-bottom: 2em; -} - -#detail-grid > columns > column:first-child { - min-width: 15em; - max-width: 25em; -} - -.detail-row[first-row="true"], -.detail-row-complex[first-row="true"], -setting[first-row="true"] { - border-top: none; -} - -.detail-row, -.detail-row-complex, -setting { - border-top: 2px solid; - -moz-border-top-colors: rgba(28, 31, 37, 0.2) rgba(255, 255, 255, 0.2); - -moz-box-align: center; - min-height: 30px; -} - -#detail-controls { - margin-bottom: 1em; -} - -#detail-view[active="false"]:not([pending]):not([notification]) { - background-image: linear-gradient(rgba(135, 135, 135, 0.1), - rgba(135, 135, 135, 0)); -} - -setting[first-row="true"] { - margin-top: 2em; -} - -setting { - -moz-box-align: start; -} - -.preferences-alignment { - min-height: 30px; - -moz-box-align: center; -} - -.preferences-description { - font-size: 90.9%; - color: graytext; - margin-top: -2px; - -moz-margin-start: 2em; - white-space: pre-wrap; -} - -.preferences-description:empty { - display: none; -} - -setting[type="radio"] > radiogroup { - -moz-box-orient: horizontal; -} - - -/*** creator ***/ - -.creator > label { - -moz-margin-start: 0; - -moz-margin-end: 0; -} - -.creator > .text-link { - margin-top: 1px; - margin-bottom: 1px; -} - - -/*** rating ***/ - -.meta-rating { - -moz-margin-end: 0; - margin-top: 2px; -} - -.meta-rating > .star { - list-style-image: url("chrome://mozapps/skin/extensions/rating-not-won.png"); - padding: 0 1px; -} - -.meta-rating > .star[on="true"] { - list-style-image: url("chrome://mozapps/skin/extensions/rating-won.png"); -} - - -/*** download progress ***/ - -.download-progress { - background-image: linear-gradient(#DCDEE3, #CBCED6); - border: 1px solid #858898; - border-radius: 3px; - box-shadow: inset #E3E8EC 0 1px 1px, @loweredShadow@; - width: 200px; - height: 21px; - margin: 0 8px; -} - -.download-progress[mode="undetermined"] .progress { - -moz-binding: url("chrome://global/content/bindings/progressmeter.xml#progressmeter-undetermined"); -} - -.download-progress[mode="undetermined"] { - border-color: #2E773A; -} - -.download-progress[mode="undetermined"] .status-container { - padding: 0 2px; -} - -.download-progress .start-cap, -.download-progress[complete] .end-cap, -.download-progress[mode="undetermined"] .end-cap, -.download-progress .progress .progress-bar { - -moz-appearance: none; - background-image: linear-gradient(#6AC47E, #4FAC6A); - margin-top: -1px; - margin-bottom: -1px; - border: 1px solid #2E773A; -} - -.download-progress .start-cap { - -moz-margin-start: -1px; - -moz-border-end-width: 0; -} - -.download-progress .end-cap { - -moz-margin-end: -1px; - -moz-border-start-width: 0px !important; -} - -.download-progress .progress .progress-bar { - border-left-width: 0; - border-right-width: 0; - min-height: 21px; -} - -.download-progress .progress { - -moz-appearance: none; - background-color: transparent; - padding: 0; - margin: 0; - border: none; -} - -.download-progress .start-cap, -.download-progress .end-cap { - width: 4px; -} - -.download-progress .start-cap:-moz-locale-dir(ltr), -.download-progress .end-cap:-moz-locale-dir(rtl) { - border-radius: 3px 0 0 3px; -} - -.download-progress .end-cap:-moz-locale-dir(ltr), -.download-progress .start-cap:-moz-locale-dir(rtl) { - border-radius: 0 3px 3px 0; -} - -.download-progress .cancel { - -moz-appearance: none; - background-color: rgba(255, 255, 255, 0.15); - border: 1px solid rgba(0, 0, 0, 0.4); - padding: 3px; - border-radius: 3px; - min-width: 0; - margin: 3px; -} - -.download-progress .cancel .button-text { - display: none; -} - -.download-progress .cancel .button-icon { - -moz-margin-start: 0; -} - -.download-progress .cancel { - list-style-image: url('chrome://mozapps/skin/extensions/cancel.png'); -} - -.download-progress .status-container { - -moz-box-align: center; -} - -.download-progress .status { - text-shadow: @loweredShadow@; -} - - -/*** install status ***/ - -.install-status { - -moz-box-align: center; -} - - -/*** check for updates ***/ - -#updates-container { - -moz-box-align: center; -} - -#updates-installed, -#updates-downloaded { - color: #3C735C; - font-weight: bold; -} - -#update-selected { - margin: 12px; -} - - -/*** buttons ***/ - -.addon-control[disabled="true"]:not(.no-auto-hide) { - display: none; -} - -.no-auto-hide .addon-control { - display: block !important; -} - -.no-auto-hide > .menulist-dropmarker { - -moz-padding-start: 0px !important; -} - -button.button-link { - -moz-appearance: none; - background: transparent; - border: none; - box-shadow: none; - text-decoration: underline; - color: #0066CC; - cursor: pointer; - min-width: 0; - margin: 0 6px; -} - -.text-link { - color: #3386D5; -} - -.button-link:hover, -.text-link:hover { - color: #3DA1FF; -} - -/* Needed to override normal button style from inContent.css */ -button.button-link:not([disabled="true"]):active:hover { - background: transparent; - border: none; - box-shadow: none; -} - -.header-button { - -moz-appearance: none; - padding: 0 4px; - margin: 0; - height: 22px; - border: 1px solid rgba(60,73,97,0.5); - border-radius: @toolbarbuttonCornerRadius@; - box-shadow: inset 0 1px rgba(255,255,255,0.25), 0 1px rgba(255,255,255,0.25); - background: linear-gradient(rgba(255,255,255,0.45), transparent); - background-clip: padding-box; -} - -.header-button .toolbarbutton-text { - display: none; -} - -.header-button[disabled="true"] .toolbarbutton-icon { - opacity: 0.4; -} - -.header-button:not([disabled="true"]):active:hover, -.header-button[open="true"] { - border-color: rgba(45,54,71,0.7); - box-shadow: inset 0 0 4px rgb(45,54,71), 0 1px rgba(255,255,255,0.25); - background-image: linear-gradient(rgba(45,54,71,0.6), transparent); -} - -/*** telemetry experiments ***/ - -#detail-experiment-container { - font-size: 80%; - margin-bottom: 1em; -} - -#detail-experiment-bullet-container, -#detail-experiment-state, -#detail-experiment-time, -.experiment-bullet-container, -.experiment-state, -.experiment-time { - vertical-align: middle; - display: inline-block; -} - -.addon .experiment-bullet, -#detail-experiment-bullet { - fill: rgb(158, 158, 158); -} - -.addon[active="true"] .experiment-bullet, -#detail-view[active="true"] #detail-experiment-bullet { - fill: rgb(106, 201, 20); -} diff --git a/toolkit/themes/osx/mozapps/extensions/heart.png b/toolkit/themes/osx/mozapps/extensions/heart.png deleted file mode 100644 index 655f4c4be795d4c49cf842e4b8858e74eef816dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2949 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 diff --git a/toolkit/themes/osx/mozapps/extensions/localeGeneric.png b/toolkit/themes/osx/mozapps/extensions/localeGeneric.png deleted file mode 100644 index 4d9ac5ad895281ec1fc1154d24270bad38e21be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2410 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 Y02Xl?bhbfYx&QzG07*qoM6N<$f)@l6EC2ui diff --git a/toolkit/themes/osx/mozapps/extensions/newaddon.css b/toolkit/themes/osx/mozapps/extensions/newaddon.css deleted file mode 100644 index 5bf04fab1d..0000000000 --- a/toolkit/themes/osx/mozapps/extensions/newaddon.css +++ /dev/null @@ -1,112 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../../global/shared.inc - -@import url("chrome://global/skin/inContentUI.css"); - -#addon-page { - padding: 0; -} - -#addon-scrollbox { - overflow: auto; - -moz-box-orient: vertical; - -moz-box-flex: 1; -} - -#spacer-start { - -moz-box-flex: 1; -} - -#spacer-end { - -moz-box-flex: 3; -} - -#addon-container { - overflow: visible; - max-width: 600px; - margin: 20px; - padding: 30px 90px; -} - -#addon-info { - -moz-box-align: start; - margin: 25px 10px; -} - -#icon { - -moz-margin-end: 10px; - max-width: 64px; - max-height: 64px; - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric.png"); -} - -.addon-info[type="theme"] #icon { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric.png"); -} - -.addon-info[type="locale"] #icon { - list-style-image: url("chrome://mozapps/skin/extensions/localeGeneric.png"); -} - -.addon-info[type="plugin"] #icon { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric.png"); -} - -.addon-info[type="dictionary"] #icon { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png"); -} - -#name { - font-size: 130%; -} - -#author { - color: GrayText; -} - -#location { - color: GrayText; -} - -#warning { - margin-bottom: 25px; - -moz-box-align: start; -} - -#warning-icon { - list-style-image: url("chrome://mozapps/skin/extensions/alerticon-warning.png"); - width: 16px; - height: 15px; - -moz-margin-end: 5px; -} - -#allow { - -moz-margin-start: 84px; - margin-bottom: 20px; -} - -#continuePanel, -#restartPanel { - margin-top: 25px; - -moz-box-align: center; - -moz-box-pack: end; -} - -#continuePanel { - -moz-box-pack: end; -} - -#restartMessage { - text-align: right; -} - -#restartSpacer { - -moz-box-flex: 1; -} - -#later { - color: GrayText; -} diff --git a/toolkit/themes/osx/mozapps/extensions/rating-not-won.png b/toolkit/themes/osx/mozapps/extensions/rating-not-won.png deleted file mode 100644 index 2761f19255511393ac671c0d075d4af2f63cf316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1559 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 RyJP?W002ovPDHLkV1kc@xmf@J diff --git a/toolkit/themes/osx/mozapps/extensions/selectAddons.css b/toolkit/themes/osx/mozapps/extensions/selectAddons.css deleted file mode 100644 index 8682b04b51..0000000000 --- a/toolkit/themes/osx/mozapps/extensions/selectAddons.css +++ /dev/null @@ -1,163 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -%include ../../global/shared.inc - -.heading { - font-size: 270%; - text-align: center; - margin: 0 120px; -} - -.progress { - margin: 10px 128px; -} - -.progress-label, -#errors-description { - text-align: center; - margin: 0 10px; -} - -#checking-heading, -#update-heading, -#errors-heading { - margin-top: 90px; -} - -#select-heading, -#confirm-heading { - margin-top: 10px; - margin-bottom: 10px; - text-align: center; -} - -#select-description, -#confirm-description { - margin: 10px; -} - -#select-list { - border: 1px solid WindowFrame; - background-color: Window; - margin: 10px; -} - -#select-grid column { - -moz-box-align: center; -} - -#select-grid row { - -moz-box-align: stretch; -} - -#select-grid row:nth-of-type(odd) { - background-color: -moz-oddtreerow; -} - -#select-grid label, -#select-grid checkbox { - margin-top: 0; - margin-bottom: 0; -} - -.select-cell { - -moz-box-align: center; - -moz-box-pack: start; - box-sizing: border-box; -} - -#select-header { - background-color: Window !important; -} - -#select-header .select-cell { - -moz-appearance: treeheadercell; - border: 2px solid; - -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow; - -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow; - -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow; - background-color: -moz-Dialog; - color: -moz-DialogText; -} - -.select-keep { - -moz-box-pack: center; -} - -.select-icon { - width: 20px; -} - -#select-grid separator { - display: none; -} - -.addon-name, -.addon-action-message, -.addon-action-update { - box-sizing: border-box; - margin: 0; - padding: 2px 6px; -} - -.addon:not([active]) .addon-name, -.addon:not([active]) .addon-action-message, -.addon:not([active]) .addon-action-update { - color: GrayText; -} - -.addon-icon { - height: 16px; - width: 16px; - margin: 2px; - list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric-16.png"); -} - -.addon-icon[type="theme"] { - list-style-image: url("chrome://mozapps/skin/extensions/themeGeneric-16.png"); -} - -.addon-icon[type="plugin"] { - list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric-16.png"); -} - -.addon-icon[type="dictionary"] { - list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric-16.png"); -} - -.action-list { - margin-top: 10px; - -moz-margin-start: 5em; -} - -.action-header { - margin-bottom: 10px; -} - -#confirm .addon { - -moz-margin-start: 3em; - -moz-box-align: center; -} - -.addon:not([active]) .addon-icon, -#disable-list .addon-icon, -#incompatible-list .addon-icon { - filter: grayscale(1); -} - -#footer { - padding: 15px 12px; - -moz-appearance: statusbar; - -moz-window-dragging: drag; -} - -button { - -moz-appearance: toolbarbutton; - min-height: 22px; - margin: 0 6px; - padding: 0; - text-shadow: @loweredShadow@; -} diff --git a/toolkit/themes/osx/mozapps/extensions/stripes-error.png b/toolkit/themes/osx/mozapps/extensions/stripes-error.png deleted file mode 100644 index 1dc2d8504cbf625fffc9d5707ef9eb459c70fc0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1979 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 RqR0FDO-e{nHO0SO_J4HbA_V{d diff --git a/toolkit/themes/osx/mozapps/extensions/stripes-info-positive.png b/toolkit/themes/osx/mozapps/extensions/stripes-info-positive.png deleted file mode 100644 index 370ceec0f241b320339bd7a6239eafd4f19944cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1852 zcmaJ?3rrJt9IhxR$XjJ1AjcIFQQKZy9&1O1wnu4$HCW1qifC!CP_(^14k^qBOdJ&v zDIx?p5o8SA6#=(o?2^0x{eSts@AvqBmpdG> zDa_7hl?{PFuoLiM5x(m1J9>!~{%l=iT81yKSZFjBiOR8Li54NSWoR4%2$Yg|M1)9W zDVp0z5P`4|REVRoXyHbt6jhQXW(--cRO4&{At+d{mPmIY7!ZfVD^x6S|KNJ-$i~zW(76JUp5J?IJKtKSMOr`q;1_rJNXb=^mKr{-KMxq8X=`7znG{NLaxyuYPDZuy6e@$kFl*3gBpgA~rKm88o}|(dXBA*X zC)Fy{m;zM+W<^OHnuM`HywVRXDAjYaD&5SO@PSeE5;cWNhRiL^0)@i=hbonGXdNa( zKGyr6!a8w^8li{~9h#(-;s+-unp3HnTrDEOP^}n6ch62SA_2uvT>`2GxRL&VP$E^R z%=>A)P{(3RAgs8ja2Ir%|aek3kD%b2(hU04|Tifdipg zE{sZ(l!ywO<;p&C>GN{UR#2+(%rK%=>_KEaEvf{jTV^WeuLYV{Z-y(IzZUAeTnb(c z#eA^;IOy3B?jG~&oNe*VobeGA?shG1>vzv0?D4OqP5`sT`tIS99&I^f8=^eDM?QY` z+GOXxdsg+iA(?}Ya1RT+qKxCxw${Rc=J)A4^7X{=rK88D8easy_qne}m-&0Y zWFMswA3FCQcnc52_IrpeU#&|L-bMM49O31r?G67mw!)IP#JGRuAEi%STP*rV59tp1 z^IlrrA79Yq#kc_ywWC|9Pq#Hs_}EU2rS-qKx>dd?Ecf1}E4gE?UdI-v>?s0*gH?&S zHI8jA^k2#LdeQJn%`MY*dgl0I>zkLv=M42Nh6lO5@&o68F=d|NugkvGIXu$bKqy-4 zSkqyM0c$Lb&Igu)o;z>0fG4fc*xLZ7e#?n z_~GRi;uVS#r|_)yzjmB!ky&`?ZdPIZm7k&uJ%VPESP_ zN0r(SPcoK$*;E=EmIeBfItq5gZ5+H@^kz$WU0;@|USlD2>$rH~GV?QWny#Zg^~8B% zZ+YkP!O}SyFZfSMhT~x7zXGRta2Bb|GtkZ?E|yBEx1(Q?>)77bT>0aUCrvw^Ehomr z$ZA6>s@okE8933w7>|6-m*N%gGwh9$8~lD+;&ms}R8HeoXj*&U+eT?Z(lU_P0;lXF zczf$z%(w^nuHeO6IL=|Z*@%TQ(sajXz>4Ix99UpQxEr*x Uy0K$$oB4kx2;BtNa&~_8H&}1R3;+NC diff --git a/toolkit/themes/osx/mozapps/extensions/stripes-warning.png b/toolkit/themes/osx/mozapps/extensions/stripes-warning.png deleted file mode 100644 index 69463fb1af3de8f2cb8c9acc2fcbd61b226cb114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2177 zcmaJ@c~ld39#4Q}5s`BGf(1KFpga+BOn^X2IFd_u5kW<$>;#4Ok7eh*ncw_=@ALV5ug||u4?q&Z()u;Tg1bL$fZ*`VjBh-4! z)%Z097*UH<5~W6>kOM|VVWJ{kLkH1JUzZ?LuFJ~RZ`y=5jHneViDUxFSkfAh$NT?K znQR@c*6@)(^8KH}YC)C~A@UKmB3&gy2bY95hEmd)DnzJJs00dybghdKDGH53ouW_z z%t&8=ClpEK#{DXu$D?uOYK>4XLbxy;L=^}UiI_%Z!DJ?d%nD`rLS!<`4uDvpOa{}( zkI7~*U@B>i3oAtFGDNOf_vNz-!tsqmPkzqt7$w0(xl|lxrmQ0guoC|Y9y*FI( z#<{>7a*1d%MB`xpH0ZS>)IG-6b=#twb>ky))a@$N*7XVE0~n0i0v8SyXm3xSDypaj zY(j*Llh=dNR$6}VzMer%JIA&kD=5f!a{gHwzCGyvf(gY&wy^ZPi~7ZrW(&(RGxZ5~ zdj7`Rr~AO?AGKvaT1GvuY`%P8IQQ=}K&~w_$2}=~%4VFrZ8D~DzI2O8Wv?1r9FIgr zu=<5QlQ$cS-U$e~8?N0{4A|RwlJ?oJJ^8`jy4X#kmevpF1LkUwrZFzoWSSIm+trG@3T%5&N;?Z4Bav; zEcN%hL*;4vOnexS&W)Q<#WGh|L^WFJZ$jsLJDeJH<*ur*yy$1jCEeD!Q``r8nznPo zan&$e=u=-BU$o4$TFlB5^yQv##@%U(rx0G%_j%1VHl4juUS^UFo`o2%z$h#@<#53S zD%wwbp5L-HvwH``kJosFXivX-ROV9gqCx(>q}FY*`90);PQSgl_Qk;bq;k+>vv|p0 ze$g?ESY@lqm!?Wz;&#-HgaPd@o>b!I>@RXgia-6hyWxr|6ciRY3|b77p2O(H#l{I8 z_T*dR#U_Psdzep)`U2r=vBRxaE~j_)T#IHiEhN!)*a?5~tnhd2T<p;h3vq+P$Yc z@V9YW9NqR*c6pwxB`;v>ntsZ!%6{4LYeqsLE2*o>Eh!D?P#fKtC z`^TUwy;7WO11Bo4w;5+_7F09f3BAR(k9)9pdAQ_BS$*J8aAd{Ue(Z zJ9}~poOovXChVw(ZS31_XM5Zjl_Ou<76lH%E!NZ2>$y5x@L1zahCe)0V0(_^1X9y4 zS?gQ0|JEI9c|kr9Ln#XMFB$iUzI`q7&ajmx}`f*APM!zeu_uJBc?Wu^TF!DH&dA;$Jn!K%C--c{Ns&7v^Ja8>KT;HC2 z*baDqwSQ;RLOORZ4{!cWIjIH+*&i9`iuPN-bMv7>5g}Jm+ylY=vBDmyOxi|Z8Nk)1>%wApB>`NR!`Ax zb$#_vCv~~Nqqv!tKeW*nf7tahfYh1Y(f-imorz6i%TMcYBfj5-jXa)aHR22ov&XZp z3iMXS89z!-ynFIU7}$2E*5*c?J9l4s zuppIOvZ-|EjoUM|&h60z&e%uCTMk7H-xRf9W+j7mrgrV`mBm$KFW#ke-fDZ9V7Rw; z=y_0tczSQzKMTL#lcF}5B)T>AHf8czmNrh{CEWxTtpS3=FO9qFIaZI<_cT&Hh;wD? zfAHp8y)MtJmv3}L7y30h8zg=^>8XxGuU*<`I_Al@SZ_i~`9Q($9M|?Ur!E;(h2ms0 zMsFLrekfRK+j_$J2$0%CTUq%=I`p3``47QZb4*Oq;|mj^VxIA*fXfPpTNob{{1>ME BY6JiP diff --git a/toolkit/themes/osx/mozapps/extensions/themeGeneric-16.png b/toolkit/themes/osx/mozapps/extensions/themeGeneric-16.png deleted file mode 100644 index 190bb30d717c6abd6b87df313f609cd8a412c040..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmV;%0y+JOP)D)4l38 zbI#Vg*XcX8%nve$&TX%mBUCC(_R-G&+TK^zN-GdL@Vj}=^Z%W5IFD#;ZB6t)Y-ug@ zDhnQGh%z_Vw6!xi#GnuhVW!(jUv7>%7= zgH9*?r-0IH&(l`3f6nKD&#A{iQ7TSn-2gqfj3ozyRrfR)=bMPSwmy4<>foGY((EWjk+_3 zvG66d9(FAf=w=!0b*7`)$AGff5feE3Y~O{Gg|IAF4p)0Q+NBAY7#)v=$NU7EX$E`P zbhK~`w3Iav6AUmf!-60jA@F+Kn5eoAbF~uF{%@G{2iL>z=j|Br(6G!zFg~|}@+$4q zUr(T#?+md_#OE5pl<6#LF6V*jFwQCzmAC4iHL>O)54cG&7CrkgG9QMz+5GWQV^_+C zU$9wU?5wLOT5T&$hU#J=6e_h{Q>(S9YP5@OtQW&>8>YB^K5UwM*wDHEk2&ZllV$45 z^2yb#9pMKRrNq=X3d%kP#=VL`E`V0+VC1%1*K$|Wn)264JT4Z=b0qO4(nGs5D(+QY zcy8|GM$|L4Ez$4)~7)27TiK9J2Z{qKQ sxTraSXFE?4Px2;`qI(HHZy^YN0N!cbu+$SM$N&HU07*qoM6N<$f>lXO4gdfE diff --git a/toolkit/themes/osx/mozapps/extensions/themeGeneric.png b/toolkit/themes/osx/mozapps/extensions/themeGeneric.png deleted file mode 100644 index be645f76df92c954c143576eba8a9e43da0499fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2185 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 Q$p8QV07*qoM6N<$g3JiWga7~l diff --git a/toolkit/themes/osx/mozapps/passwordmgr/key.png b/toolkit/themes/osx/mozapps/passwordmgr/key.png deleted file mode 100644 index b5e8afefca4b4b4adfa8ebe2d528e3c68bfbb3a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cMy~*$5Lck$|NsBj*VoUOF=OV;nX_iinmv2gq)C&ePMy-; z-qzmU-qqFB-QC^T*x1zA*xc0A($dljM6IoDZ9v(!^78VE3LvVet*x!At1T=nEGjB0 zE-o%9DJd%}Eh{UlfGMb~sOV^K@9gaC>F)09>zg=n!kjsC=FXivZ{EE5^XDyIyl4p! zEm^X1#fq(4HgDUyW#^6^J9qBbwQJYzojZ2}$=yJ-d(WOdd-v|%zkmOM1N#mhIB@9T zfy0Lm9X@>c`0-;WKVlDym|BP?b~-E9wL@#BN(#T5Gimi{Hqi$~oL|iaH~D>h*2vYd+%kg0fXgz~%Zb&+Sodx(OHZ@0 zszOcN<&t>kaO3?M{&@!T&ujVGUpjurP9=6W>yhW%PX-un@b>a8zLdfqsr_KW(pN8p zQnj>>o#c7MZJD}yXRD|8N2jym-%bQ>=bez)zP_Yj-PrW<266dy1`6wg~7422WQ%mvv4FO#oVWU;Y39 diff --git a/toolkit/themes/osx/mozapps/plugins/notifyPluginGeneric.png b/toolkit/themes/osx/mozapps/plugins/notifyPluginGeneric.png deleted file mode 100644 index 449e081496f7f0e460de087d76f3cad549d25df1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmV-90mlA`P)oABaI+t`GP*qh2LqCs)LB@GWXW#`qfPGSN18&3o0*6F*0S^~&3kIDS z^4JiVK$Ga)y+DNIX|}%z6P|yA^AC9#C}-){<=IMzvMfh@;fb;sCou}nxj}#>2ACLN z$N@!Bm=8zvFMI=y2AbGFi@L7crfGJR0Hsvxeu@+3J#h=&TYv!onE6{3`a=V500000 LNkvXXu0mjf%UXO& diff --git a/toolkit/themes/osx/mozapps/plugins/pluginBlocked-64.png b/toolkit/themes/osx/mozapps/plugins/pluginBlocked-64.png deleted file mode 100644 index 56b8a3322d9d5054480d8ae5d70386ecfe51ea0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4563 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 diff --git a/toolkit/themes/osx/mozapps/plugins/pluginBlocked.png b/toolkit/themes/osx/mozapps/plugins/pluginBlocked.png deleted file mode 100644 index 6e8e1761bf87e41def9bc2567680c2ab0f4c6c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2152 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 diff --git a/toolkit/themes/osx/mozapps/plugins/pluginGeneric.png b/toolkit/themes/osx/mozapps/plugins/pluginGeneric.png deleted file mode 100644 index 6ada1616bb125b42529b68bf3bb66298cccfce9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1939 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 listitem { - list-style-image: url("chrome://mozapps/skin/profile/profileicon.png"); -} - -#profiles:focus > listitem[selected="true"] { - list-style-image: url("chrome://mozapps/skin/profile/profileicon-selected.png"); -} - -#profiles > listitem > listcell > image { - width: 16px; - height: 16px; -} - -box#managebuttons > button { - min-width: 8em; -} - -#managebuttons { - padding-top: 1em; -} diff --git a/toolkit/themes/osx/mozapps/profile/profileicon-selected.png b/toolkit/themes/osx/mozapps/profile/profileicon-selected.png deleted file mode 100644 index f3e1f8e110bc178888124a58ef675fcfaad67cdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmVvCT32rNX`^-QT$Iu}JTkFD*+VqtbV9lcmATBtAGAc_8F|0y}4 zY1+|wLXxCo zECOrhlY9$k5$7(%3BU`l30V{H%&XOEN3tyM#R)(>Td&toD3)>7Cm@7~f*|DL1W?PQ zQmL)r5!MVuW=+$)k2BG-tOtr=M)F}3m&o5nqwx|qL9^L>#^O*rqTWFQNyp1~yWP8R zcZ7!8F2f|Eu5mR1(r&d{M!0*s-F~GthFL~kqc4Q8!<#VJ2@<_X;x-6-!b+u5Im0!c zDvELu2A0d^tA4+KFqur=RaN}}?`P!&KAhZaHhaW*KI7bv$R6bwhEd>$!{JRjoxbEY si1B!=^7Hxp4G-jS69LC@zW)Rm08_#%&T6F}Q~&?~07*qoM6N<$f>RIUp#T5? diff --git a/toolkit/themes/osx/mozapps/profile/profileicon.png b/toolkit/themes/osx/mozapps/profile/profileicon.png deleted file mode 100644 index f67a43714eedae5f6aec3fa41535027a6a25deff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 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 KMNUMnLSTZewr+U< diff --git a/toolkit/themes/osx/mozapps/update/updates.css b/toolkit/themes/osx/mozapps/update/updates.css deleted file mode 100644 index 9bd78ef6f8..0000000000 --- a/toolkit/themes/osx/mozapps/update/updates.css +++ /dev/null @@ -1,171 +0,0 @@ -%include ../../global/shared.inc - -/* General */ -/* Specify the size for the wizardpage so the billboard has a fixed size. 3rd - party themes should typically specify the same values. */ -wizardpage { - height: 360px; - width: 700px; -} - -/* Remove margin and padding so the billboard will extend to the edge of the - window. 3rd party themes should typically specify the same values. */ -#updates, .wizard-page-box { - margin: 0; - padding: 0; -} - -.update-content { - padding: 6px 12px 12px 12px; -} - -.wizard-header-box-text { - padding: 0; -} - -.wizard-header { - margin: 12px 12px 0 12px; -} - -.wizard-buttons-btm { - padding: 15px 12px; -} - -/* Don't use top margin - it can cause a scrollbar on some pages */ -.wizard-buttons { - padding: 0; - -moz-appearance: statusbar; - -moz-window-dragging: drag; -} - -.wizard-buttons button { - -moz-appearance: toolbarbutton; - color: ButtonText; - min-height: 22px; - margin: 0 6px; - padding: 0; - text-shadow: @loweredShadow@; -} - -#finishedBackgroundMore { - margin-bottom: 6px; -} - -.inline-link { - color: -moz-nativehyperlinktext; - text-decoration: none; -} - -.inline-link:hover { - text-decoration: underline; -} - -/* Unsupported Page */ -#unsupportedLabel, #unsupportedLinkLabel { - margin-inline-start: 0; - padding-inline-start: 0; -} - -/* Update Found Basic Page */ -#updateName, #updateFinishedName { - font-weight: bold; - font-size: larger; -} - -/* Downloading Page */ -#downloadStatusLine { - -moz-box-align: center; -} - -#downloadStatus { - height: 3em !important; -} - -#downloadStatusProgress { - padding-right: 5px; -} - -#pauseButton { - list-style-image: url(chrome://mozapps/skin/update/buttons.png); - -moz-image-region: rect(48px, 16px, 64px, 0px); - -moz-appearance: none; - background-color: transparent; - border: none; - min-height: 16px; - min-width: 16px; - max-height: 16px; - max-width: 16px; - margin: 0 1px 0 1px; - padding: 0; -} - -/* !Important must be used otherwise this won't immediately take affect */ -#pauseButton > .button-box { - padding: 0 !important; -} - -#pauseButton:hover { - -moz-image-region: rect(48px, 32px, 64px, 16px); -} - -#pauseButton:not([disabled="true"]):hover:active { - -moz-image-region: rect(48px, 48px, 64px, 32px); -} - -#pauseButton[disabled="true"] { - -moz-image-region: rect(48px, 16px, 64px, 0px); -} - -#pauseButton[paused="true"] { - -moz-image-region: rect(16px, 16px, 32px, 0px); -} - -#pauseButton[paused="true"]:hover { - -moz-image-region: rect(16px, 32px, 32px, 16px); -} - -#pauseButton[paused="true"]:hover:active { - -moz-image-region: rect(16px, 48px, 32px, 32px); -} - -#verificationFailedIcon { - margin-left: 5px; - list-style-image: url("chrome://global/skin/icons/notfound.png"); -} - -/* Error Page */ -#errorReason { - margin-top: 1px; - margin-bottom: 2px; - margin-inline-start: 6px !important; - margin-inline-end: 5px; - font-weight: bold; -} - -/* Update History Window */ -update { - border-bottom: 1px dotted #C0C0C0; -} - -.update-name { - font-weight: bold; -} - -.update-label-column { - -moz-box-align: end; -} - -.update-type { - font-weight: bold; - color: #990000; -} - -#historyItems { - -moz-appearance: listbox; - height: 200px; - margin: 1px 5px 4px 5px; -} - -#historyItems > scrollbox { - margin-bottom: 1px; -} diff --git a/toolkit/themes/osx/mozapps/viewsource/viewsource.css b/toolkit/themes/osx/mozapps/viewsource/viewsource.css deleted file mode 100644 index 76c7d00b9d..0000000000 --- a/toolkit/themes/osx/mozapps/viewsource/viewsource.css +++ /dev/null @@ -1,5 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* This is for styling the menus of the viewsource window */ diff --git a/toolkit/themes/osx/reftests/482681-ref.xul b/toolkit/themes/osx/reftests/482681-ref.xul deleted file mode 100644 index 62fb4bb8d5..0000000000 --- a/toolkit/themes/osx/reftests/482681-ref.xul +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/toolkit/themes/osx/reftests/482681.xul b/toolkit/themes/osx/reftests/482681.xul deleted file mode 100644 index 6cb9aaeae4..0000000000 --- a/toolkit/themes/osx/reftests/482681.xul +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -