OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/media/protected_media_identifier_permission_context.h" | 5 #include "chrome/browser/media/protected_media_identifier_permission_context.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 , | 41 , |
42 weak_factory_(this) | 42 weak_factory_(this) |
43 #endif | 43 #endif |
44 { | 44 { |
45 } | 45 } |
46 | 46 |
47 ProtectedMediaIdentifierPermissionContext:: | 47 ProtectedMediaIdentifierPermissionContext:: |
48 ~ProtectedMediaIdentifierPermissionContext() { | 48 ~ProtectedMediaIdentifierPermissionContext() { |
49 } | 49 } |
50 | 50 |
| 51 #if defined(OS_CHROMEOS) |
51 void ProtectedMediaIdentifierPermissionContext::RequestPermission( | 52 void ProtectedMediaIdentifierPermissionContext::RequestPermission( |
52 content::WebContents* web_contents, | 53 content::WebContents* web_contents, |
53 const PermissionRequestID& id, | 54 const PermissionRequestID& id, |
54 const GURL& requesting_origin, | 55 const GURL& requesting_origin, |
55 bool user_gesture, | 56 bool user_gesture, |
56 const BrowserPermissionCallback& callback) { | 57 const BrowserPermissionCallback& callback) { |
57 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 58 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
58 | 59 |
59 // First check if this permission has been disabled. This check occurs before | 60 // First check if this permission has been disabled. This check occurs before |
60 // the call to GetPermissionStatus, which will return CONTENT_SETTING_BLOCK | 61 // the call to GetPermissionStatus, which will return CONTENT_SETTING_BLOCK |
(...skipping 25 matching lines...) Expand all Loading... |
86 | 87 |
87 if (content_setting == CONTENT_SETTING_ALLOW || | 88 if (content_setting == CONTENT_SETTING_ALLOW || |
88 content_setting == CONTENT_SETTING_BLOCK) { | 89 content_setting == CONTENT_SETTING_BLOCK) { |
89 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, | 90 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, |
90 false /* persist */, content_setting); | 91 false /* persist */, content_setting); |
91 return; | 92 return; |
92 } | 93 } |
93 | 94 |
94 DCHECK_EQ(CONTENT_SETTING_ASK, content_setting); | 95 DCHECK_EQ(CONTENT_SETTING_ASK, content_setting); |
95 | 96 |
96 #if defined(OS_CHROMEOS) | |
97 // Since the dialog is modal, we only support one prompt per |web_contents|. | 97 // Since the dialog is modal, we only support one prompt per |web_contents|. |
98 // Reject the new one if there is already one pending. See | 98 // Reject the new one if there is already one pending. See |
99 // http://crbug.com/447005 | 99 // http://crbug.com/447005 |
100 if (pending_requests_.count(web_contents)) { | 100 if (pending_requests_.count(web_contents)) { |
101 callback.Run(CONTENT_SETTING_ASK); | 101 callback.Run(CONTENT_SETTING_ASK); |
102 return; | 102 return; |
103 } | 103 } |
104 | 104 |
105 // On ChromeOS, we don't use PermissionContextBase::RequestPermission() which | 105 // On ChromeOS, we don't use PermissionContextBase::RequestPermission() which |
106 // uses the standard permission infobar/bubble UI. See http://crbug.com/454847 | 106 // uses the standard permission infobar/bubble UI. See http://crbug.com/454847 |
107 // Instead, we show the existing platform verification UI. | 107 // Instead, we show the existing platform verification UI. |
108 // TODO(xhwang): Remove when http://crbug.com/454847 is fixed. | 108 // TODO(xhwang): Remove when http://crbug.com/454847 is fixed. |
109 views::Widget* widget = PlatformVerificationDialog::ShowDialog( | 109 views::Widget* widget = PlatformVerificationDialog::ShowDialog( |
110 web_contents, requesting_origin, | 110 web_contents, requesting_origin, |
111 base::Bind(&ProtectedMediaIdentifierPermissionContext:: | 111 base::Bind(&ProtectedMediaIdentifierPermissionContext:: |
112 OnPlatformVerificationConsentResponse, | 112 OnPlatformVerificationConsentResponse, |
113 weak_factory_.GetWeakPtr(), web_contents, id, | 113 weak_factory_.GetWeakPtr(), web_contents, id, |
114 requesting_origin, embedding_origin, callback)); | 114 requesting_origin, embedding_origin, callback)); |
115 pending_requests_.insert( | 115 pending_requests_.insert( |
116 std::make_pair(web_contents, std::make_pair(widget, id))); | 116 std::make_pair(web_contents, std::make_pair(widget, id))); |
117 #else | |
118 PermissionContextBase::RequestPermission(web_contents, id, requesting_origin, | |
119 user_gesture, callback); | |
120 #endif | |
121 } | 117 } |
| 118 #endif // defined(OS_CHROMEOS) |
122 | 119 |
123 ContentSetting ProtectedMediaIdentifierPermissionContext::GetPermissionStatus( | 120 ContentSetting ProtectedMediaIdentifierPermissionContext::GetPermissionStatus( |
124 const GURL& requesting_origin, | 121 const GURL& requesting_origin, |
125 const GURL& embedding_origin) const { | 122 const GURL& embedding_origin) const { |
126 DVLOG(1) << __FUNCTION__ << ": (" << requesting_origin.spec() << ", " | 123 DVLOG(1) << __FUNCTION__ << ": (" << requesting_origin.spec() << ", " |
127 << embedding_origin.spec() << ")"; | 124 << embedding_origin.spec() << ")"; |
128 | 125 |
129 if (!requesting_origin.is_valid() || !embedding_origin.is_valid() || | 126 if (!requesting_origin.is_valid() || !embedding_origin.is_valid() || |
130 !IsProtectedMediaIdentifierEnabled()) { | 127 !IsProtectedMediaIdentifierEnabled()) { |
131 return CONTENT_SETTING_BLOCK; | 128 return CONTENT_SETTING_BLOCK; |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 content_setting = CONTENT_SETTING_BLOCK; | 256 content_setting = CONTENT_SETTING_BLOCK; |
260 persist = true; | 257 persist = true; |
261 break; | 258 break; |
262 } | 259 } |
263 | 260 |
264 NotifyPermissionSet( | 261 NotifyPermissionSet( |
265 id, requesting_origin, embedding_origin, callback, | 262 id, requesting_origin, embedding_origin, callback, |
266 persist, content_setting); | 263 persist, content_setting); |
267 } | 264 } |
268 #endif | 265 #endif |
OLD | NEW |