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

Unified Diff: chrome/browser/chrome_content_browser_client.cc

Issue 990303002: Implement PermissionService::GetNextPermissionChange. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permission_impl
Patch Set: review comments Created 5 years, 9 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
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 e3ae8430cec806a0579d1fb3054a56e0a57932a8..646b62b2ec29c428e1062c395a62a1031b408474 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -29,23 +29,23 @@
#include "chrome/browser/chrome_net_benchmarking_message_filter.h"
#include "chrome/browser/chrome_quota_permission_context.h"
#include "chrome/browser/content_settings/cookie_settings.h"
+#include "chrome/browser/content_settings/permission_context.h"
+#include "chrome/browser/content_settings/permission_observer.h"
+#include "chrome/browser/content_settings/permission_observer_factory.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
#include "chrome/browser/defaults.h"
#include "chrome/browser/download/download_prefs.h"
#include "chrome/browser/font_family_cache.h"
#include "chrome/browser/geolocation/chrome_access_token_store.h"
#include "chrome/browser/geolocation/geolocation_permission_context.h"
-#include "chrome/browser/geolocation/geolocation_permission_context_factory.h"
#include "chrome/browser/media/media_capture_devices_dispatcher.h"
#include "chrome/browser/media/midi_permission_context.h"
-#include "chrome/browser/media/midi_permission_context_factory.h"
#include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h"
#include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h"
#include "chrome/browser/net/chrome_net_log.h"
#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h"
#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h"
#include "chrome/browser/notifications/desktop_notification_service.h"
-#include "chrome/browser/notifications/desktop_notification_service_factory.h"
#include "chrome/browser/notifications/platform_notification_service_impl.h"
#include "chrome/browser/platform_util.h"
#include "chrome/browser/prerender/prerender_final_status.h"
@@ -57,7 +57,6 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_io_data.h"
#include "chrome/browser/push_messaging/push_messaging_permission_context.h"
-#include "chrome/browser/push_messaging/push_messaging_permission_context_factory.h"
#include "chrome/browser/renderer_host/chrome_render_message_filter.h"
#include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h"
#include "chrome/browser/search/instant_service.h"
@@ -171,7 +170,6 @@
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
#include "chrome/browser/media/protected_media_identifier_permission_context.h"
-#include "chrome/browser/media/protected_media_identifier_permission_context_factory.h"
#endif
#if defined(OS_POSIX) && !defined(OS_MACOSX)
@@ -628,37 +626,6 @@ ContentSettingToPermissionStatus(ContentSetting setting) {
return content::PERMISSION_STATUS_DENIED;
}
-PermissionContextBase* GetPermissionContext(Profile* profile,
- content::PermissionType permission) {
- switch (permission) {
- case content::PERMISSION_MIDI_SYSEX:
- return MidiPermissionContextFactory::GetForProfile(profile);
- case content::PERMISSION_NOTIFICATIONS:
-#if defined(ENABLE_NOTIFICATIONS)
- return DesktopNotificationServiceFactory::GetForProfile(profile);
-#else
- NOTIMPLEMENTED();
- break;
-#endif
- case content::PERMISSION_GEOLOCATION:
- return GeolocationPermissionContextFactory::GetForProfile(profile);
- case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
-#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
- return ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(
- profile);
-#else
- NOTIMPLEMENTED();
- break;
-#endif
- case content::PERMISSION_PUSH_MESSAGING:
- return PushMessagingPermissionContextFactory::GetForProfile(profile);
- case content::PERMISSION_NUM:
- NOTREACHED() << "Invalid RequestPermission for " << permission;
- break;
- }
- return nullptr;
-}
-
// Helper method to translate from Permissions to ContentSettings
ContentSettingsType PermissionToContentSetting(
content::PermissionType permission) {
@@ -681,7 +648,7 @@ ContentSettingsType PermissionToContentSetting(
}
}
-void OnRequestPermission(
+void PermissionStatusCallbackWrapper(
const base::Callback<void(content::PermissionStatus)>& callback,
ContentSetting content_setting) {
callback.Run(ContentSettingToPermissionStatus(content_setting));
@@ -1946,14 +1913,16 @@ void ChromeContentBrowserClient::RequestPermission(
requesting_frame);
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
- PermissionContextBase* context = GetPermissionContext(profile, permission);
+ PermissionContextBase* context =
+ PermissionContext::Get(profile, PermissionToContentSetting(permission));
if (!context)
return;
context->RequestPermission(web_contents, request_id, requesting_frame,
user_gesture,
- base::Bind(&OnRequestPermission, result_callback));
+ base::Bind(&PermissionStatusCallbackWrapper,
+ result_callback));
}
content::PermissionStatus ChromeContentBrowserClient::GetPermissionStatus(
@@ -1963,7 +1932,8 @@ content::PermissionStatus ChromeContentBrowserClient::GetPermissionStatus(
const GURL& embedding_origin) {
DCHECK(browser_context);
Profile* profile = Profile::FromBrowserContext(browser_context);
- PermissionContextBase* context = GetPermissionContext(profile, permission);
+ PermissionContextBase* context =
+ PermissionContext::Get(profile, PermissionToContentSetting(permission));
if (!context)
return content::PERMISSION_STATUS_ASK;
@@ -1973,6 +1943,29 @@ content::PermissionStatus ChromeContentBrowserClient::GetPermissionStatus(
embedding_origin.GetOrigin()));
}
+int ChromeContentBrowserClient::SubscribePermissionStatusChange(
+ content::PermissionType permission,
+ content::BrowserContext* browser_context,
+ const GURL& requesting_origin,
+ const GURL& embedding_origin,
+ const base::Callback<void(content::PermissionStatus)>& callback) {
+ return PermissionObserverFactory::GetForProfile(
+ Profile::FromBrowserContext(browser_context))
+ ->Subscribe(PermissionToContentSetting(permission),
+ requesting_origin,
+ embedding_origin,
+ base::Bind(&PermissionStatusCallbackWrapper,
+ callback));
+}
+
+void ChromeContentBrowserClient::UnsubscribePermissionStatusChange(
+ content::BrowserContext* browser_context,
+ int subscription_id) {
+ PermissionObserverFactory::GetForProfile(
+ Profile::FromBrowserContext(browser_context))
+ ->Unsubscribe(subscription_id);
+}
+
void ChromeContentBrowserClient::ResetPermission(
content::PermissionType permission,
content::BrowserContext* browser_context,
@@ -1980,7 +1973,8 @@ void ChromeContentBrowserClient::ResetPermission(
const GURL& embedding_origin) {
DCHECK(browser_context);
Profile* profile = Profile::FromBrowserContext(browser_context);
- PermissionContextBase* context = GetPermissionContext(profile, permission);
+ PermissionContextBase* context =
+ PermissionContext::Get(profile, PermissionToContentSetting(permission));
if (!context)
return;
@@ -2002,7 +1996,8 @@ void ChromeContentBrowserClient::CancelPermissionRequest(
requesting_frame);
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
- PermissionContextBase* context = GetPermissionContext(profile, permission);
+ PermissionContextBase* context =
+ PermissionContext::Get(profile, PermissionToContentSetting(permission));
if (!context)
return;
context->CancelPermissionRequest(web_contents, request_id);

Powered by Google App Engine
This is Rietveld 408576698