From 5a13efae8075f59601a8291959c8283b65b4cbf1 Mon Sep 17 00:00:00 2001 From: Randell Jesup Date: Mon, 25 Aug 2014 11:01:19 -0400 Subject: [PATCH] Bug 1057006: split window and app sharing reports so the UI can handle them separately, r=jib. --- dom/media/MediaManager.cpp | 20 ++++++++++++-------- dom/media/MediaManager.h | 2 +- dom/media/nsIMediaManager.idl | 5 +++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp index ec939ca4e61..472d3b1ba4b 100644 --- a/dom/media/MediaManager.cpp +++ b/dom/media/MediaManager.cpp @@ -2095,20 +2095,22 @@ MediaManager::GetActiveMediaCaptureWindows(nsISupportsArray **aArray) NS_IMETHODIMP MediaManager::MediaCaptureWindowState(nsIDOMWindow* aWindow, bool* aVideo, bool* aAudio, bool *aScreenShare, - bool* aWindowShare) + bool* aWindowShare, bool *aAppShare) { NS_ASSERTION(NS_IsMainThread(), "Only call on main thread"); *aVideo = false; *aAudio = false; *aScreenShare = false; *aWindowShare = false; + *aAppShare = false; - nsresult rv = MediaCaptureWindowStateInternal(aWindow, aVideo, aAudio, aScreenShare, aWindowShare); + nsresult rv = MediaCaptureWindowStateInternal(aWindow, aVideo, aAudio, aScreenShare, aWindowShare, aAppShare); #ifdef DEBUG nsCOMPtr piWin = do_QueryInterface(aWindow); - LOG(("%s: window %lld capturing %s %s %s %s", __FUNCTION__, piWin ? piWin->WindowID() : -1, + LOG(("%s: window %lld capturing %s %s %s %s %s", __FUNCTION__, piWin ? piWin->WindowID() : -1, *aVideo ? "video" : "", *aAudio ? "audio" : "", - *aScreenShare ? "screenshare" : "", *aWindowShare ? "windowshare" : "")); + *aScreenShare ? "screenshare" : "", *aWindowShare ? "windowshare" : "", + *aAppShare ? "appshare" : "")); #endif return rv; } @@ -2116,7 +2118,7 @@ MediaManager::MediaCaptureWindowState(nsIDOMWindow* aWindow, bool* aVideo, nsresult MediaManager::MediaCaptureWindowStateInternal(nsIDOMWindow* aWindow, bool* aVideo, bool* aAudio, bool *aScreenShare, - bool* aWindowShare) + bool* aWindowShare, bool *aAppShare) { // We need to return the union of all streams in all innerwindows that // correspond to that outerwindow. @@ -2148,10 +2150,12 @@ MediaManager::MediaCaptureWindowStateInternal(nsIDOMWindow* aWindow, bool* aVide if (listener->CapturingScreen()) { *aScreenShare = true; } - if (listener->CapturingWindow() || listener->CapturingApplication()) { - // treat window and application as the same + if (listener->CapturingWindow()) { *aWindowShare = true; } + if (listener->CapturingApplication()) { + *aAppShare = true; + } } } } @@ -2166,7 +2170,7 @@ MediaManager::MediaCaptureWindowStateInternal(nsIDOMWindow* aWindow, bool* aVide docShell->GetChildAt(i, getter_AddRefs(item)); nsCOMPtr win = item ? item->GetWindow() : nullptr; - MediaCaptureWindowStateInternal(win, aVideo, aAudio, aScreenShare, aWindowShare); + MediaCaptureWindowStateInternal(win, aVideo, aAudio, aScreenShare, aWindowShare, aAppShare); } } } diff --git a/dom/media/MediaManager.h b/dom/media/MediaManager.h index 331c3e217fa..9e964858032 100644 --- a/dom/media/MediaManager.h +++ b/dom/media/MediaManager.h @@ -605,7 +605,7 @@ private: nsresult MediaCaptureWindowStateInternal(nsIDOMWindow* aWindow, bool* aVideo, bool* aAudio, bool *aScreenShare, - bool* aWindowShare); + bool* aWindowShare, bool *aAppShare); void StopScreensharing(uint64_t aWindowID); void StopScreensharing(nsPIDOMWindow *aWindow); diff --git a/dom/media/nsIMediaManager.idl b/dom/media/nsIMediaManager.idl index 2d7b91511a7..addde007875 100644 --- a/dom/media/nsIMediaManager.idl +++ b/dom/media/nsIMediaManager.idl @@ -12,7 +12,7 @@ interface nsIDOMWindow; #define MEDIAMANAGERSERVICE_CONTRACTID "@mozilla.org/mediaManagerService;1" %} -[scriptable, builtinclass, uuid(f431b523-4536-4ba7-a2c1-7e1bf670d32a)] +[scriptable, builtinclass, uuid(2ab0e6f7-9a5b-4b9a-901d-145531f47a6b)] interface nsIMediaManagerService : nsISupports { /* return a array of inner windows that have active captures */ @@ -20,5 +20,6 @@ interface nsIMediaManagerService : nsISupports /* Get the capture state for the given window and all descendant windows (iframes, etc) */ void mediaCaptureWindowState(in nsIDOMWindow aWindow, out boolean aVideo, out boolean aAudio, - [optional] out boolean aScreenShare, [optional] out boolean aWindowShare); + [optional] out boolean aScreenShare, [optional] out boolean aWindowShare, + [optional] out boolean aAppShare); };