+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
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)
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
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;