Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: chrome/browser/chrome_content_browser_client.cc

Issue 896173002: Clean-up refactoring of chrome_content_browser_client to use GetPermissionContext consistently. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/services/gcm/push_messaging_permission_context.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chrome_content_browser_client.cc
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 0f10e362afe0843de4712cb9ebfb6635dce46221..558d739fef88ca3df3e29bc61b303f012b1109b3 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -632,6 +632,7 @@ PermissionContextBase* GetPermissionContext(Profile* profile,
return DesktopNotificationServiceFactory::GetForProfile(profile);
#else
NOTIMPLEMENTED();
+ break;
#endif
case content::PERMISSION_GEOLOCATION:
return GeolocationPermissionContextFactory::GetForProfile(profile);
@@ -652,6 +653,28 @@ PermissionContextBase* GetPermissionContext(Profile* profile,
return nullptr;
}
+// Helper method to translate from Permissions to ContentSettings
+ContentSettingsType PermissionToContentSetting(
+ content::PermissionType permission) {
+ switch (permission) {
+ case content::PERMISSION_MIDI_SYSEX:
+ return CONTENT_SETTINGS_TYPE_MIDI_SYSEX;
+ case content::PERMISSION_PUSH_MESSAGING:
+ return CONTENT_SETTINGS_TYPE_PUSH_MESSAGING;
+ case content::PERMISSION_NOTIFICATIONS:
+ return CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
+ case content::PERMISSION_GEOLOCATION:
+ return CONTENT_SETTINGS_TYPE_GEOLOCATION;
+#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
+ case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
+ return CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER;
+#endif
+ default:
+ NOTREACHED() << "Unknown content setting for permission " << permission;
+ return CONTENT_SETTINGS_TYPE_DEFAULT;
+ }
+}
+
} // namespace
namespace chrome {
@@ -1908,67 +1931,19 @@ void ChromeContentBrowserClient::RequestPermission(
const base::Callback<void(bool)>& result_callback) {
int render_process_id = web_contents->GetRenderProcessHost()->GetID();
int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID();
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
-
const PermissionRequestID request_id(render_process_id,
render_view_id,
bridge_id,
requesting_frame);
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ PermissionContextBase* context = GetPermissionContext(profile, permission);
- switch (permission) {
- case content::PERMISSION_MIDI_SYSEX:
- MidiPermissionContextFactory::GetForProfile(profile)
- ->RequestPermission(web_contents,
- request_id,
- requesting_frame,
- user_gesture,
- result_callback);
- break;
- case content::PERMISSION_NOTIFICATIONS:
-#if defined(ENABLE_NOTIFICATIONS)
- DesktopNotificationServiceFactory::GetForProfile(profile)
- ->RequestNotificationPermission(web_contents,
- request_id,
- requesting_frame,
- user_gesture,
- result_callback);
-#else
- NOTIMPLEMENTED();
-#endif
- break;
- case content::PERMISSION_GEOLOCATION:
- GeolocationPermissionContextFactory::GetForProfile(profile)
- ->RequestPermission(web_contents,
- request_id,
- requesting_frame.GetOrigin(),
- user_gesture,
- result_callback);
- break;
- case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
-#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
- ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(profile)
- ->RequestPermission(web_contents,
- request_id,
- requesting_frame.GetOrigin(),
- user_gesture,
- result_callback);
-#else
- NOTIMPLEMENTED();
-#endif
- break;
- case content::PERMISSION_PUSH_MESSAGING:
- gcm::PushMessagingPermissionContextFactory::GetForProfile(profile)
- ->RequestPermission(web_contents,
- request_id,
- requesting_frame.GetOrigin(),
- user_gesture,
- result_callback);
- break;
- case content::PERMISSION_NUM:
- NOTREACHED() << "Invalid RequestPermission for " << permission;
- break;
- }
+ if (!context)
+ return;
+
+ context->RequestPermission(web_contents, request_id, requesting_frame,
+ user_gesture, result_callback);
}
content::PermissionStatus ChromeContentBrowserClient::GetPermissionStatus(
@@ -2011,67 +1986,16 @@ void ChromeContentBrowserClient::CancelPermissionRequest(
const GURL& requesting_frame) {
int render_process_id = web_contents->GetRenderProcessHost()->GetID();
int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID();
-
const PermissionRequestID request_id(render_process_id,
render_view_id,
bridge_id,
requesting_frame);
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
- switch (permission) {
- case content::PERMISSION_MIDI_SYSEX:
- MidiPermissionContextFactory::GetForProfile(profile)
- ->CancelPermissionRequest(web_contents, request_id);
- break;
- case content::PERMISSION_NOTIFICATIONS:
-#if defined(ENABLE_NOTIFICATIONS)
- DesktopNotificationServiceFactory::GetForProfile(profile)
- ->CancelPermissionRequest(web_contents, request_id);
-#else
- NOTIMPLEMENTED();
-#endif
- break;
- case content::PERMISSION_GEOLOCATION:
- GeolocationPermissionContextFactory::GetForProfile(profile)
- ->CancelPermissionRequest(web_contents, request_id);
- break;
- case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
-#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
- ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(profile)
- ->CancelPermissionRequest(web_contents, request_id);
-#else
- NOTIMPLEMENTED();
-#endif
- break;
- case content::PERMISSION_PUSH_MESSAGING:
- NOTIMPLEMENTED() << "CancelPermission not implemented for " << permission;
- break;
- case content::PERMISSION_NUM:
- NOTREACHED() << "Invalid CancelPermission for " << permission;
- break;
- }
-}
-
-// Helper method to translate from Permissions to ContentSettings
-static ContentSettingsType PermissionToContentSetting(
- content::PermissionType permission) {
- switch (permission) {
- case content::PERMISSION_MIDI_SYSEX:
- return CONTENT_SETTINGS_TYPE_MIDI_SYSEX;
- case content::PERMISSION_PUSH_MESSAGING:
- return CONTENT_SETTINGS_TYPE_PUSH_MESSAGING;
- case content::PERMISSION_NOTIFICATIONS:
- return CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
- case content::PERMISSION_GEOLOCATION:
- return CONTENT_SETTINGS_TYPE_GEOLOCATION;
-#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
- case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
- return CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER;
-#endif
- default:
- NOTREACHED() << "Unknown content setting for permission " << permission;
- return CONTENT_SETTINGS_TYPE_DEFAULT;
- }
+ PermissionContextBase* context = GetPermissionContext(profile, permission);
+ if (!context)
+ return;
+ context->CancelPermissionRequest(web_contents, request_id);
}
void ChromeContentBrowserClient::RegisterPermissionUsage(
« no previous file with comments | « no previous file | chrome/browser/services/gcm/push_messaging_permission_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698