Commit e2a873b6 authored by mlamouri's avatar mlamouri Committed by Commit bot

Make content::PermissionType an enum class.

It allows us to forward declare it instead of including the file everywhere.

BUG=437770

Review URL: https://codereview.chromium.org/1020683003

Cr-Commit-Position: refs/heads/master@{#322164}
parent 61f81c04
......@@ -392,7 +392,7 @@ void AwContentBrowserClient::RequestPermission(
AwBrowserPermissionRequestDelegate::FromID(render_process_id,
render_view_id);
switch (permission) {
case content::PERMISSION_GEOLOCATION:
case content::PermissionType::GEOLOCATION:
if (!delegate) {
DVLOG(0) << "Dropping GeolocationPermission request";
callback.Run(content::PERMISSION_STATUS_DENIED);
......@@ -401,7 +401,7 @@ void AwContentBrowserClient::RequestPermission(
delegate->RequestGeolocationPermission(
origin, base::Bind(&CallbackPermisisonStatusWrapper, callback));
break;
case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
if (!delegate) {
DVLOG(0) << "Dropping ProtectedMediaIdentifierPermission request";
callback.Run(content::PERMISSION_STATUS_DENIED);
......@@ -410,14 +410,15 @@ void AwContentBrowserClient::RequestPermission(
delegate->RequestProtectedMediaIdentifierPermission(
origin, base::Bind(&CallbackPermisisonStatusWrapper, callback));
break;
case content::PERMISSION_MIDI_SYSEX:
case content::PERMISSION_NOTIFICATIONS:
case content::PERMISSION_PUSH_MESSAGING:
case content::PermissionType::MIDI_SYSEX:
case content::PermissionType::NOTIFICATIONS:
case content::PermissionType::PUSH_MESSAGING:
NOTIMPLEMENTED() << "RequestPermission not implemented for "
<< permission;
<< static_cast<int>(permission);
break;
case content::PERMISSION_NUM:
NOTREACHED() << "Invalid RequestPermission for " << permission;
case content::PermissionType::NUM:
NOTREACHED() << "Invalid RequestPermission for "
<< static_cast<int>(permission);
break;
}
}
......@@ -435,19 +436,21 @@ void AwContentBrowserClient::CancelPermissionRequest(
if (!delegate)
return;
switch (permission) {
case content::PERMISSION_GEOLOCATION:
case content::PermissionType::GEOLOCATION:
delegate->CancelGeolocationPermissionRequests(origin);
break;
case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
delegate->CancelProtectedMediaIdentifierPermissionRequests(origin);
break;
case content::PERMISSION_MIDI_SYSEX:
case content::PERMISSION_NOTIFICATIONS:
case content::PERMISSION_PUSH_MESSAGING:
NOTIMPLEMENTED() << "CancelPermission not implemented for " << permission;
case content::PermissionType::MIDI_SYSEX:
case content::PermissionType::NOTIFICATIONS:
case content::PermissionType::PUSH_MESSAGING:
NOTIMPLEMENTED() << "CancelPermission not implemented for "
<< static_cast<int>(permission);
break;
case content::PERMISSION_NUM:
NOTREACHED() << "Invalid CancelPermission for " << permission;
case content::PermissionType::NUM:
NOTREACHED() << "Invalid CancelPermission for "
<< static_cast<int>(permission);
break;
}
}
......
......@@ -609,18 +609,18 @@ ContentSettingToPermissionStatus(ContentSetting setting) {
PermissionContextBase* GetPermissionContext(Profile* profile,
content::PermissionType permission) {
switch (permission) {
case content::PERMISSION_MIDI_SYSEX:
case content::PermissionType::MIDI_SYSEX:
return MidiPermissionContextFactory::GetForProfile(profile);
case content::PERMISSION_NOTIFICATIONS:
case content::PermissionType::NOTIFICATIONS:
#if defined(ENABLE_NOTIFICATIONS)
return DesktopNotificationServiceFactory::GetForProfile(profile);
#else
NOTIMPLEMENTED();
break;
#endif
case content::PERMISSION_GEOLOCATION:
case content::PermissionType::GEOLOCATION:
return GeolocationPermissionContextFactory::GetForProfile(profile);
case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
return ProtectedMediaIdentifierPermissionContextFactory::GetForProfile(
profile);
......@@ -628,10 +628,11 @@ PermissionContextBase* GetPermissionContext(Profile* profile,
NOTIMPLEMENTED();
break;
#endif
case content::PERMISSION_PUSH_MESSAGING:
case content::PermissionType::PUSH_MESSAGING:
return PushMessagingPermissionContextFactory::GetForProfile(profile);
case content::PERMISSION_NUM:
NOTREACHED() << "Invalid RequestPermission for " << permission;
case content::PermissionType::NUM:
NOTREACHED() << "Invalid RequestPermission for "
<< static_cast<int>(permission);
break;
}
return nullptr;
......@@ -641,20 +642,21 @@ PermissionContextBase* GetPermissionContext(Profile* profile,
ContentSettingsType PermissionToContentSetting(
content::PermissionType permission) {
switch (permission) {
case content::PERMISSION_MIDI_SYSEX:
case content::PermissionType::MIDI_SYSEX:
return CONTENT_SETTINGS_TYPE_MIDI_SYSEX;
case content::PERMISSION_PUSH_MESSAGING:
case content::PermissionType::PUSH_MESSAGING:
return CONTENT_SETTINGS_TYPE_PUSH_MESSAGING;
case content::PERMISSION_NOTIFICATIONS:
case content::PermissionType::NOTIFICATIONS:
return CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
case content::PERMISSION_GEOLOCATION:
case content::PermissionType::GEOLOCATION:
return CONTENT_SETTINGS_TYPE_GEOLOCATION;
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
case content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER:
case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
return CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER;
#endif
default:
NOTREACHED() << "Unknown content setting for permission " << permission;
NOTREACHED() << "Unknown content setting for permission "
<< static_cast<int>(permission);
return CONTENT_SETTINGS_TYPE_DEFAULT;
}
}
......
......@@ -16,11 +16,14 @@
#include "components/variations/entropy_provider.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_switches.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
using content::PermissionType;
namespace chrome {
using ChromeContentBrowserClientTest = testing::Test;
......@@ -201,7 +204,7 @@ class PermissionBrowserClientTest : public testing::Test {
public:
PermissionBrowserClientTest() : url_("https://www.google.com") {}
void CheckPermissionStatus(content::PermissionType type,
void CheckPermissionStatus(PermissionType type,
content::PermissionStatus expected) {
EXPECT_EQ(expected, client_.GetPermissionStatus(type, &profile_,
url_.GetOrigin(),
......@@ -224,12 +227,12 @@ class PermissionBrowserClientTest : public testing::Test {
TEST_F(PermissionBrowserClientTest, GetPermissionStatusDefault) {
using namespace content;
CheckPermissionStatus(PERMISSION_MIDI_SYSEX, PERMISSION_STATUS_ASK);
CheckPermissionStatus(PERMISSION_PUSH_MESSAGING, PERMISSION_STATUS_ASK);
CheckPermissionStatus(PERMISSION_NOTIFICATIONS, PERMISSION_STATUS_ASK);
CheckPermissionStatus(PERMISSION_GEOLOCATION, PERMISSION_STATUS_ASK);
CheckPermissionStatus(PermissionType::MIDI_SYSEX, PERMISSION_STATUS_ASK);
CheckPermissionStatus(PermissionType::PUSH_MESSAGING, PERMISSION_STATUS_ASK);
CheckPermissionStatus(PermissionType::NOTIFICATIONS, PERMISSION_STATUS_ASK);
CheckPermissionStatus(PermissionType::GEOLOCATION, PERMISSION_STATUS_ASK);
#if defined(OS_ANDROID)
CheckPermissionStatus(PERMISSION_PROTECTED_MEDIA_IDENTIFIER,
CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
PERMISSION_STATUS_ASK);
#endif
}
......@@ -237,21 +240,23 @@ TEST_F(PermissionBrowserClientTest, GetPermissionStatusDefault) {
TEST_F(PermissionBrowserClientTest, GetPermissionStatusAfterSet) {
using namespace content;
SetPermission(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW);
CheckPermissionStatus(PERMISSION_GEOLOCATION, PERMISSION_STATUS_GRANTED);
CheckPermissionStatus(PermissionType::GEOLOCATION, PERMISSION_STATUS_GRANTED);
SetPermission(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW);
CheckPermissionStatus(PERMISSION_NOTIFICATIONS, PERMISSION_STATUS_GRANTED);
CheckPermissionStatus(PermissionType::NOTIFICATIONS,
PERMISSION_STATUS_GRANTED);
SetPermission(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, CONTENT_SETTING_ALLOW);
CheckPermissionStatus(PERMISSION_MIDI_SYSEX, PERMISSION_STATUS_GRANTED);
CheckPermissionStatus(PermissionType::MIDI_SYSEX, PERMISSION_STATUS_GRANTED);
SetPermission(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, CONTENT_SETTING_ALLOW);
CheckPermissionStatus(PERMISSION_PUSH_MESSAGING, PERMISSION_STATUS_GRANTED);
CheckPermissionStatus(PermissionType::PUSH_MESSAGING,
PERMISSION_STATUS_GRANTED);
#if defined(OS_ANDROID)
SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
CONTENT_SETTING_ALLOW);
CheckPermissionStatus(PERMISSION_PROTECTED_MEDIA_IDENTIFIER,
CheckPermissionStatus(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
PERMISSION_STATUS_GRANTED);
#endif
}
......
......@@ -98,20 +98,20 @@ void RecordPermissionRequest(
content::PermissionType type;
switch (permission) {
case CONTENT_SETTINGS_TYPE_GEOLOCATION:
type = content::PERMISSION_GEOLOCATION;
type = content::PermissionType::GEOLOCATION;
break;
case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
type = content::PERMISSION_NOTIFICATIONS;
type = content::PermissionType::NOTIFICATIONS;
break;
case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
type = content::PERMISSION_MIDI_SYSEX;
type = content::PermissionType::MIDI_SYSEX;
break;
case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
type = content::PERMISSION_PUSH_MESSAGING;
type = content::PermissionType::PUSH_MESSAGING;
break;
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER:
type = content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER;
type = content::PermissionType::PROTECTED_MEDIA_IDENTIFIER;
break;
#endif
default:
......@@ -119,17 +119,19 @@ void RecordPermissionRequest(
return;
}
UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.PermissionRequested", type, content::PERMISSION_NUM);
"ContentSettings.PermissionRequested",
static_cast<base::HistogramBase::Sample>(type),
static_cast<base::HistogramBase::Sample>(content::PermissionType::NUM));
if (secure_origin) {
UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.PermissionRequested_SecureOrigin",
type,
content::PERMISSION_NUM);
static_cast<base::HistogramBase::Sample>(type),
static_cast<base::HistogramBase::Sample>(content::PermissionType::NUM));
} else {
UMA_HISTOGRAM_ENUMERATION(
"ContentSettings.PermissionRequested_InsecureOrigin",
type,
content::PERMISSION_NUM);
static_cast<base::HistogramBase::Sample>(type),
static_cast<base::HistogramBase::Sample>(content::PermissionType::NUM));
}
}
......
......@@ -53,6 +53,7 @@
#include "content/public/browser/browser_plugin_guest_manager.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/stream_handle.h"
......@@ -1948,7 +1949,7 @@ void RenderFrameHostImpl::CancelSuspendedNavigations() {
void RenderFrameHostImpl::DidUseGeolocationPermission() {
RenderFrameHost* top_frame = frame_tree_node()->frame_tree()->GetMainFrame();
GetContentClient()->browser()->RegisterPermissionUsage(
PERMISSION_GEOLOCATION,
PermissionType::GEOLOCATION,
delegate_->GetAsWebContents(),
GetLastCommittedURL().GetOrigin(),
top_frame->GetLastCommittedURL().GetOrigin());
......
......@@ -13,6 +13,7 @@
#include "content/common/media/cdm_messages.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
......@@ -522,7 +523,7 @@ void BrowserCdmManager::CheckPermissionStatusOnUIThread(
PermissionStatus permission_status =
GetContentClient()->browser()->GetPermissionStatus(
content::PERMISSION_PROTECTED_MEDIA_IDENTIFIER,
content::PermissionType::PROTECTED_MEDIA_IDENTIFIER,
web_contents->GetBrowserContext(), security_origin, embedding_origin);
bool allowed = (permission_status == PERMISSION_STATUS_GRANTED);
......
......@@ -5,6 +5,7 @@
#include "content/browser/permissions/permission_service_impl.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/permission_type.h"
namespace content {
......@@ -13,19 +14,19 @@ namespace {
PermissionType PermissionNameToPermissionType(PermissionName name) {
switch(name) {
case PERMISSION_NAME_GEOLOCATION:
return PERMISSION_GEOLOCATION;
return PermissionType::GEOLOCATION;
case PERMISSION_NAME_NOTIFICATIONS:
return PERMISSION_NOTIFICATIONS;
return PermissionType::NOTIFICATIONS;
case PERMISSION_NAME_PUSH_NOTIFICATIONS:
return PERMISSION_PUSH_MESSAGING;
return PermissionType::PUSH_MESSAGING;
case PERMISSION_NAME_MIDI_SYSEX:
return PERMISSION_MIDI_SYSEX;
return PermissionType::MIDI_SYSEX;
case PERMISSION_NAME_PROTECTED_MEDIA_IDENTIFIER:
return PERMISSION_PROTECTED_MEDIA_IDENTIFIER;
return PermissionType::PROTECTED_MEDIA_IDENTIFIER;
}
NOTREACHED();
return PERMISSION_NUM;
return PermissionType::NUM;
}
} // anonymous namespace
......
......@@ -10,10 +10,11 @@
#include "base/memory/weak_ptr.h"
#include "content/browser/permissions/permission_service_context.h"
#include "content/common/permission_service.mojom.h"
#include "content/public/browser/permission_type.h"
namespace content {
enum class PermissionType;
// Implements the PermissionService Mojo interface.
// This service can be created from a RenderFrameHost or a RenderProcessHost.
// It is owned by a PermissionServiceContext.
......
......@@ -16,7 +16,6 @@
#include "base/memory/scoped_vector.h"
#include "base/values.h"
#include "content/public/browser/certificate_request_result_type.h"
#include "content/public/browser/permission_type.h"
#include "content/public/common/content_client.h"
#include "content/public/common/media_stream_request.h"
#include "content/public/common/permission_status.mojom.h"
......@@ -81,6 +80,7 @@ class FileSystemBackend;
namespace content {
enum class PermissionType;
class AccessTokenStore;
class BrowserChildProcessHost;
class BrowserContext;
......
......@@ -11,16 +11,16 @@ namespace content {
// the UMA guidelines.
// Make sure you update histograms.xml if you add new permission types.
// Never delete or reorder an entry; only add new entries
// immediately before PERMISSION_NUM
enum PermissionType {
PERMISSION_MIDI_SYSEX = 1,
PERMISSION_PUSH_MESSAGING = 2,
PERMISSION_NOTIFICATIONS = 3,
PERMISSION_GEOLOCATION = 4,
PERMISSION_PROTECTED_MEDIA_IDENTIFIER = 5,
// immediately before PermissionType::NUM
enum class PermissionType {
MIDI_SYSEX = 1,
PUSH_MESSAGING = 2,
NOTIFICATIONS = 3,
GEOLOCATION = 4,
PROTECTED_MEDIA_IDENTIFIER = 5,
// Always keep this at the end.
PERMISSION_NUM,
NUM,
};
} // namespace content
......
......@@ -7,6 +7,7 @@
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigator_connect_context.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/storage_partition.h"
#include "content/shell/browser/layout_test/layout_test_browser_context.h"
......@@ -88,7 +89,7 @@ void LayoutTestContentBrowserClient::RequestPermission(
bool user_gesture,
const base::Callback<void(PermissionStatus)>& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (permission == content::PERMISSION_NOTIFICATIONS) {
if (permission == PermissionType::NOTIFICATIONS) {
BrowserThread::PostTask(
BrowserThread::IO,
FROM_HERE,
......
......@@ -5,11 +5,11 @@
#ifndef CONTENT_SHELL_BROWSER_LAYOUT_TEST_LAYOUT_TEST_CONTENT_BROWSER_CLIENT_H_
#define CONTENT_SHELL_BROWSER_LAYOUT_TEST_LAYOUT_TEST_CONTENT_BROWSER_CLIENT_H_
#include "content/public/browser/permission_type.h"
#include "content/shell/browser/shell_content_browser_client.h"
namespace content {
enum class PermissionType;
class LayoutTestBrowserContext;
class LayoutTestNotificationManager;
......
......@@ -12,6 +12,7 @@
#include "base/strings/utf_string_conversions.h"
#include "content/public/browser/client_certificate_delegate.h"
#include "content/public/browser/page_navigator.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/resource_dispatcher_host.h"
#include "content/public/browser/storage_partition.h"
......@@ -305,7 +306,7 @@ void ShellContentBrowserClient::RequestPermission(
const base::Callback<void(PermissionStatus)>& callback) {
// Some Geolocation tests on Android are still expecting to have the
// permission granted. See https://crbug.com/463514.
if (permission == PERMISSION_GEOLOCATION) {
if (permission == PermissionType::GEOLOCATION) {
callback.Run(PERMISSION_STATUS_GRANTED);
return;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment