Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Unified Diff: chrome/browser/apps/app_browsertest_util.cc

Issue 23847004: "Redirecting URLs to Packaged Apps" implementation: revised (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/apps/app_browsertest_util.cc
diff --git a/chrome/browser/apps/app_browsertest_util.cc b/chrome/browser/apps/app_browsertest_util.cc
index 7a2f9cee53d19d0c71688637bd2b3c2732dbac7f..1f1ff072706f75d2835a63fdc27b666b25258eab 100644
--- a/chrome/browser/apps/app_browsertest_util.cc
+++ b/chrome/browser/apps/app_browsertest_util.cc
@@ -11,13 +11,17 @@
#include "base/strings/stringprintf.h"
#include "chrome/browser/extensions/api/tabs/tabs_api.h"
#include "chrome/browser/extensions/extension_function_test_utils.h"
+#include "chrome/browser/extensions/extension_test_message_listener.h"
#include "chrome/browser/ui/apps/chrome_shell_window_delegate.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/extensions/application_launch.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/notification_service.h"
+#include "content/public/test/browser_test_base.h"
#include "content/public/test/test_utils.h"
#include "extensions/common/switches.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
using apps::ShellWindow;
using apps::ShellWindowRegistry;
@@ -60,15 +64,22 @@ const Extension* PlatformAppBrowserTest::LoadAndLaunchPlatformApp(
return extension;
}
+const Extension* PlatformAppBrowserTest::InstallPlatformApp(
+ const char* name) {
+ const Extension* extension = InstallExtension(
+ test_data_dir_.AppendASCII("platform_apps").AppendASCII(name), 1);
+ EXPECT_TRUE(extension);
+
+ return extension;
+}
+
const Extension* PlatformAppBrowserTest::InstallAndLaunchPlatformApp(
const char* name) {
content::WindowedNotificationObserver app_loaded_observer(
content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
content::NotificationService::AllSources());
- const Extension* extension = InstallExtension(
- test_data_dir_.AppendASCII("platform_apps").AppendASCII(name), 1);
- EXPECT_TRUE(extension);
+ const Extension* extension = InstallPlatformApp(name);
chrome::OpenApplication(chrome::AppLaunchParams(browser()->profile(),
extension,
@@ -191,4 +202,59 @@ void ExperimentalPlatformAppBrowserTest::SetUpCommandLine(
command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis);
}
+void PlatformAppUrlRedirectorBrowserTest::SetUpCommandLine(
+ CommandLine* command_line) {
+ PlatformAppBrowserTest::SetUpCommandLine(command_line);
+ command_line->AppendSwitch(::switches::kDisablePopupBlocking);
+}
+
+void PlatformAppUrlRedirectorBrowserTest::TestNavigationInTab(
+ const char* launcher_page_path,
+ const char* handler_path,
+ const char* handler_ack,
+ size_t expected_shell_window_count) {
+ ASSERT_TRUE(StartEmbeddedTestServer());
+
+ InstallPlatformApp(handler_path);
+
+ ExtensionTestMessageListener handler_listener(handler_ack, false);
+
+ ui_test_utils::NavigateToURLWithDisposition(
+ browser(),
+ embedded_test_server()->GetURL(base::StringPrintf(
+ "/extensions/platform_apps/%s", launcher_page_path)),
+ CURRENT_TAB,
+ ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
+
+ ASSERT_TRUE(handler_listener.WaitUntilSatisfied());
+
+ // The above navigations click on 2 links (regular and target blank) and call
+ // 1 window.open(), all of which should be intercepted and launch the
+ // handler app.
+ ASSERT_EQ(expected_shell_window_count, GetShellWindowCount());
+}
+
+void PlatformAppUrlRedirectorBrowserTest::TestNavigationInApp(
+ const char* launcher_path,
+ const char* launcher_ack,
+ const char* handler_path,
+ const char* handler_ack,
+ size_t expected_shell_window_count) {
+ ASSERT_TRUE(StartEmbeddedTestServer());
+
+ InstallPlatformApp(handler_path);
+
+ ExtensionTestMessageListener launcher_listener(launcher_ack, false);
+ ExtensionTestMessageListener handler_listener(handler_ack, false);
+
+ LoadAndLaunchPlatformApp(launcher_path);
+
+ ASSERT_TRUE(launcher_listener.WaitUntilSatisfied());
+ ASSERT_TRUE(handler_listener.WaitUntilSatisfied());
+
+ // The launcher clicks on a link, which gets intercepted and launches the
+ // handler.
+ ASSERT_EQ(expected_shell_window_count, GetShellWindowCount());
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698