[MediaStream] Fix UserMediaPermissionRequestProxy::invalidate
authoreric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Oct 2015 19:01:34 +0000 (19:01 +0000)
committereric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Oct 2015 19:01:34 +0000 (19:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=150503
<rdar://problem/23235386>

Reviewed by Dean Jackson.

* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): m_manager is a pointer.
(WebKit::UserMediaPermissionRequestProxy::allow): Return early if m_manager is null, clear it after
  calling the manager.
(WebKit::UserMediaPermissionRequestProxy::deny): Ditto.
(WebKit::UserMediaPermissionRequestProxy::invalidate): Clear m_manager.
* UIProcess/UserMediaPermissionRequestProxy.h: Change m_manager from a reference to a
  pointer so it can be cleared.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@191504 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp
Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h

index c72dfc2..a4c2061 100644 (file)
@@ -1,3 +1,20 @@
+2015-10-23  Eric Carlson  <eric.carlson@apple.com>
+
+        [MediaStream] Fix UserMediaPermissionRequestProxy::invalidate
+        https://bugs.webkit.org/show_bug.cgi?id=150503
+        <rdar://problem/23235386>
+
+        Reviewed by Dean Jackson.
+
+        * UIProcess/UserMediaPermissionRequestProxy.cpp:
+        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): m_manager is a pointer.
+        (WebKit::UserMediaPermissionRequestProxy::allow): Return early if m_manager is null, clear it after
+          calling the manager.
+        (WebKit::UserMediaPermissionRequestProxy::deny): Ditto.
+        (WebKit::UserMediaPermissionRequestProxy::invalidate): Clear m_manager.
+        * UIProcess/UserMediaPermissionRequestProxy.h: Change m_manager from a reference to a
+          pointer so it can be cleared.
+
 2015-10-23  Claudio Saavedra  <csaavedra@igalia.com>
 
         [GTK] Minor web editor fixes
index 65c3c07..1da57f9 100644 (file)
@@ -27,7 +27,7 @@
 namespace WebKit {
 
 UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs)
-    : m_manager(manager)
+    : m_manager(&manager)
     , m_userMediaID(userMediaID)
     , m_videoDeviceUIDs(videoDeviceUIDs)
     , m_audioDeviceUIDs(audioDeviceUIDs)
@@ -36,17 +36,27 @@ UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermis
 
 void UserMediaPermissionRequestProxy::allow(const String& audioDeviceUID, const String& videoDeviceUID)
 {
-    m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, true, audioDeviceUID, videoDeviceUID);
+    ASSERT(m_manager);
+    if (!m_manager)
+        return;
+
+    m_manager->didReceiveUserMediaPermissionDecision(m_userMediaID, true, audioDeviceUID, videoDeviceUID);
+    m_manager = nullptr;
 }
 
 void UserMediaPermissionRequestProxy::deny()
 {
-    m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, false, emptyString(), emptyString());
+    ASSERT(m_manager);
+    if (!m_manager)
+        return;
+
+    m_manager->didReceiveUserMediaPermissionDecision(m_userMediaID, false, emptyString(), emptyString());
+    m_manager = nullptr;
 }
 
 void UserMediaPermissionRequestProxy::invalidate()
 {
-    m_manager.invalidateRequests();
+    m_manager = nullptr;
 }
 
 } // namespace WebKit
index 0dcd131..08d3022 100644 (file)
@@ -53,7 +53,7 @@ public:
 private:
     UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, const Vector<String>& videoDeviceUIDs, const Vector<String>& audioDeviceUIDs);
 
-    UserMediaPermissionRequestManagerProxy& m_manager;
+    UserMediaPermissionRequestManagerProxy* m_manager;
     uint64_t m_userMediaID;
     Vector<String> m_videoDeviceUIDs;
     Vector<String> m_audioDeviceUIDs;