Commit 506d21d4 authored by Bret Sepulveda's avatar Bret Sepulveda Committed by Commit Bot

Change permission UI to get origin via delegate instead of request.

This removes part of permission prompts' dependency on
PermissionRequest, with the goal of eventually moving the latter's
functionality into the UI layer.

Bug: 1110905
Change-Id: Icf53d3774c7415453c2266a0db07622483e7b197
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2367836
Commit-Queue: Bret Sepulveda <bsep@chromium.org>
Reviewed-by: default avatarOlesia Marukhno <olesiamarukhno@google.com>
Reviewed-by: default avatarBalazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815091}
parent febb8a68
...@@ -29,6 +29,10 @@ TestPermissionBubbleViewDelegate::Requests() { ...@@ -29,6 +29,10 @@ TestPermissionBubbleViewDelegate::Requests() {
return requests_; return requests_;
} }
GURL TestPermissionBubbleViewDelegate::GetRequestingOrigin() const {
return requests_.front()->GetOrigin();
}
GURL TestPermissionBubbleViewDelegate::GetEmbeddingOrigin() const { GURL TestPermissionBubbleViewDelegate::GetEmbeddingOrigin() const {
return GURL("https://embedder.example.com"); return GURL("https://embedder.example.com");
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_browsertest.h"
#include "components/permissions/permission_prompt.h" #include "components/permissions/permission_prompt.h"
#include "ui/base/test/scoped_fake_nswindow_fullscreen.h" #include "ui/base/test/scoped_fake_nswindow_fullscreen.h"
#include "url/gurl.h"
namespace base { namespace base {
class CommandLine; class CommandLine;
...@@ -34,6 +35,8 @@ class TestPermissionBubbleViewDelegate ...@@ -34,6 +35,8 @@ class TestPermissionBubbleViewDelegate
const std::vector<permissions::PermissionRequest*>& Requests() override; const std::vector<permissions::PermissionRequest*>& Requests() override;
GURL GetRequestingOrigin() const override;
GURL GetEmbeddingOrigin() const override; GURL GetEmbeddingOrigin() const override;
void Accept() override {} void Accept() override {}
......
...@@ -262,7 +262,7 @@ void PermissionPromptBubbleView::ButtonPressed(views::Button* sender, ...@@ -262,7 +262,7 @@ void PermissionPromptBubbleView::ButtonPressed(views::Button* sender,
PermissionPromptBubbleView::DisplayNameOrOrigin PermissionPromptBubbleView::DisplayNameOrOrigin
PermissionPromptBubbleView::GetDisplayNameOrOrigin() const { PermissionPromptBubbleView::GetDisplayNameOrOrigin() const {
DCHECK(!visible_requests_.empty()); DCHECK(!visible_requests_.empty());
GURL origin_url = visible_requests_[0]->GetOrigin(); GURL origin_url = delegate_->GetRequestingOrigin();
if (origin_url.SchemeIs(extensions::kExtensionScheme)) { if (origin_url.SchemeIs(extensions::kExtensionScheme)) {
base::string16 extension_name = base::string16 extension_name =
...@@ -295,7 +295,7 @@ base::Optional<base::string16> PermissionPromptBubbleView::GetExtraText() ...@@ -295,7 +295,7 @@ base::Optional<base::string16> PermissionPromptBubbleView::GetExtraText()
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_STORAGE_ACCESS_PERMISSION_EXPLANATION, IDS_STORAGE_ACCESS_PERMISSION_EXPLANATION,
url_formatter::FormatUrlForSecurityDisplay( url_formatter::FormatUrlForSecurityDisplay(
visible_requests_[0]->GetOrigin(), delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC), url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC),
url_formatter::FormatUrlForSecurityDisplay( url_formatter::FormatUrlForSecurityDisplay(
delegate_->GetEmbeddingOrigin(), delegate_->GetEmbeddingOrigin(),
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "components/permissions/permission_util.h" #include "components/permissions/permission_util.h"
#include "components/permissions/test/mock_permission_request.h" #include "components/permissions/test/mock_permission_request.h"
#include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util.h"
#include "url/gurl.h"
using PermissionPromptBubbleViewTest = ChromeViewsTestBase; using PermissionPromptBubbleViewTest = ChromeViewsTestBase;
...@@ -44,6 +45,10 @@ class TestDelegate : public permissions::PermissionPrompt::Delegate { ...@@ -44,6 +45,10 @@ class TestDelegate : public permissions::PermissionPrompt::Delegate {
return raw_requests_; return raw_requests_;
} }
GURL GetRequestingOrigin() const override {
return raw_requests_.front()->GetOrigin();
}
GURL GetEmbeddingOrigin() const override { GURL GetEmbeddingOrigin() const override {
return GURL("https://embedder.example.com"); return GURL("https://embedder.example.com");
} }
......
...@@ -131,7 +131,6 @@ static bool IsValidARCameraAccessRequestGroup( ...@@ -131,7 +131,6 @@ static bool IsValidARCameraAccessRequestGroup(
static void CheckValidRequestGroup( static void CheckValidRequestGroup(
const std::vector<permissions::PermissionRequest*>& requests) { const std::vector<permissions::PermissionRequest*>& requests) {
DCHECK_EQ(static_cast<size_t>(2u), requests.size()); DCHECK_EQ(static_cast<size_t>(2u), requests.size());
DCHECK_EQ(requests[0]->GetOrigin(), requests[1]->GetOrigin());
DCHECK((IsValidMediaRequestGroup(requests)) || DCHECK((IsValidMediaRequestGroup(requests)) ||
(IsValidARCameraAccessRequestGroup(requests))); (IsValidARCameraAccessRequestGroup(requests)));
} }
...@@ -154,7 +153,7 @@ base::string16 PermissionPromptAndroid::GetMessageText() const { ...@@ -154,7 +153,7 @@ base::string16 PermissionPromptAndroid::GetMessageText() const {
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_STORAGE_ACCESS_INFOBAR_TEXT, IDS_STORAGE_ACCESS_INFOBAR_TEXT,
url_formatter::FormatUrlForSecurityDisplay( url_formatter::FormatUrlForSecurityDisplay(
requests[0]->GetOrigin(), delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC), url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC),
url_formatter::FormatUrlForSecurityDisplay( url_formatter::FormatUrlForSecurityDisplay(
delegate_->GetEmbeddingOrigin(), delegate_->GetEmbeddingOrigin(),
...@@ -168,13 +167,13 @@ base::string16 PermissionPromptAndroid::GetMessageText() const { ...@@ -168,13 +167,13 @@ base::string16 PermissionPromptAndroid::GetMessageText() const {
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_AR_AND_MEDIA_CAPTURE_VIDEO_INFOBAR_TEXT, IDS_AR_AND_MEDIA_CAPTURE_VIDEO_INFOBAR_TEXT,
url_formatter::FormatUrlForSecurityDisplay( url_formatter::FormatUrlForSecurityDisplay(
requests[0]->GetOrigin(), delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC)); url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC));
} else { } else {
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_MEDIA_CAPTURE_AUDIO_AND_VIDEO_INFOBAR_TEXT, IDS_MEDIA_CAPTURE_AUDIO_AND_VIDEO_INFOBAR_TEXT,
url_formatter::FormatUrlForSecurityDisplay( url_formatter::FormatUrlForSecurityDisplay(
requests[0]->GetOrigin(), delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC)); url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC));
} }
} }
......
...@@ -58,9 +58,9 @@ class PermissionPromptAndroid : public permissions::PermissionPrompt, ...@@ -58,9 +58,9 @@ class PermissionPromptAndroid : public permissions::PermissionPrompt,
// PermissionPromptAndroid is owned by PermissionRequestManager, so it should // PermissionPromptAndroid is owned by PermissionRequestManager, so it should
// be safe to hold a raw WebContents pointer here because this class is // be safe to hold a raw WebContents pointer here because this class is
// destroyed before the WebContents. // destroyed before the WebContents.
content::WebContents* web_contents_; content::WebContents* const web_contents_;
// |delegate_| is the PermissionRequestManager, which owns this object. // |delegate_| is the PermissionRequestManager, which owns this object.
Delegate* delegate_; Delegate* const delegate_;
// The infobar used to display the permission request, if displayed in that // The infobar used to display the permission request, if displayed in that
// format. Never assume that this pointer is currently alive. // format. Never assume that this pointer is currently alive.
......
...@@ -51,6 +51,9 @@ class PermissionPrompt { ...@@ -51,6 +51,9 @@ class PermissionPrompt {
// deleted upon navigation and so on. // deleted upon navigation and so on.
virtual const std::vector<PermissionRequest*>& Requests() = 0; virtual const std::vector<PermissionRequest*>& Requests() = 0;
// Get the single origin for the current set of requests.
virtual GURL GetRequestingOrigin() const = 0;
// Get the top-level origin currently displayed in the address bar // Get the top-level origin currently displayed in the address bar
// associated with the requests. // associated with the requests.
virtual GURL GetEmbeddingOrigin() const = 0; virtual GURL GetEmbeddingOrigin() const = 0;
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "url/gurl.h"
#include "url/origin.h" #include "url/origin.h"
namespace permissions { namespace permissions {
...@@ -349,6 +350,16 @@ const std::vector<PermissionRequest*>& PermissionRequestManager::Requests() { ...@@ -349,6 +350,16 @@ const std::vector<PermissionRequest*>& PermissionRequestManager::Requests() {
return requests_; return requests_;
} }
GURL PermissionRequestManager::GetRequestingOrigin() const {
CHECK(!requests_.empty());
GURL origin = requests_.front()->GetOrigin();
if (DCHECK_IS_ON()) {
for (auto* request : requests_)
DCHECK_EQ(origin, request->GetOrigin());
}
return origin;
}
GURL PermissionRequestManager::GetEmbeddingOrigin() const { GURL PermissionRequestManager::GetEmbeddingOrigin() const {
return web_contents()->GetLastCommittedURL().GetOrigin(); return web_contents()->GetLastCommittedURL().GetOrigin();
} }
...@@ -491,6 +502,7 @@ void PermissionRequestManager::ShowBubble() { ...@@ -491,6 +502,7 @@ void PermissionRequestManager::ShowBubble() {
if (!IsRequestInProgress()) if (!IsRequestInProgress())
return; return;
DCHECK(!requests_.empty());
DCHECK(!view_); DCHECK(!view_);
DCHECK(web_contents()->IsDocumentOnLoadCompletedInMainFrame()); DCHECK(web_contents()->IsDocumentOnLoadCompletedInMainFrame());
DCHECK(current_request_ui_to_use_); DCHECK(current_request_ui_to_use_);
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
#include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h" #include "content/public/browser/web_contents_user_data.h"
class GURL;
namespace content { namespace content {
class RenderFrameHost; class RenderFrameHost;
} }
...@@ -130,6 +132,7 @@ class PermissionRequestManager ...@@ -130,6 +132,7 @@ class PermissionRequestManager
// PermissionPrompt::Delegate: // PermissionPrompt::Delegate:
const std::vector<PermissionRequest*>& Requests() override; const std::vector<PermissionRequest*>& Requests() override;
GURL GetRequestingOrigin() const override;
GURL GetEmbeddingOrigin() const override; GURL GetEmbeddingOrigin() const override;
void Accept() override; void Accept() override;
void Deny() override; void Deny() override;
......
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