Index: chrome/browser/ui/extensions/hosted_app_browsertest.cc |
diff --git a/chrome/browser/ui/extensions/bookmark_app_browsertest.cc b/chrome/browser/ui/extensions/hosted_app_browsertest.cc |
similarity index 60% |
rename from chrome/browser/ui/extensions/bookmark_app_browsertest.cc |
rename to chrome/browser/ui/extensions/hosted_app_browsertest.cc |
index 186029b026c89fdaefa84bdb1f604276ca44cee4..fa964556c8516716d18783f55206f982d67c381e 100644 |
--- a/chrome/browser/ui/extensions/bookmark_app_browsertest.cc |
+++ b/chrome/browser/ui/extensions/hosted_app_browsertest.cc |
@@ -14,7 +14,7 @@ |
#include "chrome/browser/ui/browser_iterator.h" |
#include "chrome/browser/ui/extensions/app_launch_params.h" |
#include "chrome/browser/ui/extensions/application_launch.h" |
-#include "chrome/browser/ui/extensions/bookmark_app_browser_controller.h" |
+#include "chrome/browser/ui/extensions/hosted_app_browser_controller.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/browser/web_applications/web_app.h" |
#include "chrome/common/chrome_switches.h" |
@@ -28,8 +28,6 @@ |
using content::WebContents; |
using extensions::Extension; |
-typedef ExtensionBrowserTest BookmarkAppTest; |
- |
namespace { |
// Used by ShouldLocationBarForXXX. Performs a navigation and then checks that |
@@ -40,141 +38,174 @@ void NavigateAndCheckForLocationBar(Browser* browser, |
GURL url(url_string); |
ui_test_utils::NavigateToURL(browser, url); |
EXPECT_EQ(expected_visibility, |
- browser->bookmark_app_controller()->ShouldShowLocationBar()); |
+ browser->hosted_app_controller()->ShouldShowLocationBar()); |
} |
} // namespace |
+class HostedAppTest : public ExtensionBrowserTest { |
+ public: |
+ HostedAppTest() : app_browser_(nullptr) {} |
+ ~HostedAppTest() override {} |
+ |
+ protected: |
+ void SetupApp(const std::string& app_folder, bool is_bookmark_app) { |
+ const Extension* app = InstallExtensionWithSourceAndFlags( |
+ test_data_dir_.AppendASCII(app_folder), 1, |
+ extensions::Manifest::INTERNAL, |
+ is_bookmark_app ? extensions::Extension::FROM_BOOKMARK |
+ : extensions::Extension::NO_FLAGS); |
+ ASSERT_TRUE(app); |
+ |
+ // Launch it in a window. |
+ ASSERT_TRUE(OpenApplication(AppLaunchParams( |
+ browser()->profile(), app, extensions::LAUNCH_CONTAINER_WINDOW, |
+ NEW_WINDOW, extensions::SOURCE_TEST))); |
+ |
+ for (chrome::BrowserIterator it; !it.done(); it.Next()) { |
+ if (*it == browser()) |
+ continue; |
+ |
+ std::string browser_app_id = |
+ web_app::GetExtensionIdFromApplicationName((*it)->app_name()); |
+ if (browser_app_id == app->id()) { |
+ app_browser_ = *it; |
+ break; |
+ } |
+ } |
+ |
+ ASSERT_TRUE(app_browser_); |
+ ASSERT_TRUE(app_browser_ != browser()); |
+ } |
+ |
+ Browser* app_browser_; |
+}; |
+ |
// Check that the location bar is shown correctly for HTTP bookmark apps. |
-IN_PROC_BROWSER_TEST_F(BookmarkAppTest, |
+IN_PROC_BROWSER_TEST_F(HostedAppTest, |
ShouldShowLocationBarForHTTPBookmarkApp) { |
base::CommandLine::ForCurrentProcess()->AppendSwitch( |
switches::kEnableNewBookmarkApps); |
- ASSERT_TRUE(test_server()->Start()); |
- // Load a http bookmark app. |
- const Extension* http_bookmark_app = InstallExtensionWithSourceAndFlags( |
- test_data_dir_.AppendASCII("app/"), |
- 1, |
- extensions::Manifest::INTERNAL, |
- extensions::Extension::FROM_BOOKMARK); |
- ASSERT_TRUE(http_bookmark_app); |
- |
- // Launch it in a window. |
- WebContents* app_window = OpenApplication(AppLaunchParams( |
- browser()->profile(), http_bookmark_app, |
- extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW, |
- extensions::SOURCE_TEST)); |
- ASSERT_TRUE(app_window); |
- |
- // Find the new browser. |
- Browser* http_app_browser = NULL; |
- for (chrome::BrowserIterator it; !it.done(); it.Next()) { |
- std::string app_id = |
- web_app::GetExtensionIdFromApplicationName((*it)->app_name()); |
- if (*it == browser()) { |
- continue; |
- } else if (app_id == http_bookmark_app->id()) { |
- http_app_browser = *it; |
- } |
- } |
- ASSERT_TRUE(http_app_browser); |
- ASSERT_TRUE(http_app_browser != browser()); |
+ SetupApp("app", true); |
// Navigate to the app's launch page; the location bar should be hidden. |
NavigateAndCheckForLocationBar( |
- http_app_browser, "http://www.example.com/empty.html", false); |
+ app_browser_, "http://www.example.com/empty.html", false); |
// Navigate to another page on the same origin; the location bar should still |
// hidden. |
NavigateAndCheckForLocationBar( |
- http_app_browser, "http://www.example.com/blah", false); |
+ app_browser_, "http://www.example.com/blah", false); |
// Navigate to the https version of the site; the location bar should |
- // be hidden for both browsers. |
+ // be hidden. |
NavigateAndCheckForLocationBar( |
- http_app_browser, "https://www.example.com/blah", false); |
+ app_browser_, "https://www.example.com/blah", false); |
// Navigate to different origin; the location bar should now be visible. |
NavigateAndCheckForLocationBar( |
- http_app_browser, "http://www.foo.com/blah", true); |
+ app_browser_, "http://www.foo.com/blah", true); |
// Navigate back to the app's origin; the location bar should now be hidden. |
NavigateAndCheckForLocationBar( |
- http_app_browser, "http://www.example.com/blah", false); |
+ app_browser_, "http://www.example.com/blah", false); |
} |
// Check that the location bar is shown correctly for HTTPS bookmark apps. |
-IN_PROC_BROWSER_TEST_F(BookmarkAppTest, |
+IN_PROC_BROWSER_TEST_F(HostedAppTest, |
ShouldShowLocationBarForHTTPSBookmarkApp) { |
base::CommandLine::ForCurrentProcess()->AppendSwitch( |
switches::kEnableNewBookmarkApps); |
- ASSERT_TRUE(test_server()->Start()); |
- // Load a https bookmark app. |
- const Extension* https_bookmark_app = InstallExtensionWithSourceAndFlags( |
- test_data_dir_.AppendASCII("https_app/"), |
- 1, |
- extensions::Manifest::INTERNAL, |
- extensions::Extension::FROM_BOOKMARK); |
- ASSERT_TRUE(https_bookmark_app); |
- |
- // Launch it in a window. |
- WebContents* app_window = OpenApplication(AppLaunchParams( |
- browser()->profile(), https_bookmark_app, |
- extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW, |
- extensions::SOURCE_TEST)); |
- ASSERT_TRUE(app_window); |
- |
- // Find the new browser. |
- Browser* https_app_browser = NULL; |
- for (chrome::BrowserIterator it; !it.done(); it.Next()) { |
- std::string app_id = |
- web_app::GetExtensionIdFromApplicationName((*it)->app_name()); |
- if (*it == browser()) { |
- continue; |
- } else if (app_id == https_bookmark_app->id()) { |
- https_app_browser = *it; |
- } |
- } |
- ASSERT_TRUE(https_app_browser); |
- ASSERT_TRUE(https_app_browser != browser()); |
+ SetupApp("https_app", true); |
// Navigate to the app's launch page; the location bar should be hidden. |
NavigateAndCheckForLocationBar( |
- https_app_browser, "https://www.example.com/empty.html", false); |
+ app_browser_, "https://www.example.com/empty.html", false); |
// Navigate to another page on the same origin; the location bar should still |
// hidden. |
NavigateAndCheckForLocationBar( |
- https_app_browser, "https://www.example.com/blah", false); |
+ app_browser_, "https://www.example.com/blah", false); |
// Navigate to the http version of the site; the location bar should |
// be visible for the https version as it is now on a less secure version |
// of its host. |
NavigateAndCheckForLocationBar( |
- https_app_browser, "http://www.example.com/blah", true); |
+ app_browser_, "http://www.example.com/blah", true); |
+ |
+ // Navigate to different origin; the location bar should now be visible. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "http://www.foo.com/blah", true); |
+ |
+ // Navigate back to the app's origin; the location bar should now be hidden. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "https://www.example.com/blah", false); |
+} |
+ |
+// Check that the location bar is shown correctly for normal hosted apps. |
+IN_PROC_BROWSER_TEST_F(HostedAppTest, |
+ ShouldShowLocationBarForHostedApp) { |
+ SetupApp("app", false); |
+ |
+ // Navigate to the app's launch page; the location bar should be hidden. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "http://www.example.com/empty.html", false); |
+ |
+ // Navigate to another page on the same origin; the location bar should still |
+ // hidden. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "http://www.example.com/blah", false); |
+ |
+ // Navigate to the https version of the site; the location bar should |
+ // be hidden. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "https://www.example.com/blah", false); |
+ |
+ // Navigate to different origin; the location bar should now be visible. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "http://www.foo.com/blah", true); |
+ |
+ // Navigate back to the app's origin; the location bar should now be hidden. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "http://www.example.com/blah", false); |
+} |
+ |
+// Check that the location bar is shown correctly for hosted apps that specify |
+// start URLs without the 'www.' prefix. |
+IN_PROC_BROWSER_TEST_F(HostedAppTest, |
+ LocationBarForHostedAppWithoutWWW) { |
+ SetupApp("app_no_www", false); |
+ |
+ // Navigate to the app's launch page; the location bar should be hidden. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "http://example.com/empty.html", false); |
+ |
+ // Navigate to the app's launch page with the 'www.' prefis; the location bar |
+ // should be hidden. |
+ NavigateAndCheckForLocationBar( |
+ app_browser_, "http://www.example.com/empty.html", false); |
// Navigate to different origin; the location bar should now be visible. |
NavigateAndCheckForLocationBar( |
- https_app_browser, "http://www.foo.com/blah", true); |
+ app_browser_, "http://www.foo.com/blah", true); |
// Navigate back to the app's origin; the location bar should now be hidden. |
NavigateAndCheckForLocationBar( |
- https_app_browser, "https://www.example.com/blah", false); |
+ app_browser_, "http://example.com/blah", false); |
} |
// Open a normal browser window, a hosted app window, a legacy packaged app |
// window and a dev tools window, and check that the web app frame feature is |
// supported correctly. |
-IN_PROC_BROWSER_TEST_F(BookmarkAppTest, ShouldUseWebAppFrame) { |
- ASSERT_TRUE(test_server()->Start()); |
+IN_PROC_BROWSER_TEST_F(HostedAppTest, ShouldUseWebAppFrame) { |
base::CommandLine::ForCurrentProcess()->AppendSwitch( |
switches::kEnableWebAppFrame); |
// Load a hosted app. |
const Extension* bookmark_app = InstallExtensionWithSourceAndFlags( |
- test_data_dir_.AppendASCII("app/"), |
+ test_data_dir_.AppendASCII("app"), |
1, |
extensions::Manifest::INTERNAL, |
extensions::Extension::FROM_BOOKMARK); |
@@ -187,7 +218,7 @@ IN_PROC_BROWSER_TEST_F(BookmarkAppTest, ShouldUseWebAppFrame) { |
ASSERT_TRUE(bookmark_app_window); |
// Load a packaged app. |
- ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("packaged_app/"))); |
+ ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("packaged_app"))); |
const Extension* packaged_app = nullptr; |
extensions::ExtensionRegistry* registry = |
extensions::ExtensionRegistry::Get(browser()->profile()); |
@@ -212,9 +243,9 @@ IN_PROC_BROWSER_TEST_F(BookmarkAppTest, ShouldUseWebAppFrame) { |
browser()->host_desktop_type())); |
// Find the new browsers. |
- Browser* bookmark_app_browser = NULL; |
- Browser* packaged_app_browser = NULL; |
- Browser* dev_tools_browser = NULL; |
+ Browser* bookmark_app_browser = nullptr; |
+ Browser* packaged_app_browser = nullptr; |
+ Browser* dev_tools_browser = nullptr; |
for (chrome::BrowserIterator it; !it.done(); it.Next()) { |
if (*it == browser()) { |
continue; |