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() {
return requests_;
}
GURL TestPermissionBubbleViewDelegate::GetRequestingOrigin() const {
return requests_.front()->GetOrigin();
}
GURL TestPermissionBubbleViewDelegate::GetEmbeddingOrigin() const {
return GURL("https://embedder.example.com");
}
......
......@@ -13,6 +13,7 @@
#include "chrome/browser/extensions/extension_browsertest.h"
#include "components/permissions/permission_prompt.h"
#include "ui/base/test/scoped_fake_nswindow_fullscreen.h"
#include "url/gurl.h"
namespace base {
class CommandLine;
......@@ -34,6 +35,8 @@ class TestPermissionBubbleViewDelegate
const std::vector<permissions::PermissionRequest*>& Requests() override;
GURL GetRequestingOrigin() const override;
GURL GetEmbeddingOrigin() const override;
void Accept() override {}
......
......@@ -262,7 +262,7 @@ void PermissionPromptBubbleView::ButtonPressed(views::Button* sender,
PermissionPromptBubbleView::DisplayNameOrOrigin
PermissionPromptBubbleView::GetDisplayNameOrOrigin() const {
DCHECK(!visible_requests_.empty());
GURL origin_url = visible_requests_[0]->GetOrigin();
GURL origin_url = delegate_->GetRequestingOrigin();
if (origin_url.SchemeIs(extensions::kExtensionScheme)) {
base::string16 extension_name =
......@@ -295,7 +295,7 @@ base::Optional<base::string16> PermissionPromptBubbleView::GetExtraText()
return l10n_util::GetStringFUTF16(
IDS_STORAGE_ACCESS_PERMISSION_EXPLANATION,
url_formatter::FormatUrlForSecurityDisplay(
visible_requests_[0]->GetOrigin(),
delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC),
url_formatter::FormatUrlForSecurityDisplay(
delegate_->GetEmbeddingOrigin(),
......
......@@ -8,6 +8,7 @@
#include "components/permissions/permission_util.h"
#include "components/permissions/test/mock_permission_request.h"
#include "ui/base/l10n/l10n_util.h"
#include "url/gurl.h"
using PermissionPromptBubbleViewTest = ChromeViewsTestBase;
......@@ -44,6 +45,10 @@ class TestDelegate : public permissions::PermissionPrompt::Delegate {
return raw_requests_;
}
GURL GetRequestingOrigin() const override {
return raw_requests_.front()->GetOrigin();
}
GURL GetEmbeddingOrigin() const override {
return GURL("https://embedder.example.com");
}
......
......@@ -131,7 +131,6 @@ static bool IsValidARCameraAccessRequestGroup(
static void CheckValidRequestGroup(
const std::vector<permissions::PermissionRequest*>& requests) {
DCHECK_EQ(static_cast<size_t>(2u), requests.size());
DCHECK_EQ(requests[0]->GetOrigin(), requests[1]->GetOrigin());
DCHECK((IsValidMediaRequestGroup(requests)) ||
(IsValidARCameraAccessRequestGroup(requests)));
}
......@@ -154,7 +153,7 @@ base::string16 PermissionPromptAndroid::GetMessageText() const {
return l10n_util::GetStringFUTF16(
IDS_STORAGE_ACCESS_INFOBAR_TEXT,
url_formatter::FormatUrlForSecurityDisplay(
requests[0]->GetOrigin(),
delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC),
url_formatter::FormatUrlForSecurityDisplay(
delegate_->GetEmbeddingOrigin(),
......@@ -168,13 +167,13 @@ base::string16 PermissionPromptAndroid::GetMessageText() const {
return l10n_util::GetStringFUTF16(
IDS_AR_AND_MEDIA_CAPTURE_VIDEO_INFOBAR_TEXT,
url_formatter::FormatUrlForSecurityDisplay(
requests[0]->GetOrigin(),
delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC));
} else {
return l10n_util::GetStringFUTF16(
IDS_MEDIA_CAPTURE_AUDIO_AND_VIDEO_INFOBAR_TEXT,
url_formatter::FormatUrlForSecurityDisplay(
requests[0]->GetOrigin(),
delegate_->GetRequestingOrigin(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC));
}
}
......
......@@ -58,9 +58,9 @@ class PermissionPromptAndroid : public permissions::PermissionPrompt,
// PermissionPromptAndroid is owned by PermissionRequestManager, so it should
// be safe to hold a raw WebContents pointer here because this class is
// destroyed before the WebContents.
content::WebContents* web_contents_;
content::WebContents* const web_contents_;
// |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
// format. Never assume that this pointer is currently alive.
......
......@@ -51,6 +51,9 @@ class PermissionPrompt {
// deleted upon navigation and so on.
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
// associated with the requests.
virtual GURL GetEmbeddingOrigin() const = 0;
......
......@@ -33,6 +33,7 @@
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace permissions {
......@@ -349,6 +350,16 @@ const std::vector<PermissionRequest*>& PermissionRequestManager::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 {
return web_contents()->GetLastCommittedURL().GetOrigin();
}
......@@ -491,6 +502,7 @@ void PermissionRequestManager::ShowBubble() {
if (!IsRequestInProgress())
return;
DCHECK(!requests_.empty());
DCHECK(!view_);
DCHECK(web_contents()->IsDocumentOnLoadCompletedInMainFrame());
DCHECK(current_request_ui_to_use_);
......
......@@ -18,6 +18,8 @@
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
class GURL;
namespace content {
class RenderFrameHost;
}
......@@ -130,6 +132,7 @@ class PermissionRequestManager
// PermissionPrompt::Delegate:
const std::vector<PermissionRequest*>& Requests() override;
GURL GetRequestingOrigin() const override;
GURL GetEmbeddingOrigin() const override;
void Accept() 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