diff options
28 files changed, 150 insertions, 167 deletions
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc index 4efdd6c..c6c020c 100644 --- a/android_webview/browser/aw_browser_context.cc +++ b/android_webview/browser/aw_browser_context.cc @@ -237,16 +237,16 @@ void AwBrowserContext::CancelMidiSysExPermissionRequest( void AwBrowserContext::RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) { NOTIMPLEMENTED(); callback.Run(false); } void AwBrowserContext::CancelProtectedMediaIdentifierPermissionRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { NOTIMPLEMENTED(); } diff --git a/android_webview/browser/aw_browser_context.h b/android_webview/browser/aw_browser_context.h index de1c545..8b0c068 100644 --- a/android_webview/browser/aw_browser_context.h +++ b/android_webview/browser/aw_browser_context.h @@ -114,12 +114,12 @@ class AwBrowserContext : public content::BrowserContext, virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; - virtual void CancelProtectedMediaIdentifierPermissionRequests(int group_id) - OVERRIDE; + virtual void CancelProtectedMediaIdentifierPermissionRequests( + int render_process_id, + int render_view_id, + const GURL& origin) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::DownloadManagerDelegate* GetDownloadManagerDelegate() OVERRIDE; diff --git a/chrome/browser/content_settings/permission_queue_controller.cc b/chrome/browser/content_settings/permission_queue_controller.cc index 2a7e075..d084210 100644 --- a/chrome/browser/content_settings/permission_queue_controller.cc +++ b/chrome/browser/content_settings/permission_queue_controller.cc @@ -182,36 +182,6 @@ void PermissionQueueController::CancelInfoBarRequest( } } -void PermissionQueueController::CancelInfoBarRequests(int group_id) { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); - - // If we remove an infobar in the following loop, the next pending infobar - // will be shown. Therefore, we erase all the pending infobars first and - // remove an infobar later. - PendingInfobarRequests infobar_requests_to_cancel; - for (PendingInfobarRequests::iterator i = pending_infobar_requests_.begin(); - i != pending_infobar_requests_.end();) { - if (i->id().group_id() == group_id) { - if (i->has_infobar()) { - // |i| will be erased from |pending_infobar_requests_| - // in |PermissionQueueController::Observe| when the infobar is removed. - infobar_requests_to_cancel.push_back(*i); - ++i; - } else { - i = pending_infobar_requests_.erase(i); - } - } else { - ++i; - } - } - - for (PendingInfobarRequests::iterator i = infobar_requests_to_cancel.begin(); - i != infobar_requests_to_cancel.end(); - ++i) { - GetInfoBarService(i->id())->RemoveInfoBar(i->infobar()); - } -} - void PermissionQueueController::OnPermissionSet( const PermissionRequestID& id, const GURL& requesting_frame, diff --git a/chrome/browser/content_settings/permission_queue_controller.h b/chrome/browser/content_settings/permission_queue_controller.h index bf57bc0..24b1780 100644 --- a/chrome/browser/content_settings/permission_queue_controller.h +++ b/chrome/browser/content_settings/permission_queue_controller.h @@ -41,9 +41,6 @@ class PermissionQueueController : public content::NotificationObserver { // Cancels a specific infobar request. void CancelInfoBarRequest(const PermissionRequestID& id); - // Cancels all infobar requests that match |group_id|. - void CancelInfoBarRequests(int group_id); - // Called by the InfoBarDelegate to notify permission has been set. // It'll notify and dismiss any other pending InfoBar request for the same // |requesting_frame| and embedder. diff --git a/chrome/browser/content_settings/permission_queue_controller_unittest.cc b/chrome/browser/content_settings/permission_queue_controller_unittest.cc index 1b70408..57292a1 100644 --- a/chrome/browser/content_settings/permission_queue_controller_unittest.cc +++ b/chrome/browser/content_settings/permission_queue_controller_unittest.cc @@ -28,7 +28,7 @@ class PermissionQueueControllerTests : public ChromeRenderViewHostTestHarness { web_contents()->GetRenderProcessHost()->GetID(), web_contents()->GetRenderViewHost()->GetRoutingID(), bridge_id, - 0); + GURL()); } private: diff --git a/chrome/browser/content_settings/permission_request_id.cc b/chrome/browser/content_settings/permission_request_id.cc index 23c98d7..cc66761 100644 --- a/chrome/browser/content_settings/permission_request_id.cc +++ b/chrome/browser/content_settings/permission_request_id.cc @@ -10,18 +10,19 @@ PermissionRequestID::PermissionRequestID(int render_process_id, int render_view_id, int bridge_id, - int group_id) + const GURL& origin) : render_process_id_(render_process_id), render_view_id_(render_view_id), bridge_id_(bridge_id), - group_id_(group_id) { + origin_(origin) { } PermissionRequestID::~PermissionRequestID() { } bool PermissionRequestID::Equals(const PermissionRequestID& other) const { - return IsForSameTabAs(other) && (bridge_id_ == other.bridge_id_); + return IsForSameTabAs(other) && (bridge_id_ == other.bridge_id_) && + (origin_ == other.origin()); } bool PermissionRequestID::IsForSameTabAs( @@ -31,9 +32,9 @@ bool PermissionRequestID::IsForSameTabAs( } std::string PermissionRequestID::ToString() const { - return base::StringPrintf("%d,%d,%d,%d", + return base::StringPrintf("%d,%d,%d,%s", render_process_id_, render_view_id_, bridge_id_, - group_id_); + origin_.spec().c_str()); } diff --git a/chrome/browser/content_settings/permission_request_id.h b/chrome/browser/content_settings/permission_request_id.h index 13d92e3..a10ce07 100644 --- a/chrome/browser/content_settings/permission_request_id.h +++ b/chrome/browser/content_settings/permission_request_id.h @@ -7,19 +7,21 @@ #include <string> +#include "url/gurl.h" + // Uniquely identifies a particular permission request. class PermissionRequestID { public: PermissionRequestID(int render_process_id, int render_view_id, int bridge_id, - int group_id); + const GURL& origin); ~PermissionRequestID(); int render_process_id() const { return render_process_id_; } int render_view_id() const { return render_view_id_; } int bridge_id() const { return bridge_id_; } - int group_id() const { return group_id_; } + GURL origin() const { return origin_; } bool Equals(const PermissionRequestID& other) const; bool IsForSameTabAs(const PermissionRequestID& other) const; @@ -30,13 +32,9 @@ class PermissionRequestID { int render_view_id_; // Id unique to this instance. int bridge_id_; - // Id possibly shared by multiple instance. This is used in - // PermissionQueueController::CancelInfoBarRequests(int group_id) to cancel - // multiple permission requests by a group id. - // For example, ProtectedMediaIdentifierPermissionContext class uses this. - // If you don't use that function, this doesn't matter and setting this to 0 - // is recommended. - int group_id_; + // Needed for permission checks that are based on origin. + // If you don't use origin to check permission request, pass an empty GURL. + GURL origin_; // Purposefully do not disable copying, as this is stored in STL containers. }; diff --git a/chrome/browser/geolocation/chrome_geolocation_permission_context.cc b/chrome/browser/geolocation/chrome_geolocation_permission_context.cc index 6b56989..f65d364 100644 --- a/chrome/browser/geolocation/chrome_geolocation_permission_context.cc +++ b/chrome/browser/geolocation/chrome_geolocation_permission_context.cc @@ -156,7 +156,8 @@ void ChromeGeolocationPermissionContext::RequestGeolocationPermission( int render_process_id = web_contents->GetRenderProcessHost()->GetID(); int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID(); - const PermissionRequestID id(render_process_id, render_view_id, bridge_id, 0); + const PermissionRequestID id( + render_process_id, render_view_id, bridge_id, GURL()); ExtensionRegistry* extension_registry = ExtensionRegistry::Get(profile_); if (extension_registry) { const extensions::Extension* extension = @@ -213,7 +214,7 @@ void ChromeGeolocationPermissionContext::CancelGeolocationPermissionRequest( int render_process_id = web_contents->GetRenderProcessHost()->GetID(); int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID(); CancelPendingInfobarRequest(PermissionRequestID( - render_process_id, render_view_id, bridge_id, 0)); + render_process_id, render_view_id, bridge_id, GURL())); } void ChromeGeolocationPermissionContext::DecidePermission( diff --git a/chrome/browser/geolocation/chrome_geolocation_permission_context_android.cc b/chrome/browser/geolocation/chrome_geolocation_permission_context_android.cc index b8f3d01..39654e6 100644 --- a/chrome/browser/geolocation/chrome_geolocation_permission_context_android.cc +++ b/chrome/browser/geolocation/chrome_geolocation_permission_context_android.cc @@ -13,7 +13,7 @@ ChromeGeolocationPermissionContextAndroid:: PermissionRequestInfo::PermissionRequestInfo() - : id(0, 0, 0, 0), + : id(0, 0, 0, GURL()), user_gesture(false) {} ChromeGeolocationPermissionContextAndroid:: diff --git a/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc b/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc index af6f706..4ca5415 100644 --- a/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc +++ b/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc @@ -145,7 +145,7 @@ PermissionRequestID GeolocationPermissionContextTests::RequestID( web_contents()->GetRenderProcessHost()->GetID(), web_contents()->GetRenderViewHost()->GetRoutingID(), bridge_id, - 0); + GURL()); } PermissionRequestID GeolocationPermissionContextTests::RequestIDForTab( @@ -155,7 +155,7 @@ PermissionRequestID GeolocationPermissionContextTests::RequestIDForTab( extra_tabs_[tab]->GetRenderProcessHost()->GetID(), extra_tabs_[tab]->GetRenderViewHost()->GetRoutingID(), bridge_id, - 0); + GURL()); } void GeolocationPermissionContextTests::RequestGeolocationPermission( diff --git a/chrome/browser/media/chrome_midi_permission_context.cc b/chrome/browser/media/chrome_midi_permission_context.cc index 927c82a9..25f25b9 100644 --- a/chrome/browser/media/chrome_midi_permission_context.cc +++ b/chrome/browser/media/chrome_midi_permission_context.cc @@ -151,7 +151,8 @@ void ChromeMidiPermissionContext::RequestMidiSysExPermission( if (!web_contents) return; - const PermissionRequestID id(render_process_id, render_view_id, bridge_id, 0); + const PermissionRequestID id( + render_process_id, render_view_id, bridge_id, GURL()); GURL embedder = web_contents->GetURL(); // |requesting_frame| can be empty and invalid when the frame is a local @@ -176,7 +177,8 @@ void ChromeMidiPermissionContext::CancelMidiSysExPermissionRequest( int bridge_id, const GURL& requesting_frame) { CancelPendingInfobarRequest( - PermissionRequestID(render_process_id, render_view_id, bridge_id, 0)); + PermissionRequestID( + render_process_id, render_view_id, bridge_id, GURL())); } void ChromeMidiPermissionContext::DecidePermission( diff --git a/chrome/browser/media/protected_media_identifier_permission_context.cc b/chrome/browser/media/protected_media_identifier_permission_context.cc index fc37e05..edecf5d 100644 --- a/chrome/browser/media/protected_media_identifier_permission_context.cc +++ b/chrome/browser/media/protected_media_identifier_permission_context.cc @@ -44,9 +44,7 @@ void ProtectedMediaIdentifierPermissionContext:: RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const base::Callback<void(bool)>& callback) { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); if (shutting_down_) @@ -55,7 +53,7 @@ void ProtectedMediaIdentifierPermissionContext:: content::WebContents* web_contents = tab_util::GetWebContentsByID(render_process_id, render_view_id); const PermissionRequestID id( - render_process_id, render_view_id, bridge_id, group_id); + render_process_id, render_view_id, 0, origin); if (extensions::GetViewType(web_contents) != extensions::VIEW_TYPE_TAB_CONTENTS) { @@ -64,32 +62,36 @@ void ProtectedMediaIdentifierPermissionContext:: << "Attempt to use protected media identifier in tabless renderer: " << id.ToString() << " (can't prompt user without a visible tab)"; - NotifyPermissionSet(id, requesting_frame, callback, false); + NotifyPermissionSet(id, origin, callback, false); return; } GURL embedder = web_contents->GetLastCommittedURL(); - if (!requesting_frame.is_valid() || !embedder.is_valid()) { + if (!origin.is_valid() || !embedder.is_valid()) { LOG(WARNING) << "Attempt to use protected media identifier from an invalid URL: " - << requesting_frame << "," << embedder + << origin << "," << embedder << " (proteced media identifier is not supported in popups)"; - NotifyPermissionSet(id, requesting_frame, callback, false); + NotifyPermissionSet(id, origin, callback, false); return; } content::RenderViewHost* rvh = web_contents->GetRenderViewHost(); - DecidePermission(id, requesting_frame, embedder, rvh, callback); + DecidePermission(id, origin, embedder, rvh, callback); } void ProtectedMediaIdentifierPermissionContext:: - CancelProtectedMediaIdentifierPermissionRequests(int group_id) { - CancelPendingInfobarRequests(group_id); + CancelProtectedMediaIdentifierPermissionRequests( + int render_process_id, + int render_view_id, + const GURL& origin) { + CancelPendingInfobarRequests( + render_process_id, render_view_id, origin); } void ProtectedMediaIdentifierPermissionContext::DecidePermission( const PermissionRequestID& id, - const GURL& requesting_frame, + const GURL& origin, const GURL& embedder, content::RenderViewHost* rvh, const base::Callback<void(bool)>& callback) { @@ -99,35 +101,35 @@ void ProtectedMediaIdentifierPermissionContext::DecidePermission( // Check if the protected media identifier master switch is disabled. if (!profile()->GetPrefs()->GetBoolean( prefs::kProtectedMediaIdentifierEnabled)) { - PermissionDecided(id, requesting_frame, embedder, callback, false); + PermissionDecided(id, origin, embedder, callback, false); return; } #endif ContentSetting content_setting = profile_->GetHostContentSettingsMap()->GetContentSetting( - requesting_frame, + origin, embedder, CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, std::string()); switch (content_setting) { case CONTENT_SETTING_BLOCK: - PermissionDecided(id, requesting_frame, embedder, callback, false); + PermissionDecided(id, origin, embedder, callback, false); break; case CONTENT_SETTING_ALLOW: - PermissionDecided(id, requesting_frame, embedder, callback, true); + PermissionDecided(id, origin, embedder, callback, true); break; case CONTENT_SETTING_ASK: QueueController()->CreateInfoBarRequest( id, - requesting_frame, + origin, embedder, std::string(), base::Bind(&ProtectedMediaIdentifierPermissionContext:: NotifyPermissionSet, base::Unretained(this), id, - requesting_frame, + origin, callback)); break; default: @@ -143,16 +145,16 @@ void ProtectedMediaIdentifierPermissionContext::ShutdownOnUIThread() { void ProtectedMediaIdentifierPermissionContext::PermissionDecided( const PermissionRequestID& id, - const GURL& requesting_frame, + const GURL& origin, const GURL& embedder, const base::Callback<void(bool)>& callback, bool allowed) { - NotifyPermissionSet(id, requesting_frame, callback, allowed); + NotifyPermissionSet(id, origin, callback, allowed); } void ProtectedMediaIdentifierPermissionContext::NotifyPermissionSet( const PermissionRequestID& id, - const GURL& requesting_frame, + const GURL& origin, const base::Callback<void(bool)>& callback, bool allowed) { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); @@ -163,7 +165,7 @@ void ProtectedMediaIdentifierPermissionContext::NotifyPermissionSet( id.render_view_id()); if (content_settings) { content_settings->OnProtectedMediaIdentifierPermissionSet( - requesting_frame.GetOrigin(), allowed); + origin.GetOrigin(), allowed); } callback.Run(allowed); @@ -187,7 +189,9 @@ PermissionQueueController* void ProtectedMediaIdentifierPermissionContext::CancelPendingInfobarRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { content::BrowserThread::PostTask( content::BrowserThread::UI, @@ -195,11 +199,15 @@ ProtectedMediaIdentifierPermissionContext::CancelPendingInfobarRequests( base::Bind(&ProtectedMediaIdentifierPermissionContext:: CancelPendingInfobarRequests, this, - group_id)); + render_process_id, + render_view_id, + origin)); return; } DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); if (shutting_down_) return; - QueueController()->CancelInfoBarRequests(group_id); + QueueController()->CancelInfoBarRequest( + PermissionRequestID(render_process_id, render_view_id, 0, + origin)); } diff --git a/chrome/browser/media/protected_media_identifier_permission_context.h b/chrome/browser/media/protected_media_identifier_permission_context.h index eaa5331..afedc08 100644 --- a/chrome/browser/media/protected_media_identifier_permission_context.h +++ b/chrome/browser/media/protected_media_identifier_permission_context.h @@ -29,12 +29,12 @@ class ProtectedMediaIdentifierPermissionContext void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const base::Callback<void(bool)>& callback); void CancelProtectedMediaIdentifierPermissionRequests( - int group_id); + int render_process_id, + int render_view_id, + const GURL& origin); // Called on the UI thread when the profile is about to be destroyed. void ShutdownOnUIThread(); @@ -54,7 +54,7 @@ class ProtectedMediaIdentifierPermissionContext // protected media identifier via // SetProtectedMediaIdentifierPermissionResponse(). Called on the UI thread. void NotifyPermissionSet(const PermissionRequestID& id, - const GURL& requesting_frame, + const GURL& origin, const base::Callback<void(bool)>& callback, bool allowed); @@ -63,7 +63,7 @@ class ProtectedMediaIdentifierPermissionContext // or NotifyPermissionSet if permission decided by presenting an // infobar to the user. Called on the UI thread. void DecidePermission(const PermissionRequestID& id, - const GURL& requesting_frame, + const GURL& origin, const GURL& embedder, content::RenderViewHost* rvh, const base::Callback<void(bool)>& callback); @@ -73,7 +73,7 @@ class ProtectedMediaIdentifierPermissionContext // Should ultimately ensure that NotifyPermissionSet is called. // Called on the UI thread. void PermissionDecided(const PermissionRequestID& id, - const GURL& requesting_frame, + const GURL& origin, const GURL& embedder, const base::Callback<void(bool)>& callback, bool allowed); @@ -82,8 +82,11 @@ class ProtectedMediaIdentifierPermissionContext // provide additional UI flow. Called on the UI thread. PermissionQueueController* CreateQueueController(); - // Removes pending InfoBar requests that match |group_id|. - void CancelPendingInfobarRequests(int group_id); + // Removes pending InfoBar requests that match |bridge_id| from the tab + // given by |render_process_id| and |render_view_id|. + void CancelPendingInfobarRequests(int render_process_id, + int render_view_id, + const GURL& origin); // These must only be accessed from the UI thread. Profile* const profile_; diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc index dc8c3ee..d35a424 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc @@ -348,18 +348,14 @@ void OffTheRecordProfileImpl::CancelMidiSysExPermissionRequest( void OffTheRecordProfileImpl::RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) { #if defined(OS_ANDROID) ProtectedMediaIdentifierPermissionContext* context = ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(this); context->RequestProtectedMediaIdentifierPermission(render_process_id, render_view_id, - bridge_id, - group_id, - requesting_frame, + origin, callback); #else NOTIMPLEMENTED(); @@ -368,11 +364,14 @@ void OffTheRecordProfileImpl::RequestProtectedMediaIdentifierPermission( } void OffTheRecordProfileImpl::CancelProtectedMediaIdentifierPermissionRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { #if defined(OS_ANDROID) ProtectedMediaIdentifierPermissionContext* context = ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(this); - context->CancelProtectedMediaIdentifierPermissionRequests(group_id); + context->CancelProtectedMediaIdentifierPermissionRequests( + render_process_id, render_view_id, origin); #else NOTIMPLEMENTED(); #endif // defined(OS_ANDROID) diff --git a/chrome/browser/profiles/off_the_record_profile_impl.h b/chrome/browser/profiles/off_the_record_profile_impl.h index d61e39d..a8a88d1 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.h +++ b/chrome/browser/profiles/off_the_record_profile_impl.h @@ -119,12 +119,12 @@ class OffTheRecordProfileImpl : public Profile { virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; virtual void CancelProtectedMediaIdentifierPermissionRequests( - int group_id) OVERRIDE; + int render_process_id, + int render_view_id, + const GURL& origin) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index cef0f5c..c6185fd 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -996,18 +996,14 @@ void ProfileImpl::CancelMidiSysExPermissionRequest( void ProfileImpl::RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) { #if defined(OS_ANDROID) ProtectedMediaIdentifierPermissionContext* context = ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(this); context->RequestProtectedMediaIdentifierPermission(render_process_id, render_view_id, - bridge_id, - group_id, - requesting_frame, + origin, callback); #else NOTIMPLEMENTED(); @@ -1016,11 +1012,14 @@ void ProfileImpl::RequestProtectedMediaIdentifierPermission( } void ProfileImpl::CancelProtectedMediaIdentifierPermissionRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { #if defined(OS_ANDROID) ProtectedMediaIdentifierPermissionContext* context = ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(this); - context->CancelProtectedMediaIdentifierPermissionRequests(group_id); + context->CancelProtectedMediaIdentifierPermissionRequests( + render_process_id, render_view_id, origin); #else NOTIMPLEMENTED(); #endif // defined(OS_ANDROID) diff --git a/chrome/browser/profiles/profile_impl.h b/chrome/browser/profiles/profile_impl.h index 5a79369..256f8d1 100644 --- a/chrome/browser/profiles/profile_impl.h +++ b/chrome/browser/profiles/profile_impl.h @@ -94,12 +94,12 @@ class ProfileImpl : public Profile { virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; virtual void CancelProtectedMediaIdentifierPermissionRequests( - int group_id) OVERRIDE; + int render_process_id, + int render_view_id, + const GURL& origin) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/chrome/browser/ui/app_list/test/fake_profile.cc b/chrome/browser/ui/app_list/test/fake_profile.cc index bfa83d3..ca471c1 100644 --- a/chrome/browser/ui/app_list/test/fake_profile.cc +++ b/chrome/browser/ui/app_list/test/fake_profile.cc @@ -75,14 +75,14 @@ void FakeProfile::CancelMidiSysExPermissionRequest( void FakeProfile::RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) { } void FakeProfile::CancelProtectedMediaIdentifierPermissionRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { } content::ResourceContext* FakeProfile::GetResourceContext() { diff --git a/chrome/browser/ui/app_list/test/fake_profile.h b/chrome/browser/ui/app_list/test/fake_profile.h index 213646d..9486eab 100644 --- a/chrome/browser/ui/app_list/test/fake_profile.h +++ b/chrome/browser/ui/app_list/test/fake_profile.h @@ -60,12 +60,12 @@ class FakeProfile : public Profile { virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; virtual void CancelProtectedMediaIdentifierPermissionRequests( - int group_id) OVERRIDE; + int render_process_id, + int render_view_id, + const GURL& origin) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc index dff94cb..166fcc1 100644 --- a/chrome/test/base/testing_profile.cc +++ b/chrome/test/base/testing_profile.cc @@ -769,16 +769,16 @@ void TestingProfile::CancelMidiSysExPermissionRequest( void TestingProfile::RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) { // Always reject requests for testing. callback.Run(false); } void TestingProfile::CancelProtectedMediaIdentifierPermissionRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { } net::URLRequestContextGetter* TestingProfile::GetRequestContextForExtensions() { diff --git a/chrome/test/base/testing_profile.h b/chrome/test/base/testing_profile.h index 4fbd0fe..936a9ce 100644 --- a/chrome/test/base/testing_profile.h +++ b/chrome/test/base/testing_profile.h @@ -290,12 +290,12 @@ class TestingProfile : public Profile { virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; virtual void CancelProtectedMediaIdentifierPermissionRequests( - int group_id) OVERRIDE; + int render_process_id, + int render_view_id, + const GURL& origin) OVERRIDE; virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( const base::FilePath& partition_path, bool in_memory, diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc index f1d4e7d..091a7f8 100644 --- a/content/browser/download/download_manager_impl_unittest.cc +++ b/content/browser/download/download_manager_impl_unittest.cc @@ -418,16 +418,16 @@ class MockBrowserContext : public BrowserContext { int render_view_id, int bridge_id, const GURL& requesting_frame)); - MOCK_METHOD6(RequestProtectedMediaIdentifierPermission, + MOCK_METHOD4(RequestProtectedMediaIdentifierPermission, void(int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback)); - MOCK_METHOD1(CancelProtectedMediaIdentifierPermissionRequests, - void(int group_id)); + MOCK_METHOD3(CancelProtectedMediaIdentifierPermissionRequests, + void(int render_process_id, + int render_view_id, + const GURL& origin)); MOCK_METHOD0(GetResourceContext, ResourceContext*()); MOCK_METHOD0(GetDownloadManagerDelegate, DownloadManagerDelegate*()); MOCK_METHOD0(GetGeolocationPermissionContext, diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc index ceace36..ec8cc40 100644 --- a/content/browser/media/android/browser_media_player_manager.cc +++ b/content/browser/media/android/browser_media_player_manager.cc @@ -633,8 +633,6 @@ void BrowserMediaPlayerManager::OnCreateSession( context->RequestProtectedMediaIdentifierPermission( web_contents()->GetRenderProcessHost()->GetID(), web_contents()->GetRenderViewHost()->GetRoutingID(), - static_cast<int>(session_id), - cdm_id, iter->second, base::Bind(&BrowserMediaPlayerManager::CreateSessionIfPermitted, weak_ptr_factory_.GetWeakPtr(), @@ -698,7 +696,14 @@ void BrowserMediaPlayerManager::OnDestroyCdm(int cdm_id) { void BrowserMediaPlayerManager::CancelAllPendingSessionCreations(int cdm_id) { BrowserContext* context = web_contents()->GetRenderProcessHost()->GetBrowserContext(); - context->CancelProtectedMediaIdentifierPermissionRequests(cdm_id); + std::map<int, GURL>::const_iterator iter = + cdm_security_origin_map_.find(cdm_id); + if (iter == cdm_security_origin_map_.end()) + return; + context->CancelProtectedMediaIdentifierPermissionRequests( + web_contents()->GetRenderProcessHost()->GetID(), + web_contents()->GetRenderViewHost()->GetRoutingID(), + iter->second); } void BrowserMediaPlayerManager::AddPlayer(MediaPlayerAndroid* player) { diff --git a/content/public/browser/browser_context.h b/content/public/browser/browser_context.h index f20b40f..27a5569 100644 --- a/content/public/browser/browser_context.h +++ b/content/public/browser/browser_context.h @@ -157,14 +157,14 @@ class CONTENT_EXPORT BrowserContext : public base::SupportsUserData { virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) = 0; // Cancels pending protected media identifier permission requests. virtual void CancelProtectedMediaIdentifierPermissionRequests( - int group_id) = 0; + int render_process_id, + int render_view_id, + const GURL& origin) = 0; // Returns the resource context. virtual ResourceContext* GetResourceContext() = 0; diff --git a/content/public/test/test_browser_context.cc b/content/public/test/test_browser_context.cc index 9599fc7..7d184c8 100644 --- a/content/public/test/test_browser_context.cc +++ b/content/public/test/test_browser_context.cc @@ -119,16 +119,16 @@ void TestBrowserContext::CancelMidiSysExPermissionRequest( void TestBrowserContext::RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) { // Always reject requests for testing. callback.Run(false); } void TestBrowserContext::CancelProtectedMediaIdentifierPermissionRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { } ResourceContext* TestBrowserContext::GetResourceContext() { diff --git a/content/public/test/test_browser_context.h b/content/public/test/test_browser_context.h index c18fd22..0179d42 100644 --- a/content/public/test/test_browser_context.h +++ b/content/public/test/test_browser_context.h @@ -55,12 +55,12 @@ class TestBrowserContext : public BrowserContext { virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; virtual void CancelProtectedMediaIdentifierPermissionRequests( - int group_id) OVERRIDE; + int render_process_id, + int render_view_id, + const GURL& origin) OVERRIDE; virtual ResourceContext* GetResourceContext() OVERRIDE; virtual GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/content/shell/browser/shell_browser_context.cc b/content/shell/browser/shell_browser_context.cc index 868a2f2..91806ba 100644 --- a/content/shell/browser/shell_browser_context.cc +++ b/content/shell/browser/shell_browser_context.cc @@ -206,15 +206,15 @@ void ShellBrowserContext::CancelMidiSysExPermissionRequest( void ShellBrowserContext::RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) { callback.Run(true); } void ShellBrowserContext::CancelProtectedMediaIdentifierPermissionRequests( - int group_id) { + int render_process_id, + int render_view_id, + const GURL& origin) { } net::URLRequestContextGetter* diff --git a/content/shell/browser/shell_browser_context.h b/content/shell/browser/shell_browser_context.h index e56205e..f5e153c 100644 --- a/content/shell/browser/shell_browser_context.h +++ b/content/shell/browser/shell_browser_context.h @@ -63,12 +63,12 @@ class ShellBrowserContext : public BrowserContext { virtual void RequestProtectedMediaIdentifierPermission( int render_process_id, int render_view_id, - int bridge_id, - int group_id, - const GURL& requesting_frame, + const GURL& origin, const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; virtual void CancelProtectedMediaIdentifierPermissionRequests( - int group_id) OVERRIDE; + int render_process_id, + int render_view_id, + const GURL& origin) OVERRIDE; virtual ResourceContext* GetResourceContext() OVERRIDE; virtual GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; |