| Index: chrome/browser/permissions/permission_context_base.cc
|
| diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc
|
| index f7626a66fbef3927ff42dcd115eb880c0fa3b8c3..63f1b3340adf001fbf1c1e107459525df30fb570 100644
|
| --- a/chrome/browser/permissions/permission_context_base.cc
|
| +++ b/chrome/browser/permissions/permission_context_base.cc
|
| @@ -60,7 +60,7 @@ PermissionContextBase::~PermissionContextBase() {
|
| void PermissionContextBase::RequestPermission(
|
| content::WebContents* web_contents,
|
| const PermissionRequestID& id,
|
| - const GURL& requesting_frame,
|
| + const url::Origin& requesting_origin,
|
| const BrowserPermissionCallback& callback) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
|
| @@ -77,17 +77,18 @@ void PermissionContextBase::RequestPermission(
|
| return;
|
| }
|
|
|
| - GURL requesting_origin = requesting_frame.GetOrigin();
|
| - GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
|
| + const GURL& embedding_url = web_contents->GetLastCommittedURL();
|
| + const url::Origin embedding_origin(embedding_url);
|
| + const GURL requesting_url(requesting_origin.Serialize());
|
|
|
| - if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) {
|
| + if (!requesting_origin.empty() || !embedding_origin.empty()) {
|
| std::string type_name =
|
| content_settings::WebsiteSettingsRegistry::GetInstance()
|
| ->Get(content_settings_type_)
|
| ->name();
|
|
|
| DVLOG(1) << "Attempt to use " << type_name
|
| - << " from an invalid URL: " << requesting_origin << ","
|
| + << " from an invalid origin: " << requesting_origin << ","
|
| << embedding_origin << " (" << type_name
|
| << " is not supported in popups)";
|
| NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
|
| @@ -99,7 +100,7 @@ void PermissionContextBase::RequestPermission(
|
| GetPermissionStatus(requesting_origin, embedding_origin);
|
| if (content_setting == CONTENT_SETTING_ALLOW) {
|
| HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage(
|
| - requesting_origin, embedding_origin, content_settings_type_);
|
| + requesting_url, embedding_url, content_settings_type_);
|
| }
|
| if (content_setting == CONTENT_SETTING_ALLOW ||
|
| content_setting == CONTENT_SETTING_BLOCK) {
|
| @@ -108,36 +109,38 @@ void PermissionContextBase::RequestPermission(
|
| return;
|
| }
|
|
|
| - PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin,
|
| - embedding_origin, profile_);
|
| + PermissionUmaUtil::PermissionRequested(permission_type_, requesting_url,
|
| + embedding_url, profile_);
|
|
|
| DecidePermission(web_contents, id, requesting_origin, embedding_origin,
|
| callback);
|
| }
|
|
|
| ContentSetting PermissionContextBase::GetPermissionStatus(
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin) const {
|
| -
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin) const {
|
| // If the permission has been disabled through Finch, block all requests.
|
| if (IsPermissionKillSwitchOn())
|
| return CONTENT_SETTING_BLOCK;
|
|
|
| + const GURL requesting_url(requesting_origin.Serialize());
|
| +
|
| if (IsRestrictedToSecureOrigins() &&
|
| - !content::IsOriginSecure(requesting_origin)) {
|
| + !content::IsOriginSecure(requesting_url)) {
|
| return CONTENT_SETTING_BLOCK;
|
| }
|
|
|
| return HostContentSettingsMapFactory::GetForProfile(profile_)
|
| - ->GetContentSetting(requesting_origin, embedding_origin,
|
| + ->GetContentSetting(requesting_url, GURL(embedding_origin.Serialize()),
|
| content_settings_type_, std::string());
|
| }
|
|
|
| void PermissionContextBase::ResetPermission(
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin) {
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin) {
|
| HostContentSettingsMapFactory::GetForProfile(profile_)
|
| - ->SetContentSettingDefaultScope(requesting_origin, embedding_origin,
|
| + ->SetContentSettingDefaultScope(GURL(requesting_origin.Serialize()),
|
| + GURL(embedding_origin.Serialize()),
|
| content_settings_type_, std::string(),
|
| CONTENT_SETTING_DEFAULT);
|
| }
|
| @@ -162,11 +165,14 @@ void PermissionContextBase::CancelPermissionRequest(
|
| void PermissionContextBase::DecidePermission(
|
| content::WebContents* web_contents,
|
| const PermissionRequestID& id,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin,
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin,
|
| const BrowserPermissionCallback& callback) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
|
| + const GURL requesting_url(requesting_origin.Serialize());
|
| + const GURL embedding_url(embedding_origin.Serialize());
|
| +
|
| #if !defined(OS_ANDROID)
|
| PermissionBubbleManager* bubble_manager =
|
| PermissionBubbleManager::FromWebContents(web_contents);
|
| @@ -174,9 +180,10 @@ void PermissionContextBase::DecidePermission(
|
| // prevent crashes. See crbug.com/457091.
|
| if (!bubble_manager)
|
| return;
|
| +
|
| scoped_ptr<PermissionBubbleRequest> request_ptr(
|
| new PermissionBubbleRequestImpl(
|
| - requesting_origin, permission_type_,
|
| + requesting_url, permission_type_,
|
| profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
|
| base::Bind(&PermissionContextBase::PermissionDecided,
|
| weak_factory_.GetWeakPtr(), id, requesting_origin,
|
| @@ -191,7 +198,7 @@ void PermissionContextBase::DecidePermission(
|
| bubble_manager->AddRequest(request);
|
| #else
|
| GetQueueController()->CreateInfoBarRequest(
|
| - id, requesting_origin, embedding_origin,
|
| + id, requesting_url, embedding_url,
|
| base::Bind(&PermissionContextBase::PermissionDecided,
|
| weak_factory_.GetWeakPtr(), id, requesting_origin,
|
| embedding_origin, callback,
|
| @@ -203,24 +210,25 @@ void PermissionContextBase::DecidePermission(
|
|
|
| void PermissionContextBase::PermissionDecided(
|
| const PermissionRequestID& id,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin,
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin,
|
| const BrowserPermissionCallback& callback,
|
| bool persist,
|
| ContentSetting content_setting) {
|
| #if !defined(OS_ANDROID)
|
| // Infobar persistence and its related UMA is tracked on the infobar
|
| // controller directly.
|
| + const GURL requesting_url(requesting_origin.Serialize());
|
| if (persist) {
|
| DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
|
| content_setting == CONTENT_SETTING_BLOCK);
|
| if (content_setting == CONTENT_SETTING_ALLOW)
|
| - PermissionUmaUtil::PermissionGranted(permission_type_, requesting_origin);
|
| + PermissionUmaUtil::PermissionGranted(permission_type_, requesting_url);
|
| else
|
| - PermissionUmaUtil::PermissionDenied(permission_type_, requesting_origin);
|
| + PermissionUmaUtil::PermissionDenied(permission_type_, requesting_url);
|
| } else {
|
| DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT);
|
| - PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_origin);
|
| + PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_url);
|
| }
|
| #endif
|
|
|
| @@ -240,8 +248,8 @@ Profile* PermissionContextBase::profile() const {
|
|
|
| void PermissionContextBase::NotifyPermissionSet(
|
| const PermissionRequestID& id,
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin,
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin,
|
| const BrowserPermissionCallback& callback,
|
| bool persist,
|
| ContentSetting content_setting) {
|
| @@ -269,16 +277,18 @@ void PermissionContextBase::CleanUpBubble(const PermissionRequestID& id) {
|
| }
|
|
|
| void PermissionContextBase::UpdateContentSetting(
|
| - const GURL& requesting_origin,
|
| - const GURL& embedding_origin,
|
| + const url::Origin& requesting_origin,
|
| + const url::Origin& embedding_origin,
|
| ContentSetting content_setting) {
|
| - DCHECK_EQ(requesting_origin, requesting_origin.GetOrigin());
|
| - DCHECK_EQ(embedding_origin, embedding_origin.GetOrigin());
|
| + const GURL requesting_url(requesting_origin.Serialize());
|
| + const GURL embedding_url(embedding_origin.Serialize());
|
| + DCHECK_EQ(requesting_origin, url::Origin(requesting_url));
|
| + DCHECK_EQ(embedding_origin, url::Origin(embedding_url));
|
| DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
|
| content_setting == CONTENT_SETTING_BLOCK);
|
|
|
| HostContentSettingsMapFactory::GetForProfile(profile_)
|
| - ->SetContentSettingDefaultScope(requesting_origin, embedding_origin,
|
| + ->SetContentSettingDefaultScope(requesting_url, embedding_url,
|
| content_settings_type_, std::string(),
|
| content_setting);
|
| }
|
|
|