author | Blake Kaplan <mrbkap@gmail.com> |
Wed, 18 May 2016 14:17:34 -0700 | |
changeset 298174 | 937ab6cd1b4894a811bbe9199fde5de75f281b79 |
parent 298173 | fbdb4502afd5c41559189e50fc020d586697991c |
child 298175 | fdbc5ad618facce8b3e8abc2c9f8f409934b2df2 |
push id | 77059 |
push user | mrbkap@mozilla.com |
push date | Thu, 19 May 2016 18:56:00 +0000 |
treeherder | mozilla-inbound@937ab6cd1b48 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | enndeakin |
bugs | 1244533 |
milestone | 49.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/ipc/ContentChild.cpp +++ b/dom/ipc/ContentChild.cpp @@ -50,16 +50,17 @@ #include "mozilla/layers/CompositorBridgeChild.h" #include "mozilla/layers/ImageBridgeChild.h" #include "mozilla/layers/SharedBufferManagerChild.h" #include "mozilla/layout/RenderFrameChild.h" #include "mozilla/net/NeckoChild.h" #include "mozilla/plugins/PluginInstanceParent.h" #include "mozilla/plugins/PluginModuleParent.h" #include "mozilla/widget/WidgetMessageUtils.h" +#include "nsBaseDragService.h" #include "mozilla/media/MediaChild.h" #include "mozilla/BasePrincipal.h" #include "mozilla/WebBrowserPersistDocumentChild.h" #if defined(MOZ_CONTENT_SANDBOX) #if defined(XP_WIN) #define TARGET_SANDBOX_EXPORTS #include "mozilla/sandboxTarget.h" @@ -3251,27 +3252,29 @@ ContentChild::RecvInvokeDragSession(nsTA session->SetDataTransfer(dataTransfer); } } return true; } bool ContentChild::RecvEndDragSession(const bool& aDoneDrag, - const bool& aUserCancelled) + const bool& aUserCancelled, + const LayoutDeviceIntPoint& aDragEndPoint) { nsCOMPtr<nsIDragService> dragService = do_GetService("@mozilla.org/widget/dragservice;1"); if (dragService) { if (aUserCancelled) { nsCOMPtr<nsIDragSession> dragSession = nsContentUtils::GetDragSession(); if (dragSession) { dragSession->UserCancelled(); } } + static_cast<nsBaseDragService*>(dragService.get())->SetDragEndPoint(aDragEndPoint); dragService->EndDragSession(aDoneDrag); } return true; } bool ContentChild::RecvPush(const nsCString& aScope, const IPC::Principal& aPrincipal,
--- a/dom/ipc/ContentChild.h +++ b/dom/ipc/ContentChild.h @@ -515,17 +515,18 @@ public: virtual bool RecvShutdown() override; virtual bool RecvInvokeDragSession(nsTArray<IPCDataTransfer>&& aTransfers, const uint32_t& aAction) override; virtual bool RecvEndDragSession(const bool& aDoneDrag, - const bool& aUserCancelled) override; + const bool& aUserCancelled, + const mozilla::LayoutDeviceIntPoint& aEndDragPoint) override; virtual bool RecvPush(const nsCString& aScope, const IPC::Principal& aPrincipal, const nsString& aMessageId) override; virtual bool RecvPushWithData(const nsCString& aScope,
--- a/dom/ipc/PContent.ipdl +++ b/dom/ipc/PContent.ipdl @@ -87,16 +87,17 @@ using struct IPC::Permission from "mozil using class IPC::Principal from "mozilla/dom/PermissionMessageUtils.h"; using struct mozilla::null_t from "ipc/IPCMessageUtils.h"; using struct mozilla::void_t from "ipc/IPCMessageUtils.h"; using mozilla::dom::NativeThreadId from "mozilla/dom/TabMessageUtils.h"; using mozilla::hal::ProcessPriority from "mozilla/HalTypes.h"; using mozilla::gfx::IntSize from "mozilla/gfx/2D.h"; using mozilla::dom::TabId from "mozilla/dom/ipc/IdType.h"; using mozilla::dom::ContentParentId from "mozilla/dom/ipc/IdType.h"; +using mozilla::LayoutDeviceIntPoint from "Units.h"; using struct LookAndFeelInt from "mozilla/widget/WidgetMessageUtils.h"; using class mozilla::dom::ipc::StructuredCloneData from "ipc/IPCMessageUtils.h"; using mozilla::DataStorageType from "ipc/DataStorageIPCUtils.h"; using mozilla::DocShellOriginAttributes from "mozilla/ipc/BackgroundUtils.h"; using struct mozilla::layers::TextureFactoryIdentifier from "mozilla/layers/CompositorTypes.h"; union ChromeRegistryItem { @@ -606,17 +607,18 @@ child: async StartProfiler(ProfilerInitParams params); async StopProfiler(); async PauseProfiler(bool aPause); async GatherProfile(); async InvokeDragSession(IPCDataTransfer[] transfers, uint32_t action); - async EndDragSession(bool aDoneDrag, bool aUserCancelled); + async EndDragSession(bool aDoneDrag, bool aUserCancelled, + LayoutDeviceIntPoint aDragEndPoint); async DomainSetChanged(uint32_t aSetType, uint32_t aChangeType, OptionalURIParams aDomain); /** * Notify the child to shutdown. The child will in turn call FinishShutdown * and let the parent close the channel. */ async Shutdown();
--- a/dom/ipc/TabParent.cpp +++ b/dom/ipc/TabParent.cpp @@ -3219,17 +3219,18 @@ TabParent::RecvInvokeDragSession(nsTArra const uint32_t& aWidth, const uint32_t& aHeight, const uint32_t& aStride, const uint8_t& aFormat, const int32_t& aDragAreaX, const int32_t& aDragAreaY) { mInitialDataTransferItems.Clear(); nsIPresShell* shell = mFrameElement->OwnerDoc()->GetShell(); if (!shell) { if (Manager()->IsContentParent()) { - Unused << Manager()->AsContentParent()->SendEndDragSession(true, true); + Unused << Manager()->AsContentParent()->SendEndDragSession(true, true, + LayoutDeviceIntPoint()); } return true; } EventStateManager* esm = shell->GetPresContext()->EventStateManager(); for (uint32_t i = 0; i < aTransfers.Length(); ++i) { mInitialDataTransferItems.AppendElement(mozilla::Move(aTransfers[i].items())); }
--- a/widget/nsBaseDragService.cpp +++ b/widget/nsBaseDragService.cpp @@ -391,17 +391,18 @@ nsBaseDragService::EndDragSession(bool a nsXULPopupManager* pm = nsXULPopupManager::GetInstance(); if (pm) { pm->HidePopup(mDragPopup, false, true, false, false); } } for (uint32_t i = 0; i < mChildProcesses.Length(); ++i) { mozilla::Unused << mChildProcesses[i]->SendEndDragSession(aDoneDrag, - mUserCancelled); + mUserCancelled, + mEndDragPoint); } mChildProcesses.Clear(); mDoingDrag = false; mCanDrop = false; // release the source we've been holding on to. mSourceDocument = nullptr;