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, ...@@ -104,6 +104,7 @@ class IntentPickerBubbleView : public LocationBarBubbleDelegateView,
private: private:
friend class IntentPickerBubbleViewTest; friend class IntentPickerBubbleViewTest;
friend class IntentPickerBubbleViewBrowserTest;
friend class IntentPickerBubbleViewBrowserTestChromeOS; friend class IntentPickerBubbleViewBrowserTestChromeOS;
FRIEND_TEST_ALL_PREFIXES(IntentPickerBubbleViewTest, NullIcons); FRIEND_TEST_ALL_PREFIXES(IntentPickerBubbleViewTest, NullIcons);
FRIEND_TEST_ALL_PREFIXES(IntentPickerBubbleViewTest, NonNullIcons); FRIEND_TEST_ALL_PREFIXES(IntentPickerBubbleViewTest, NonNullIcons);
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.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/browser_view.h"
#include "chrome/browser/ui/views/frame/toolbar_button_provider.h" #include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
#include "chrome/browser/ui/views/intent_picker_bubble_view.h" #include "chrome/browser/ui/views/intent_picker_bubble_view.h"
...@@ -18,6 +19,7 @@ ...@@ -18,6 +19,7 @@
#include "content/public/test/browser_test.h" #include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h" #include "content/public/test/browser_test_utils.h"
#include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features.h"
#include "ui/views/widget/any_widget_observer.h"
#include "url/gurl.h" #include "url/gurl.h"
class IntentPickerBubbleViewBrowserTest class IntentPickerBubbleViewBrowserTest
...@@ -55,6 +57,27 @@ class IntentPickerBubbleViewBrowserTest ...@@ -55,6 +57,27 @@ class IntentPickerBubbleViewBrowserTest
->GetPageActionIconView(PageActionIconType::kIntentPicker); ->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: private:
base::test::ScopedFeatureList scoped_feature_list_; base::test::ScopedFeatureList scoped_feature_list_;
}; };
...@@ -78,9 +101,16 @@ IN_PROC_BROWSER_TEST_P(IntentPickerBubbleViewBrowserTest, ...@@ -78,9 +101,16 @@ IN_PROC_BROWSER_TEST_P(IntentPickerBubbleViewBrowserTest,
PageActionIconView* intent_picker_view = GetIntentPickerIcon(); PageActionIconView* intent_picker_view = GetIntentPickerIcon();
EXPECT_TRUE(intent_picker_view->GetVisible()); EXPECT_TRUE(intent_picker_view->GetVisible());
IntentPickerBubbleView* intent_picker = EXPECT_FALSE(intent_picker_bubble());
IntentPickerBubbleView::intent_picker_bubble();
EXPECT_FALSE(intent_picker); 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 // 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, ...@@ -98,7 +128,7 @@ IN_PROC_BROWSER_TEST_P(IntentPickerBubbleViewBrowserTest,
browser()->tab_strip_model()->GetActiveWebContents(), browser()->tab_strip_model()->GetActiveWebContents(),
out_of_scope_url, LinkTarget::SELF, GetParam())); 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 // Tests that clicking a link from an app browser to either within or outside
...@@ -111,7 +141,7 @@ IN_PROC_BROWSER_TEST_P( ...@@ -111,7 +141,7 @@ IN_PROC_BROWSER_TEST_P(
// No intent picker should be seen when first opening the web app. // No intent picker should be seen when first opening the web app.
Browser* app_browser = OpenTestWebApp(); Browser* app_browser = OpenTestWebApp();
EXPECT_EQ(nullptr, IntentPickerBubbleView::intent_picker_bubble()); EXPECT_EQ(nullptr, intent_picker_bubble());
{ {
const GURL in_scope_url = const GURL in_scope_url =
...@@ -122,7 +152,7 @@ IN_PROC_BROWSER_TEST_P( ...@@ -122,7 +152,7 @@ IN_PROC_BROWSER_TEST_P(
app_browser->tab_strip_model()->GetActiveWebContents(), app_browser->tab_strip_model()->GetActiveWebContents(),
in_scope_url, LinkTarget::SELF, GetParam())); 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( ...@@ -134,7 +164,7 @@ IN_PROC_BROWSER_TEST_P(
app_browser->tab_strip_model()->GetActiveWebContents(), app_browser->tab_strip_model()->GetActiveWebContents(),
out_of_scope_url, LinkTarget::SELF, GetParam())); 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 { ...@@ -115,6 +115,8 @@ class WebAppNavigationBrowserTest : public InProcessBrowserTest {
const net::EmbeddedTestServer& https_server() { return https_server_; } const net::EmbeddedTestServer& https_server() { return https_server_; }
const AppId& test_web_app_id() const { return test_web_app_; }
private: private:
net::EmbeddedTestServer https_server_; net::EmbeddedTestServer https_server_;
// Similar to net::MockCertVerifier, but also updates the CertVerifier // 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