Files
Emilio Cobos Álvarez 2861287f6d Bug 2054311 - Sort headers in widget/. r=stransky,win-reviewers,geckoview-reviewers,gstoll,owlish
Autogenerated with:

    cp dom/.clang-format widget/ && mach format widget/**.{cpp,h,mm}

Manual changes:

 * Had to add a manual override in nsWaylandDisplay.h /
   DMABufFormats.cpp to include mozwayland before protocols.
 * Missing includes in nsWindowWayland/X11.h / nsDragService.
 * nsFilePicker missed an nsWindow forward declaration.
 * Various overrides in widget/windows because windows headers are order
   dependent.

Differential Revision: https://phabricator.services.mozilla.com/D311688
2026-07-14 16:17:37 +00:00

80 lines
2.2 KiB
C++

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.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 "nsSharePicker.h"
#include "WindowsUIUtils.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/dom/Promise.h"
#include "nsPIDOMWindow.h"
#include "nsString.h"
#include "nsThreadUtils.h"
using mozilla::dom::Promise;
///////////////////////////////////////////////////////////////////////////////
// nsISharePicker
NS_IMPL_ISUPPORTS(nsSharePicker, nsISharePicker)
namespace {
inline NS_ConvertUTF8toUTF16 NS_ConvertUTF8toUTF16_MaybeVoid(
const nsACString& aStr) {
auto str = NS_ConvertUTF8toUTF16(aStr);
str.SetIsVoid(aStr.IsVoid());
return str;
}
inline nsIGlobalObject* GetGlobalObject() {
return xpc::NativeGlobal(xpc::PrivilegedJunkScope());
}
} // namespace
NS_IMETHODIMP
nsSharePicker::Init(mozIDOMWindowProxy* aOpenerWindow) {
if (mInited) {
return NS_ERROR_FAILURE;
}
mOpenerWindow = aOpenerWindow;
mInited = true;
return NS_OK;
}
NS_IMETHODIMP
nsSharePicker::GetOpenerWindow(mozIDOMWindowProxy** aOpenerWindow) {
*aOpenerWindow = mOpenerWindow;
return NS_OK;
}
NS_IMETHODIMP
nsSharePicker::Share(const nsACString& aTitle, const nsACString& aText,
nsIURI* aUrl, Promise** aPromise) {
mozilla::ErrorResult result;
RefPtr<Promise> promise = Promise::Create(GetGlobalObject(), result);
if (NS_WARN_IF(result.Failed())) {
return result.StealNSResult();
}
nsAutoCString urlString;
if (aUrl) {
nsresult rv = aUrl->GetSpec(urlString);
MOZ_ASSERT(NS_SUCCEEDED(rv));
(void)rv;
} else {
urlString.SetIsVoid(true);
}
auto mozPromise =
WindowsUIUtils::Share(NS_ConvertUTF8toUTF16_MaybeVoid(aTitle),
NS_ConvertUTF8toUTF16_MaybeVoid(aText),
NS_ConvertUTF8toUTF16_MaybeVoid(urlString));
mozPromise->Then(
mozilla::GetCurrentSerialEventTarget(), __func__,
[promise]() { promise->MaybeResolveWithUndefined(); },
[promise]() { promise->MaybeReject(NS_ERROR_DOM_ABORT_ERR); });
promise.forget(aPromise);
return NS_OK;
}