Commit 4ff42120 authored by Olesia Marukhno's avatar Olesia Marukhno Committed by Commit Bot

Fix permission chip UI in fullscreen mode

If browser is in fullscreen mode, the location bar isn't visible and
chip UI isn't visible too. This CLs implements using bubble UI in
fullscreen mode. It also fixes closing behaviour for permissions that
use bubble UI when chip feature is enabled.

Bug: 1148332
Change-Id: I7a519d0dc892f660c7ced39195338d60b4193d3d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2532577
Commit-Queue: Olesia Marukhno <olesiamarukhno@google.com>
Reviewed-by: default avatarBret Sepulveda <bsep@chromium.org>
Reviewed-by: default avatarBalazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#826958}
parent d8fcc86c
...@@ -3889,6 +3889,7 @@ static_library("ui") { ...@@ -3889,6 +3889,7 @@ static_library("ui") {
"views/permission_bubble/permission_prompt_bubble_view.h", "views/permission_bubble/permission_prompt_bubble_view.h",
"views/permission_bubble/permission_prompt_impl.cc", "views/permission_bubble/permission_prompt_impl.cc",
"views/permission_bubble/permission_prompt_impl.h", "views/permission_bubble/permission_prompt_impl.h",
"views/permission_bubble/permission_prompt_style.h",
"views/profiles/avatar_toolbar_button.cc", "views/profiles/avatar_toolbar_button.cc",
"views/profiles/avatar_toolbar_button.h", "views/profiles/avatar_toolbar_button.h",
"views/profiles/avatar_toolbar_button_delegate.cc", "views/profiles/avatar_toolbar_button_delegate.cc",
......
...@@ -49,8 +49,9 @@ AnchorConfiguration GetPageInfoAnchorConfiguration(Browser* browser, ...@@ -49,8 +49,9 @@ AnchorConfiguration GetPageInfoAnchorConfiguration(Browser* browser,
AnchorConfiguration GetPermissionPromptBubbleAnchorConfiguration( AnchorConfiguration GetPermissionPromptBubbleAnchorConfiguration(
Browser* browser) { Browser* browser) {
if (base::FeatureList::IsEnabled(permissions::features::kPermissionChip)) { BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); if (base::FeatureList::IsEnabled(permissions::features::kPermissionChip) &&
browser_view->GetLocationBarView()->IsDrawn()) {
return {browser_view->GetLocationBarView(), return {browser_view->GetLocationBarView(),
browser_view->GetLocationBarView()->permission_chip()->button(), browser_view->GetLocationBarView()->permission_chip()->button(),
views::BubbleBorder::TOP_LEFT}; views::BubbleBorder::TOP_LEFT};
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/browser/ui/layout_constants.h" #include "chrome/browser/ui/layout_constants.h"
#include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/chrome_layout_provider.h"
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h" #include "chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h"
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_style.h"
#include "components/permissions/permission_request.h" #include "components/permissions/permission_request.h"
#include "components/strings/grit/components_strings.h" #include "components/strings/grit/components_strings.h"
#include "components/vector_icons/vector_icons.h" #include "components/vector_icons/vector_icons.h"
...@@ -198,8 +199,8 @@ void PermissionChip::ChipButtonPressed() { ...@@ -198,8 +199,8 @@ void PermissionChip::ChipButtonPressed() {
// deactivation. // deactivation.
DCHECK(!prompt_bubble_); DCHECK(!prompt_bubble_);
prompt_bubble_ = prompt_bubble_ = new PermissionPromptBubbleView(
new PermissionPromptBubbleView(browser_, delegate_, requested_time_); browser_, delegate_, requested_time_, PermissionPromptStyle::kChip);
prompt_bubble_->Show(); prompt_bubble_->Show();
prompt_bubble_->GetWidget()->AddObserver(this); prompt_bubble_->GetWidget()->AddObserver(this);
// Restart the timer after user clicks on the chip to open the bubble. // Restart the timer after user clicks on the chip to open the bubble.
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include "chrome/browser/ui/views/title_origin_label.h" #include "chrome/browser/ui/views/title_origin_label.h"
#include "chrome/common/url_constants.h" #include "chrome/common/url_constants.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "components/permissions/features.h"
#include "components/permissions/permission_request.h" #include "components/permissions/permission_request.h"
#include "components/strings/grit/components_strings.h" #include "components/strings/grit/components_strings.h"
#include "components/url_formatter/elide_url.h" #include "components/url_formatter/elide_url.h"
...@@ -43,7 +42,8 @@ ...@@ -43,7 +42,8 @@
PermissionPromptBubbleView::PermissionPromptBubbleView( PermissionPromptBubbleView::PermissionPromptBubbleView(
Browser* browser, Browser* browser,
permissions::PermissionPrompt::Delegate* delegate, permissions::PermissionPrompt::Delegate* delegate,
base::TimeTicks permission_requested_time) base::TimeTicks permission_requested_time,
PermissionPromptStyle prompt_style)
: browser_(browser), : browser_(browser),
delegate_(delegate), delegate_(delegate),
visible_requests_(GetVisibleRequests()), visible_requests_(GetVisibleRequests()),
...@@ -67,10 +67,11 @@ PermissionPromptBubbleView::PermissionPromptBubbleView( ...@@ -67,10 +67,11 @@ PermissionPromptBubbleView::PermissionPromptBubbleView(
SetCancelCallback(base::BindOnce(&PermissionPromptBubbleView::DenyPermission, SetCancelCallback(base::BindOnce(&PermissionPromptBubbleView::DenyPermission,
base::Unretained(this))); base::Unretained(this)));
// If the permission chip feature is enabled, the chip is indicating the // If bubble hanging off the padlock icon, with no chip showing, it shouldn't
// pending permission request and so the bubble can be opened and closed // close on deactivate and it should stick until user makes a decision.
// repeatedly. // Otherwise, the chip is indicating the pending permission request and so the
if (!base::FeatureList::IsEnabled(permissions::features::kPermissionChip)) { // bubble can be opened and closed repeatedly.
if (prompt_style == PermissionPromptStyle::kBubbleOnly) {
set_close_on_deactivate(false); set_close_on_deactivate(false);
DialogDelegate::SetCloseCallback( DialogDelegate::SetCloseCallback(
base::BindOnce(&PermissionPromptBubbleView::ClosingPermission, base::BindOnce(&PermissionPromptBubbleView::ClosingPermission,
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/strings/string16.h" #include "base/strings/string16.h"
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_style.h"
#include "components/permissions/permission_prompt.h" #include "components/permissions/permission_prompt.h"
#include "ui/views/bubble/bubble_dialog_delegate_view.h" #include "ui/views/bubble/bubble_dialog_delegate_view.h"
...@@ -18,7 +19,8 @@ class PermissionPromptBubbleView : public views::BubbleDialogDelegateView { ...@@ -18,7 +19,8 @@ class PermissionPromptBubbleView : public views::BubbleDialogDelegateView {
public: public:
PermissionPromptBubbleView(Browser* browser, PermissionPromptBubbleView(Browser* browser,
permissions::PermissionPrompt::Delegate* delegate, permissions::PermissionPrompt::Delegate* delegate,
base::TimeTicks permission_requested_time); base::TimeTicks permission_requested_time,
PermissionPromptStyle prompt_style);
~PermissionPromptBubbleView() override; ~PermissionPromptBubbleView() override;
void Show(); void Show();
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h" #include "chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h"
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_style.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "chrome/test/views/chrome_views_test_base.h" #include "chrome/test/views/chrome_views_test_base.h"
#include "components/permissions/permission_util.h" #include "components/permissions/permission_util.h"
...@@ -67,7 +68,8 @@ class TestDelegate : public permissions::PermissionPrompt::Delegate { ...@@ -67,7 +68,8 @@ class TestDelegate : public permissions::PermissionPrompt::Delegate {
TEST_F(PermissionPromptBubbleViewTest, AccessibleTitleMentionsPermissions) { TEST_F(PermissionPromptBubbleViewTest, AccessibleTitleMentionsPermissions) {
TestDelegate delegate(GURL("https://test.origin"), {"foo", "bar"}); TestDelegate delegate(GURL("https://test.origin"), {"foo", "bar"});
auto bubble = std::make_unique<PermissionPromptBubbleView>( auto bubble = std::make_unique<PermissionPromptBubbleView>(
nullptr, &delegate, base::TimeTicks::Now()); nullptr, &delegate, base::TimeTicks::Now(),
PermissionPromptStyle::kBubbleOnly);
EXPECT_PRED_FORMAT2(::testing::IsSubstring, "foo", EXPECT_PRED_FORMAT2(::testing::IsSubstring, "foo",
base::UTF16ToUTF8(bubble->GetAccessibleWindowTitle())); base::UTF16ToUTF8(bubble->GetAccessibleWindowTitle()));
...@@ -78,7 +80,8 @@ TEST_F(PermissionPromptBubbleViewTest, AccessibleTitleMentionsPermissions) { ...@@ -78,7 +80,8 @@ TEST_F(PermissionPromptBubbleViewTest, AccessibleTitleMentionsPermissions) {
TEST_F(PermissionPromptBubbleViewTest, AccessibleTitleMentionsOrigin) { TEST_F(PermissionPromptBubbleViewTest, AccessibleTitleMentionsOrigin) {
TestDelegate delegate(GURL("https://test.origin"), {"foo", "bar"}); TestDelegate delegate(GURL("https://test.origin"), {"foo", "bar"});
auto bubble = std::make_unique<PermissionPromptBubbleView>( auto bubble = std::make_unique<PermissionPromptBubbleView>(
nullptr, &delegate, base::TimeTicks::Now()); nullptr, &delegate, base::TimeTicks::Now(),
PermissionPromptStyle::kBubbleOnly);
// Note that the scheme is not usually included. // Note that the scheme is not usually included.
EXPECT_PRED_FORMAT2(::testing::IsSubstring, "test.origin", EXPECT_PRED_FORMAT2(::testing::IsSubstring, "test.origin",
...@@ -90,7 +93,8 @@ TEST_F(PermissionPromptBubbleViewTest, ...@@ -90,7 +93,8 @@ TEST_F(PermissionPromptBubbleViewTest,
TestDelegate delegate(GURL("https://test.origin"), TestDelegate delegate(GURL("https://test.origin"),
{"foo", "bar", "baz", "quxx"}); {"foo", "bar", "baz", "quxx"});
auto bubble = std::make_unique<PermissionPromptBubbleView>( auto bubble = std::make_unique<PermissionPromptBubbleView>(
nullptr, &delegate, base::TimeTicks::Now()); nullptr, &delegate, base::TimeTicks::Now(),
PermissionPromptStyle::kBubbleOnly);
const auto title = base::UTF16ToUTF8(bubble->GetAccessibleWindowTitle()); const auto title = base::UTF16ToUTF8(bubble->GetAccessibleWindowTitle());
EXPECT_PRED_FORMAT2(::testing::IsSubstring, "foo", title); EXPECT_PRED_FORMAT2(::testing::IsSubstring, "foo", title);
...@@ -103,7 +107,8 @@ TEST_F(PermissionPromptBubbleViewTest, ...@@ -103,7 +107,8 @@ TEST_F(PermissionPromptBubbleViewTest,
AccessibleTitleFileSchemeMentionsThisFile) { AccessibleTitleFileSchemeMentionsThisFile) {
TestDelegate delegate(GURL("file:///tmp/index.html"), {"foo", "bar"}); TestDelegate delegate(GURL("file:///tmp/index.html"), {"foo", "bar"});
auto bubble = std::make_unique<PermissionPromptBubbleView>( auto bubble = std::make_unique<PermissionPromptBubbleView>(
nullptr, &delegate, base::TimeTicks::Now()); nullptr, &delegate, base::TimeTicks::Now(),
PermissionPromptStyle::kBubbleOnly);
EXPECT_PRED_FORMAT2(::testing::IsSubstring, EXPECT_PRED_FORMAT2(::testing::IsSubstring,
base::UTF16ToUTF8(l10n_util::GetStringUTF16( base::UTF16ToUTF8(l10n_util::GetStringUTF16(
...@@ -117,7 +122,8 @@ TEST_F(PermissionPromptBubbleViewTest, ...@@ -117,7 +122,8 @@ TEST_F(PermissionPromptBubbleViewTest,
ContentSettingsType::MEDIASTREAM_CAMERA, ContentSettingsType::MEDIASTREAM_CAMERA,
ContentSettingsType::CAMERA_PAN_TILT_ZOOM}); ContentSettingsType::CAMERA_PAN_TILT_ZOOM});
auto bubble = std::make_unique<PermissionPromptBubbleView>( auto bubble = std::make_unique<PermissionPromptBubbleView>(
nullptr, &delegate, base::TimeTicks::Now()); nullptr, &delegate, base::TimeTicks::Now(),
PermissionPromptStyle::kBubbleOnly);
const auto title = base::UTF16ToUTF8(bubble->GetAccessibleWindowTitle()); const auto title = base::UTF16ToUTF8(bubble->GetAccessibleWindowTitle());
EXPECT_PRED_FORMAT2(::testing::IsSubstring, "AudioCapture", title); EXPECT_PRED_FORMAT2(::testing::IsSubstring, "AudioCapture", title);
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include <memory> #include <memory>
#include "chrome/browser/content_settings/chrome_content_settings_utils.h" #include "chrome/browser/content_settings/chrome_content_settings_utils.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/permission_bubble/permission_prompt.h" #include "chrome/browser/ui/permission_bubble/permission_prompt.h"
#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/browser_view.h"
...@@ -20,15 +19,6 @@ ...@@ -20,15 +19,6 @@
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/bubble/bubble_frame_view.h"
enum class PermissionPromptImpl::PromptStyle {
// The permission prompt bubble is shown directly.
kBubble,
// The permission chip view in the location bar.
kChip,
// The prompt as an indicator in the right side of the omnibox.
kQuiet
};
std::unique_ptr<permissions::PermissionPrompt> CreatePermissionPrompt( std::unique_ptr<permissions::PermissionPrompt> CreatePermissionPrompt(
content::WebContents* web_contents, content::WebContents* web_contents,
permissions::PermissionPrompt::Delegate* delegate) { permissions::PermissionPrompt::Delegate* delegate) {
...@@ -45,30 +35,30 @@ std::unique_ptr<permissions::PermissionPrompt> CreatePermissionPrompt( ...@@ -45,30 +35,30 @@ std::unique_ptr<permissions::PermissionPrompt> CreatePermissionPrompt(
PermissionPromptImpl::PermissionPromptImpl(Browser* browser, PermissionPromptImpl::PermissionPromptImpl(Browser* browser,
content::WebContents* web_contents, content::WebContents* web_contents,
Delegate* delegate) Delegate* delegate)
: prompt_bubble_(nullptr), web_contents_(web_contents) { : prompt_bubble_(nullptr),
web_contents_(web_contents),
delegate_(delegate),
browser_(browser) {
permissions::PermissionRequestManager* manager = permissions::PermissionRequestManager* manager =
permissions::PermissionRequestManager::FromWebContents(web_contents_); permissions::PermissionRequestManager::FromWebContents(web_contents_);
if (manager->ShouldCurrentRequestUseQuietUI()) { if (manager->ShouldCurrentRequestUseQuietUI()) {
prompt_style_ = PromptStyle::kQuiet; prompt_style_ = PermissionPromptStyle::kQuiet;
// Shows the prompt as an indicator in the right side of the omnibox. // Shows the prompt as an indicator in the right side of the omnibox.
content_settings::UpdateLocationBarUiForWebContents(web_contents_); content_settings::UpdateLocationBarUiForWebContents(web_contents_);
} else { } else {
LocationBarView* lbv = GetLocationBarView(); LocationBarView* lbv = GetLocationBarView();
std::vector<permissions::PermissionRequest*> requests = std::vector<permissions::PermissionRequest*> requests =
delegate->Requests(); delegate->Requests();
const bool should_use_chip_ui = std::all_of(
requests.begin(), requests.end(),
[](auto* request) { return request->GetChipText().has_value(); });
if (base::FeatureList::IsEnabled(permissions::features::kPermissionChip) && if (base::FeatureList::IsEnabled(permissions::features::kPermissionChip) &&
lbv && std::all_of(requests.begin(), requests.end(), [](auto* request) { lbv && lbv->IsDrawn() && should_use_chip_ui) {
return request->GetChipText().has_value();
})) {
permission_chip_ = lbv->permission_chip(); permission_chip_ = lbv->permission_chip();
permission_chip_->Show(delegate); permission_chip_->Show(delegate);
prompt_style_ = PromptStyle::kChip; prompt_style_ = PermissionPromptStyle::kChip;
} else { } else {
prompt_bubble_ = new PermissionPromptBubbleView(browser, delegate, ShowBubble();
base::TimeTicks::Now());
prompt_bubble_->Show();
prompt_bubble_->GetWidget()->AddObserver(this);
prompt_style_ = PromptStyle::kBubble;
} }
} }
} }
...@@ -83,31 +73,37 @@ PermissionPromptImpl::~PermissionPromptImpl() { ...@@ -83,31 +73,37 @@ PermissionPromptImpl::~PermissionPromptImpl() {
if (prompt_bubble_) if (prompt_bubble_)
prompt_bubble_->GetWidget()->Close(); prompt_bubble_->GetWidget()->Close();
if (prompt_style_ == PromptStyle::kQuiet) { if (prompt_style_ == PermissionPromptStyle::kQuiet) {
// Hides the quiet prompt. // Hides the quiet prompt.
content_settings::UpdateLocationBarUiForWebContents(web_contents_); content_settings::UpdateLocationBarUiForWebContents(web_contents_);
} }
if (prompt_style_ == PromptStyle::kChip && permission_chip_) { if (prompt_style_ == PermissionPromptStyle::kChip && permission_chip_) {
permission_chip_->Hide(); permission_chip_->Hide();
} }
CHECK(!IsInObserverList()); CHECK(!IsInObserverList());
} }
void PermissionPromptImpl::UpdateAnchorPosition() { void PermissionPromptImpl::UpdateAnchorPosition() {
// TODO(olesiamarukhno): Figure out if we need to switch UI styles (chip to
// bubble and vice versa) here.
if (prompt_bubble_) if (prompt_bubble_)
prompt_bubble_->UpdateAnchorPosition(); prompt_bubble_->UpdateAnchorPosition();
} }
LocationBarView* PermissionPromptImpl::GetLocationBarView() { LocationBarView* PermissionPromptImpl::GetLocationBarView() {
Browser* browser = chrome::FindBrowserWithWebContents(web_contents_); BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_);
if (!browser)
return nullptr;
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
return browser_view ? browser_view->GetLocationBarView() : nullptr; return browser_view ? browser_view->GetLocationBarView() : nullptr;
} }
void PermissionPromptImpl::ShowBubble() {
prompt_style_ = PermissionPromptStyle::kBubbleOnly;
prompt_bubble_ = new PermissionPromptBubbleView(
browser_, delegate_, base::TimeTicks::Now(), prompt_style_);
prompt_bubble_->Show();
prompt_bubble_->GetWidget()->AddObserver(this);
}
permissions::PermissionPrompt::TabSwitchingBehavior permissions::PermissionPrompt::TabSwitchingBehavior
PermissionPromptImpl::GetTabSwitchingBehavior() { PermissionPromptImpl::GetTabSwitchingBehavior() {
return permissions::PermissionPrompt::TabSwitchingBehavior:: return permissions::PermissionPrompt::TabSwitchingBehavior::
...@@ -117,11 +113,11 @@ PermissionPromptImpl::GetTabSwitchingBehavior() { ...@@ -117,11 +113,11 @@ PermissionPromptImpl::GetTabSwitchingBehavior() {
permissions::PermissionPromptDisposition permissions::PermissionPromptDisposition
PermissionPromptImpl::GetPromptDisposition() const { PermissionPromptImpl::GetPromptDisposition() const {
switch (prompt_style_) { switch (prompt_style_) {
case PromptStyle::kBubble: case PermissionPromptStyle::kBubbleOnly:
return permissions::PermissionPromptDisposition::ANCHORED_BUBBLE; return permissions::PermissionPromptDisposition::ANCHORED_BUBBLE;
case PromptStyle::kChip: case PermissionPromptStyle::kChip:
return permissions::PermissionPromptDisposition::LOCATION_BAR_LEFT_CHIP; return permissions::PermissionPromptDisposition::LOCATION_BAR_LEFT_CHIP;
case PromptStyle::kQuiet: { case PermissionPromptStyle::kQuiet: {
permissions::PermissionRequestManager* manager = permissions::PermissionRequestManager* manager =
permissions::PermissionRequestManager::FromWebContents(web_contents_); permissions::PermissionRequestManager::FromWebContents(web_contents_);
return permissions::NotificationPermissionUiSelector:: return permissions::NotificationPermissionUiSelector::
......
...@@ -6,7 +6,9 @@ ...@@ -6,7 +6,9 @@
#define CHROME_BROWSER_UI_VIEWS_PERMISSION_BUBBLE_PERMISSION_PROMPT_IMPL_H_ #define CHROME_BROWSER_UI_VIEWS_PERMISSION_BUBBLE_PERMISSION_PROMPT_IMPL_H_
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/views/location_bar/location_bar_view.h" #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_style.h"
#include "components/permissions/permission_prompt.h" #include "components/permissions/permission_prompt.h"
class Browser; class Browser;
...@@ -41,10 +43,10 @@ class PermissionPromptImpl : public permissions::PermissionPrompt, ...@@ -41,10 +43,10 @@ class PermissionPromptImpl : public permissions::PermissionPrompt,
void OnWidgetClosing(views::Widget* widget) override; void OnWidgetClosing(views::Widget* widget) override;
private: private:
enum class PromptStyle;
LocationBarView* GetLocationBarView(); LocationBarView* GetLocationBarView();
void ShowBubble();
// The popup bubble. Not owned by this class; it will delete itself when a // The popup bubble. Not owned by this class; it will delete itself when a
// decision is made. // decision is made.
PermissionPromptBubbleView* prompt_bubble_; PermissionPromptBubbleView* prompt_bubble_;
...@@ -52,10 +54,14 @@ class PermissionPromptImpl : public permissions::PermissionPrompt, ...@@ -52,10 +54,14 @@ class PermissionPromptImpl : public permissions::PermissionPrompt,
// The web contents whose location bar should show the quiet prompt. // The web contents whose location bar should show the quiet prompt.
content::WebContents* web_contents_; content::WebContents* web_contents_;
PromptStyle prompt_style_; PermissionPromptStyle prompt_style_;
PermissionChip* permission_chip_ = nullptr; PermissionChip* permission_chip_ = nullptr;
permissions::PermissionPrompt::Delegate* const delegate_;
Browser* const browser_;
DISALLOW_COPY_AND_ASSIGN(PermissionPromptImpl); DISALLOW_COPY_AND_ASSIGN(PermissionPromptImpl);
}; };
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_VIEWS_PERMISSION_BUBBLE_PERMISSION_PROMPT_STYLE_H_
#define CHROME_BROWSER_UI_VIEWS_PERMISSION_BUBBLE_PERMISSION_PROMPT_STYLE_H_
// Represents permission prompt UI styles on desktop.
enum class PermissionPromptStyle {
// The permission prompt bubble is shown directly.
kBubbleOnly,
// The permission chip view in the location bar.
kChip,
// The prompt as an indicator in the right side of the omnibox.
kQuiet
};
#endif // CHROME_BROWSER_UI_VIEWS_PERMISSION_BUBBLE_PERMISSION_PROMPT_STYLE_H_
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