Commit febd5685 authored by Olesia Marukhno's avatar Olesia Marukhno Committed by Commit Bot

Add browser test for permision prompt.

Previous cl was reverted because of: New tests are failing on Mac,
see e.g.:
https://ci.chromium.org/p/chromium/builders/ci/Mac10.11%20Tests/51174
All failing bots:
https://ci.chromium.org/p/chromium/builders/ci/Mac10.11%20Tests
https://ci.chromium.org/p/chromium/builders/ci/Mac10.12%20Tests
https://ci.chromium.org/p/chromium/builders/ci/Mac10.14%20Tests

Fix tests failing on mac by removing unnecessary check of if browser
is active.

Bug: 1019129
Change-Id: Ibbb2b64e84f688bfdce873fb8990525a73786516
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2236481Reviewed-by: default avatarBret Sepulveda <bsep@chromium.org>
Commit-Queue: Olesia Marukhno <olesiamarukhno@google.com>
Cr-Commit-Position: refs/heads/master@{#776912}
parent b09ea699
// 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.
#include "base/run_loop.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
#include "chrome/browser/ui/views/location_bar/permission_chip.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/test/base/ui_test_utils.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#include "content/public/test/browser_test.h"
class PermissionChipBrowserTest : public UiBrowserTest {
public:
PermissionChipBrowserTest() {
feature_list_.InitAndEnableFeature(features::kPermissionChip);
}
PermissionChipBrowserTest(const PermissionChipBrowserTest&) = delete;
PermissionChipBrowserTest& operator=(const PermissionChipBrowserTest&) =
delete;
// UiBrowserTest:
void ShowUi(const std::string& name) override {
std::unique_ptr<test::PermissionRequestManagerTestApi> test_api_ =
std::make_unique<test::PermissionRequestManagerTestApi>(browser());
EXPECT_TRUE(test_api_->manager());
test_api_->AddSimpleRequest(ContentSettingsType::GEOLOCATION);
base::RunLoop().RunUntilIdle();
}
bool VerifyUi() override {
BrowserView* browser_view =
BrowserView::GetBrowserViewForBrowser(browser());
PermissionChip* permission_chip =
browser_view->toolbar()->location_bar()->permission_chip();
return permission_chip && permission_chip->GetVisible();
}
void WaitForUserDismissal() override {
// Consider closing the browser to be dismissal.
ui_test_utils::WaitForBrowserToClose();
}
private:
base::test::ScopedFeatureList feature_list_;
};
IN_PROC_BROWSER_TEST_F(PermissionChipBrowserTest, InvokeUi_geolocation) {
ShowAndVerifyUi();
}
// 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.
#include "base/run_loop.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
#include "chrome/browser/ui/views/location_bar/permission_chip.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#include "content/public/test/browser_test.h"
#include "ui/events/base_event_utils.h"
class PermissionChipPromptBrowserTest : public DialogBrowserTest {
public:
PermissionChipPromptBrowserTest() {
feature_list_.InitAndEnableFeature(features::kPermissionChip);
}
PermissionChipPromptBrowserTest(const PermissionChipPromptBrowserTest&) =
delete;
PermissionChipPromptBrowserTest& operator=(
const PermissionChipPromptBrowserTest&) = delete;
// DialogBrowserTest:
void ShowUi(const std::string& name) override {
std::unique_ptr<test::PermissionRequestManagerTestApi> test_api_ =
std::make_unique<test::PermissionRequestManagerTestApi>(browser());
EXPECT_TRUE(test_api_->manager());
test_api_->AddSimpleRequest(ContentSettingsType::GEOLOCATION);
base::RunLoop().RunUntilIdle();
BrowserView* browser_view =
BrowserView::GetBrowserViewForBrowser(browser());
PermissionChip* permission_chip =
browser_view->toolbar()->location_bar()->permission_chip();
ASSERT_TRUE(permission_chip);
permission_chip->ButtonPressed(
permission_chip->button(),
ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, 0));
}
private:
base::test::ScopedFeatureList feature_list_;
};
IN_PROC_BROWSER_TEST_F(PermissionChipPromptBrowserTest, InvokeUi_geolocation) {
ShowAndVerifyUi();
}
// 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.
#include "base/run_loop.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#include "content/public/test/browser_test.h"
class PermissionPromptBubbleViewBrowserTest : public DialogBrowserTest {
public:
PermissionPromptBubbleViewBrowserTest() = default;
PermissionPromptBubbleViewBrowserTest(
const PermissionPromptBubbleViewBrowserTest&) = delete;
PermissionPromptBubbleViewBrowserTest& operator=(
const PermissionPromptBubbleViewBrowserTest&) = delete;
// DialogBrowserTest:
void ShowUi(const std::string& name) override {
std::unique_ptr<test::PermissionRequestManagerTestApi> test_api_ =
std::make_unique<test::PermissionRequestManagerTestApi>(browser());
EXPECT_TRUE(test_api_->manager());
test_api_->AddSimpleRequest(ContentSettingsType::GEOLOCATION);
base::RunLoop().RunUntilIdle();
}
};
IN_PROC_BROWSER_TEST_F(PermissionPromptBubbleViewBrowserTest,
InvokeUi_geolocation) {
ShowAndVerifyUi();
}
......@@ -59,11 +59,18 @@ PermissionPromptImpl::PermissionPromptImpl(Browser* browser,
prompt_bubble_ = new PermissionPromptBubbleView(browser, delegate,
base::TimeTicks::Now());
prompt_bubble_->Show();
prompt_bubble_->GetWidget()->AddObserver(this);
prompt_style_ = PromptStyle::kBubble;
}
}
}
void PermissionPromptImpl::OnWidgetClosing(views::Widget* widget) {
DCHECK_EQ(widget, prompt_bubble_->GetWidget());
widget->RemoveObserver(this);
prompt_bubble_ = nullptr;
}
PermissionPromptImpl::~PermissionPromptImpl() {
if (prompt_bubble_)
prompt_bubble_->GetWidget()->Close();
......
......@@ -19,7 +19,8 @@ class WebContents;
// This object will create or trigger UI to reflect that a website is requesting
// a permission. The UI is usually a popup bubble, but may instead be a location
// bar icon (the "quiet" prompt).
class PermissionPromptImpl : public permissions::PermissionPrompt {
class PermissionPromptImpl : public permissions::PermissionPrompt,
public views::WidgetObserver {
public:
PermissionPromptImpl(Browser* browser,
content::WebContents* web_contents,
......@@ -34,6 +35,9 @@ class PermissionPromptImpl : public permissions::PermissionPrompt {
return prompt_bubble_;
}
// views::WidgetObserver:
void OnWidgetClosing(views::Widget* widget) override;
private:
enum class PromptStyle;
......
......@@ -1961,6 +1961,8 @@ if (!is_android) {
"../browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc",
"../browser/ui/views/location_bar/location_bar_view_browsertest.cc",
"../browser/ui/views/location_bar/location_icon_view_browsertest.cc",
"../browser/ui/views/location_bar/permission_chip_browsertest.cc",
"../browser/ui/views/location_bar/permission_chip_prompt_browsertest.cc",
"../browser/ui/views/location_bar/zoom_bubble_view_browsertest.cc",
"../browser/ui/views/media_router/cast_dialog_view_browsertest.cc",
"../browser/ui/views/media_router/media_router_dialog_controller_views_browsertest.cc",
......@@ -2011,6 +2013,7 @@ if (!is_android) {
"../browser/ui/views/payments/profile_list_view_controller_browsertest.cc",
"../browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc",
"../browser/ui/views/payments/shipping_option_view_controller_browsertest.cc",
"../browser/ui/views/permission_bubble/permission_prompt_bubble_view_browsertest.cc",
"../browser/ui/views/profiles/profile_menu_view_browsertest.cc",
"../browser/ui/views/qrcode_generator/qrcode_generator_bubble_browsertest.cc",
"../browser/ui/views/safe_browsing/password_reuse_modal_warning_dialog_browsertest.cc",
......
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