Commit 182c9ee8 authored by Maggie Cai's avatar Maggie Cai Committed by Commit Bot

[IntentPicker] Add automatic test to test launch PWA.

This CL updates browser test to test for all desktop platforms, user can
use intent picker to launch PWA.

BUG=939205, 990256

Change-Id: Ibba41fc6c2fd22da42f57e56a73869b36d7e9754
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2440081
Commit-Queue: Maggie Cai <mxcai@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815482}
parent 934fc8c7
......@@ -104,6 +104,7 @@ class IntentPickerBubbleView : public LocationBarBubbleDelegateView,
private:
friend class IntentPickerBubbleViewTest;
friend class IntentPickerBubbleViewBrowserTest;
friend class IntentPickerBubbleViewBrowserTestChromeOS;
FRIEND_TEST_ALL_PREFIXES(IntentPickerBubbleViewTest, NullIcons);
FRIEND_TEST_ALL_PREFIXES(IntentPickerBubbleViewTest, NonNullIcons);
......
......@@ -6,6 +6,7 @@
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
#include "chrome/browser/ui/views/intent_picker_bubble_view.h"
......@@ -18,6 +19,7 @@
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "third_party/blink/public/common/features.h"
#include "ui/views/widget/any_widget_observer.h"
#include "url/gurl.h"
class IntentPickerBubbleViewBrowserTest
......@@ -55,6 +57,27 @@ class IntentPickerBubbleViewBrowserTest
->GetPageActionIconView(PageActionIconType::kIntentPicker);
}
IntentPickerBubbleView* intent_picker_bubble() {
return IntentPickerBubbleView::intent_picker_bubble();
}
void ClickIconToShowBubble() {
views::NamedWidgetShownWaiter waiter(views::test::AnyWidgetTestPasskey{},
"IntentPickerBubbleView");
GetIntentPickerIcon()->ExecuteForTesting();
waiter.WaitIfNeededAndGet();
ASSERT_TRUE(intent_picker_bubble());
EXPECT_TRUE(intent_picker_bubble()->GetVisible());
}
void VerifyBubbleWithTestWebApp() {
EXPECT_EQ(1U, intent_picker_bubble()->GetScrollViewSize());
auto& app_info = intent_picker_bubble()->app_info_for_testing();
ASSERT_EQ(1U, app_info.size());
EXPECT_EQ(test_web_app_id(), app_info[0].launch_name);
EXPECT_EQ(GetAppName(), app_info[0].display_name);
}
private:
base::test::ScopedFeatureList scoped_feature_list_;
};
......@@ -78,9 +101,16 @@ IN_PROC_BROWSER_TEST_P(IntentPickerBubbleViewBrowserTest,
PageActionIconView* intent_picker_view = GetIntentPickerIcon();
EXPECT_TRUE(intent_picker_view->GetVisible());
IntentPickerBubbleView* intent_picker =
IntentPickerBubbleView::intent_picker_bubble();
EXPECT_FALSE(intent_picker);
EXPECT_FALSE(intent_picker_bubble());
ClickIconToShowBubble();
VerifyBubbleWithTestWebApp();
intent_picker_bubble()->AcceptDialog();
Browser* app_browser = BrowserList::GetInstance()->GetLastActive();
EXPECT_TRUE(web_app::AppBrowserController::IsForWebAppBrowser(
app_browser, test_web_app_id()));
}
// Tests that clicking a link from a tabbed browser to outside the scope of an
......@@ -98,7 +128,7 @@ IN_PROC_BROWSER_TEST_P(IntentPickerBubbleViewBrowserTest,
browser()->tab_strip_model()->GetActiveWebContents(),
out_of_scope_url, LinkTarget::SELF, GetParam()));
EXPECT_EQ(nullptr, IntentPickerBubbleView::intent_picker_bubble());
EXPECT_EQ(nullptr, intent_picker_bubble());
}
// Tests that clicking a link from an app browser to either within or outside
......@@ -111,7 +141,7 @@ IN_PROC_BROWSER_TEST_P(
// No intent picker should be seen when first opening the web app.
Browser* app_browser = OpenTestWebApp();
EXPECT_EQ(nullptr, IntentPickerBubbleView::intent_picker_bubble());
EXPECT_EQ(nullptr, intent_picker_bubble());
{
const GURL in_scope_url =
......@@ -122,7 +152,7 @@ IN_PROC_BROWSER_TEST_P(
app_browser->tab_strip_model()->GetActiveWebContents(),
in_scope_url, LinkTarget::SELF, GetParam()));
EXPECT_EQ(nullptr, IntentPickerBubbleView::intent_picker_bubble());
EXPECT_EQ(nullptr, intent_picker_bubble());
}
{
......@@ -134,7 +164,7 @@ IN_PROC_BROWSER_TEST_P(
app_browser->tab_strip_model()->GetActiveWebContents(),
out_of_scope_url, LinkTarget::SELF, GetParam()));
EXPECT_EQ(nullptr, IntentPickerBubbleView::intent_picker_bubble());
EXPECT_EQ(nullptr, intent_picker_bubble());
}
}
......
......@@ -115,6 +115,8 @@ class WebAppNavigationBrowserTest : public InProcessBrowserTest {
const net::EmbeddedTestServer& https_server() { return https_server_; }
const AppId& test_web_app_id() const { return test_web_app_; }
private:
net::EmbeddedTestServer https_server_;
// Similar to net::MockCertVerifier, but also updates the CertVerifier
......
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