Chromium Code Reviews| Index: chrome/browser/media/protected_media_identifier_permission_context.cc |
| diff --git a/chrome/browser/media/protected_media_identifier_permission_context.cc b/chrome/browser/media/protected_media_identifier_permission_context.cc |
| index 6f1bc6e115b467d6a50608fb7d7ebc361e3a5382..e15cda09d9ff0e320f5cfc8870576fca6d0c5339 100644 |
| --- a/chrome/browser/media/protected_media_identifier_permission_context.cc |
| +++ b/chrome/browser/media/protected_media_identifier_permission_context.cc |
| @@ -4,10 +4,6 @@ |
| #include "chrome/browser/media/protected_media_identifier_permission_context.h" |
| -#include <functional> |
| -#include <string> |
| -#include <vector> |
| - |
| #include "base/bind.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/strings/utf_string_conversions.h" |
| @@ -18,8 +14,6 @@ |
| #include "components/content_settings/core/browser/host_content_settings_map.h" |
| #include "components/content_settings/core/common/permission_request_id.h" |
| #include "content/public/browser/browser_thread.h" |
| -#include "content/public/browser/render_process_host.h" |
| -#include "content/public/browser/render_view_host.h" |
| #include "content/public/browser/web_contents.h" |
| #if defined(ENABLE_EXTENSIONS) |
| @@ -34,30 +28,23 @@ using extensions::APIPermission; |
| ProtectedMediaIdentifierPermissionContext:: |
| ProtectedMediaIdentifierPermissionContext(Profile* profile) |
| - : profile_(profile), shutting_down_(false) {} |
| + : PermissionContextBase(profile, |
| + CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER) { |
| +} |
| ProtectedMediaIdentifierPermissionContext:: |
| ~ProtectedMediaIdentifierPermissionContext() { |
| - // ProtectedMediaIdentifierPermissionContext may be destroyed on either |
| - // the UI thread or the IO thread, but the PermissionQueueController must have |
| - // been destroyed on the UI thread. |
| - DCHECK(!permission_queue_controller_.get()); |
| } |
| -void ProtectedMediaIdentifierPermissionContext:: |
| - RequestProtectedMediaIdentifierPermission( |
| - content::WebContents* web_contents, |
| - const GURL& origin, |
| - base::Callback<void(bool)> result_callback) { |
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| - if (shutting_down_) |
| - return; |
| - |
| - int render_process_id = web_contents->GetRenderProcessHost()->GetID(); |
| - int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID(); |
| +void ProtectedMediaIdentifierPermissionContext::RequestPermission( |
| + content::WebContents* web_contents, |
| + const PermissionRequestID& id, |
| + const GURL& requesting_frame_origin, |
| + bool user_gesture, |
| + const BrowserPermissionCallback& callback) { |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| - const PermissionRequestID id( |
| - render_process_id, render_view_id, 0, origin); |
| + GURL embedder = web_contents->GetLastCommittedURL().GetOrigin(); |
| #if defined(ENABLE_EXTENSIONS) |
|
Miguel Garcia
2014/12/03 18:57:36
Is this really needed? I thought protected media o
timvolodine
2014/12/04 17:22:26
don't know.
kkimlabs@ : any ideas on this?
timvolodine
2014/12/04 17:24:39
Protected media is not android-only, from what I c
|
| if (extensions::GetViewType(web_contents) != |
| @@ -67,102 +54,42 @@ void ProtectedMediaIdentifierPermissionContext:: |
| << "Attempt to use protected media identifier in tabless renderer: " |
| << id.ToString() |
| << " (can't prompt user without a visible tab)"; |
| - NotifyPermissionSet(id, origin, result_callback, false); |
| + NotifyPermissionSet(id, origin, embedder, callback, false, false); |
| return; |
| } |
| #endif |
| - GURL embedder = web_contents->GetLastCommittedURL(); |
| - if (!origin.is_valid() || !embedder.is_valid()) { |
| + if (!requesting_frame_origin.is_valid() || !embedder.is_valid()) { |
|
Miguel Garcia
2014/12/03 18:57:37
It seems to me that this could go in the base clas
timvolodine
2014/12/04 17:22:26
it probably can, we have something similar in geol
|
| LOG(WARNING) |
| << "Attempt to use protected media identifier from an invalid URL: " |
| - << origin << "," << embedder |
| + << requesting_frame_origin << "," << embedder |
| << " (proteced media identifier is not supported in popups)"; |
| - NotifyPermissionSet(id, origin, result_callback, false); |
| + NotifyPermissionSet(id, requesting_frame_origin, embedder, |
| + callback, false, false); |
| return; |
| } |
| - content::RenderViewHost* rvh = web_contents->GetRenderViewHost(); |
| - DecidePermission(id, origin, embedder, rvh, result_callback); |
| -} |
| - |
| -void ProtectedMediaIdentifierPermissionContext:: |
| - 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& origin, |
| - const GURL& embedder, |
| - content::RenderViewHost* rvh, |
| - const base::Callback<void(bool)>& callback) { |
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| - |
| #if defined(OS_ANDROID) |
| // Check if the protected media identifier master switch is disabled. |
| if (!profile()->GetPrefs()->GetBoolean( |
| prefs::kProtectedMediaIdentifierEnabled)) { |
|
Miguel Garcia
2014/12/03 18:57:36
so while you are at it you can probably remove thi
timvolodine
2014/12/04 17:22:26
ok I'll check with the author (think it's kkimlabs
timvolodine
2014/12/04 17:24:39
We cannot drop this switch, it is used to allow us
|
| - PermissionDecided(id, origin, embedder, callback, false); |
| + NotifyPermissionSet(id, requesting_frame_origin, embedder, callback, |
| + false, false); |
| return; |
| } |
| #endif |
| - ContentSetting content_setting = |
| - profile_->GetHostContentSettingsMap()->GetContentSetting( |
| - origin, |
| - embedder, |
| - CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, |
| - std::string()); |
| - switch (content_setting) { |
| - case CONTENT_SETTING_BLOCK: |
| - PermissionDecided(id, origin, embedder, callback, false); |
| - break; |
| - case CONTENT_SETTING_ALLOW: |
| - PermissionDecided(id, origin, embedder, callback, true); |
| - break; |
| - case CONTENT_SETTING_ASK: |
| - QueueController()->CreateInfoBarRequest( |
| - id, |
| - origin, |
| - embedder, |
| - base::Bind(&ProtectedMediaIdentifierPermissionContext:: |
| - NotifyPermissionSet, |
| - base::Unretained(this), |
| - id, |
| - origin, |
| - callback)); |
| - break; |
| - default: |
| - NOTREACHED(); |
| - } |
| -} |
| - |
| -void ProtectedMediaIdentifierPermissionContext::ShutdownOnUIThread() { |
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| - permission_queue_controller_.reset(); |
| - shutting_down_ = true; |
| + PermissionContextBase::RequestPermission(web_contents, id, |
| + requesting_frame_origin, |
| + user_gesture, |
| + callback); |
| } |
| -void ProtectedMediaIdentifierPermissionContext::PermissionDecided( |
| +void ProtectedMediaIdentifierPermissionContext::UpdateTabContext( |
| const PermissionRequestID& id, |
| - const GURL& origin, |
| - const GURL& embedder, |
| - const base::Callback<void(bool)>& callback, |
| + const GURL& requesting_frame, |
| bool allowed) { |
| - NotifyPermissionSet(id, origin, callback, allowed); |
| -} |
| - |
| -void ProtectedMediaIdentifierPermissionContext::NotifyPermissionSet( |
| - const PermissionRequestID& id, |
| - const GURL& origin, |
| - const base::Callback<void(bool)>& callback, |
| - bool allowed) { |
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| // WebContents may have gone away. |
| TabSpecificContentSettings* content_settings = |
| @@ -170,49 +97,7 @@ void ProtectedMediaIdentifierPermissionContext::NotifyPermissionSet( |
| id.render_view_id()); |
| if (content_settings) { |
| content_settings->OnProtectedMediaIdentifierPermissionSet( |
| - origin.GetOrigin(), allowed); |
| + requesting_frame.GetOrigin(), allowed); |
| } |
| - callback.Run(allowed); |
| -} |
| - |
| -PermissionQueueController* |
| - ProtectedMediaIdentifierPermissionContext::QueueController() { |
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| - DCHECK(!shutting_down_); |
| - if (!permission_queue_controller_) |
| - permission_queue_controller_.reset(CreateQueueController()); |
| - return permission_queue_controller_.get(); |
| -} |
| - |
| -PermissionQueueController* |
| - ProtectedMediaIdentifierPermissionContext::CreateQueueController() { |
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| - return new PermissionQueueController( |
| - profile(), CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER); |
| -} |
| - |
| -void |
| -ProtectedMediaIdentifierPermissionContext::CancelPendingInfobarRequests( |
| - int render_process_id, |
| - int render_view_id, |
| - const GURL& origin) { |
| - if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { |
| - content::BrowserThread::PostTask( |
| - content::BrowserThread::UI, |
| - FROM_HERE, |
| - base::Bind(&ProtectedMediaIdentifierPermissionContext:: |
| - CancelPendingInfobarRequests, |
| - this, |
| - render_process_id, |
| - render_view_id, |
| - origin)); |
| - return; |
| - } |
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| - if (shutting_down_) |
| - return; |
| - QueueController()->CancelInfoBarRequest( |
| - PermissionRequestID(render_process_id, render_view_id, 0, |
| - origin)); |
| } |