diff options
author | benwells <benwells@chromium.org> | 2015-06-04 21:20:41 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-05 04:21:03 +0000 |
commit | 11bd6ed1f622cd9421ed4cdb53454e08d689e342 (patch) | |
tree | c9be25b1fe5232b5e571ec40283407d19de03881 | |
parent | a44d2d01e6b6e77f60988cf166971cb79668346e (diff) | |
download | chromium_src-11bd6ed1f622cd9421ed4cdb53454e08d689e342.zip chromium_src-11bd6ed1f622cd9421ed4cdb53454e08d689e342.tar.gz chromium_src-11bd6ed1f622cd9421ed4cdb53454e08d689e342.tar.bz2 |
Show origin for hosted apps that navigate away from their start origin.
This is only for hosted apps that run in their own window.
BUG=467844
Review URL: https://codereview.chromium.org/1164873003
Cr-Commit-Position: refs/heads/master@{#333009}
-rw-r--r-- | chrome/browser/ui/browser.cc | 24 | ||||
-rw-r--r-- | chrome/browser/ui/browser.h | 8 | ||||
-rw-r--r-- | chrome/browser/ui/browser_browsertest.cc | 5 | ||||
-rw-r--r-- | chrome/browser/ui/extensions/bookmark_app_browser_controller.h | 51 | ||||
-rw-r--r-- | chrome/browser/ui/extensions/hosted_app_browser_controller.cc (renamed from chrome/browser/ui/extensions/bookmark_app_browser_controller.cc) | 37 | ||||
-rw-r--r-- | chrome/browser/ui/extensions/hosted_app_browser_controller.h | 51 | ||||
-rw-r--r-- | chrome/browser/ui/extensions/hosted_app_browsertest.cc (renamed from chrome/browser/ui/extensions/bookmark_app_browsertest.cc) | 195 | ||||
-rw-r--r-- | chrome/chrome_browser_ui.gypi | 4 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 12 | ||||
-rw-r--r-- | chrome/test/data/extensions/app_no_www/manifest.json | 13 |
10 files changed, 228 insertions, 172 deletions
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 6ccb52c..1cc78f2 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -107,7 +107,7 @@ #include "chrome/browser/ui/chrome_select_file_policy.h" #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" #include "chrome/browser/ui/exclusive_access/mouse_lock_controller.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/fast_unload_controller.h" #include "chrome/browser/ui/find_bar/find_bar.h" #include "chrome/browser/ui/find_bar/find_bar_controller.h" @@ -418,9 +418,9 @@ Browser::Browser(const CreateParams& params) if (chrome::IsInstantExtendedAPIEnabled() && is_type_tabbed()) instant_controller_.reset(new BrowserInstantController(this)); - if (extensions::BookmarkAppBrowserController::IsForBookmarkApp(this)) { - bookmark_app_controller_.reset( - new extensions::BookmarkAppBrowserController(this)); + if (extensions::HostedAppBrowserController::IsForHostedApp(this)) { + hosted_app_controller_.reset( + new extensions::HostedAppBrowserController(this)); } UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_INIT); @@ -429,8 +429,8 @@ Browser::Browser(const CreateParams& params) window_ = params.window ? params.window : CreateBrowserWindow(this); - if (bookmark_app_controller_) - bookmark_app_controller_->UpdateLocationBarVisibility(false); + if (hosted_app_controller_) + hosted_app_controller_->UpdateLocationBarVisibility(false); // Create the extension window controller before sending notifications. extension_window_controller_.reset( @@ -1438,8 +1438,8 @@ void Browser::NavigationStateChanged(WebContents* source, content::INVALIDATE_TYPE_LOAD)) command_controller_->TabStateChanged(); - if (bookmark_app_controller_) - bookmark_app_controller_->UpdateLocationBarVisibility(true); + if (hosted_app_controller_) + hosted_app_controller_->UpdateLocationBarVisibility(true); } void Browser::VisibleSSLStateChanged(const WebContents* source) { @@ -2429,8 +2429,8 @@ bool Browser::SupportsLocationBar() const { if (!is_app()) return !is_trusted_source(); - if (bookmark_app_controller_) - return bookmark_app_controller_->SupportsLocationBar(); + if (hosted_app_controller_) + return hosted_app_controller_->SupportsLocationBar(); return false; } @@ -2441,8 +2441,8 @@ bool Browser::ShouldUseWebAppFrame() const { if (!is_app()) return false; - if (bookmark_app_controller_) - return bookmark_app_controller_->should_use_web_app_frame(); + if (hosted_app_controller_) + return hosted_app_controller_->should_use_web_app_frame(); return false; } diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 0fee68b..c4a3a62 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h @@ -81,7 +81,7 @@ class SessionStorageNamespace; } namespace extensions { -class BookmarkAppBrowserController; +class HostedAppBrowserController; class Extension; class ExtensionRegistry; class WindowController; @@ -283,8 +283,8 @@ class Browser : public TabStripModelObserver, BrowserInstantController* instant_controller() { return instant_controller_.get(); } - extensions::BookmarkAppBrowserController* bookmark_app_controller() { - return bookmark_app_controller_.get(); + extensions::HostedAppBrowserController* hosted_app_controller() { + return hosted_app_controller_.get(); } // Get the FindBarController for this browser, creating it if it does not @@ -963,7 +963,7 @@ class Browser : public TabStripModelObserver, scoped_ptr<BrowserInstantController> instant_controller_; // Helper which handles bookmark app specific browser configuration. - scoped_ptr<extensions::BookmarkAppBrowserController> bookmark_app_controller_; + scoped_ptr<extensions::HostedAppBrowserController> hosted_app_controller_; BookmarkBar::State bookmark_bar_state_; diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc index 9cf66fa..451c41f 100644 --- a/chrome/browser/ui/browser_browsertest.cc +++ b/chrome/browser/ui/browser_browsertest.cc @@ -1415,7 +1415,10 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, ShouldShowLocationBar) { EXPECT_FALSE( dev_tools_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); - EXPECT_FALSE( + + // App windows can show location bars, for example when they navigate away + // from their starting origin. + EXPECT_TRUE( app_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window); diff --git a/chrome/browser/ui/extensions/bookmark_app_browser_controller.h b/chrome/browser/ui/extensions/bookmark_app_browser_controller.h deleted file mode 100644 index e47aaf3..0000000 --- a/chrome/browser/ui/extensions/bookmark_app_browser_controller.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 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. - -#ifndef CHROME_BROWSER_UI_EXTENSIONS_BOOKMARK_APP_BROWSER_CONTROLLER_H_ -#define CHROME_BROWSER_UI_EXTENSIONS_BOOKMARK_APP_BROWSER_CONTROLLER_H_ - -#include <string> - -#include "base/macros.h" - -class Browser; -class Profile; - -namespace extensions { - -// Class to encapsulate logic to control the browser UI for bookmark apps. -class BookmarkAppBrowserController { - public: - // Indicates whether |browser| is a bookmark app browser. - static bool IsForBookmarkApp(Browser* browser); - - explicit BookmarkAppBrowserController(Browser* browser); - ~BookmarkAppBrowserController(); - - // Whether the browser being controlled can ever show the location bar. - bool SupportsLocationBar(); - - // Whether the browser being controlled should be currently showing the - // location bar. - bool ShouldShowLocationBar(); - - // Updates the location bar visibility based on whether it should be - // currently visible or not. If |animate| is set, the change will be - // animated. - void UpdateLocationBarVisibility(bool animate); - - // Whether the controlled browser should use the web app style frame. - bool should_use_web_app_frame() { return should_use_web_app_frame_; } - - private: - Browser* browser_; - const std::string extension_id_; - const bool should_use_web_app_frame_; - - DISALLOW_COPY_AND_ASSIGN(BookmarkAppBrowserController); -}; - -} // namespace extensions - -#endif // CHROME_BROWSER_UI_EXTENSIONS_BOOKMARK_APP_BROWSER_CONTROLLER_H_ diff --git a/chrome/browser/ui/extensions/bookmark_app_browser_controller.cc b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc index 773250a..7a3a930 100644 --- a/chrome/browser/ui/extensions/bookmark_app_browser_controller.cc +++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/extensions/bookmark_app_browser_controller.h" +#include "chrome/browser/ui/extensions/hosted_app_browser_controller.h" #include "base/command_line.h" #include "chrome/browser/profiles/profile.h" @@ -18,6 +18,7 @@ #include "content/public/browser/web_contents.h" #include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" +#include "net/base/net_util.h" #include "url/gurl.h" namespace extensions { @@ -25,9 +26,11 @@ namespace extensions { namespace { bool IsSameOriginOrMoreSecure(const GURL& app_url, const GURL& page_url) { + const std::string www("www."); return (app_url.scheme() == page_url.scheme() || page_url.scheme() == url::kHttpsScheme) && - app_url.host() == page_url.host() && + (app_url.host() == page_url.host() || + www + app_url.host() == page_url.host()) && app_url.port() == page_url.port(); } @@ -39,32 +42,37 @@ bool IsWebAppFrameEnabled() { } // namespace // static -bool BookmarkAppBrowserController::IsForBookmarkApp(Browser* browser) { +bool HostedAppBrowserController::IsForHostedApp(Browser* browser) { const std::string extension_id = web_app::GetExtensionIdFromApplicationName(browser->app_name()); const Extension* extension = ExtensionRegistry::Get(browser->profile())->GetExtensionById( extension_id, ExtensionRegistry::EVERYTHING); - return extension && extension->from_bookmark(); + return extension && extension->is_hosted_app(); } -BookmarkAppBrowserController::BookmarkAppBrowserController(Browser* browser) +HostedAppBrowserController::HostedAppBrowserController(Browser* browser) : browser_(browser), extension_id_( - web_app::GetExtensionIdFromApplicationName(browser->app_name())), - should_use_web_app_frame_(browser->host_desktop_type() == - chrome::HOST_DESKTOP_TYPE_ASH && - IsWebAppFrameEnabled()) { + web_app::GetExtensionIdFromApplicationName(browser->app_name())) { + const Extension* extension = + ExtensionRegistry::Get(browser->profile())->GetExtensionById( + extension_id_, ExtensionRegistry::EVERYTHING); + DCHECK(extension); + should_use_web_app_frame_ = + extension->from_bookmark() && + browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH && + IsWebAppFrameEnabled(); } -BookmarkAppBrowserController::~BookmarkAppBrowserController() { +HostedAppBrowserController::~HostedAppBrowserController() { } -bool BookmarkAppBrowserController::SupportsLocationBar() { +bool HostedAppBrowserController::SupportsLocationBar() const { return !should_use_web_app_frame(); } -bool BookmarkAppBrowserController::ShouldShowLocationBar() { +bool HostedAppBrowserController::ShouldShowLocationBar() const { const Extension* extension = ExtensionRegistry::Get(browser_->profile())->GetExtensionById( extension_id_, ExtensionRegistry::EVERYTHING); @@ -77,7 +85,7 @@ bool BookmarkAppBrowserController::ShouldShowLocationBar() { if (!extension || !web_contents) return false; - if (!extension->from_bookmark()) + if (!extension->is_hosted_app()) return false; // Don't show a location bar until a navigation has occurred. @@ -96,7 +104,8 @@ bool BookmarkAppBrowserController::ShouldShowLocationBar() { web_contents->GetLastCommittedURL())); } -void BookmarkAppBrowserController::UpdateLocationBarVisibility(bool animate) { +void HostedAppBrowserController::UpdateLocationBarVisibility( + bool animate) const { if (!SupportsLocationBar()) return; diff --git a/chrome/browser/ui/extensions/hosted_app_browser_controller.h b/chrome/browser/ui/extensions/hosted_app_browser_controller.h new file mode 100644 index 0000000..09384d0 --- /dev/null +++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.h @@ -0,0 +1,51 @@ +// Copyright 2015 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. + +#ifndef CHROME_BROWSER_UI_EXTENSIONS_HOSTED_APP_BROWSER_CONTROLLER_H_ +#define CHROME_BROWSER_UI_EXTENSIONS_HOSTED_APP_BROWSER_CONTROLLER_H_ + +#include <string> + +#include "base/macros.h" + +class Browser; +class Profile; + +namespace extensions { + +// Class to encapsulate logic to control the browser UI for hosted apps. +class HostedAppBrowserController { + public: + // Indicates whether |browser| is a hosted app browser. + static bool IsForHostedApp(Browser* browser); + + explicit HostedAppBrowserController(Browser* browser); + ~HostedAppBrowserController(); + + // Whether the browser being controlled can ever show the location bar. + bool SupportsLocationBar() const; + + // Whether the browser being controlled should be currently showing the + // location bar. + bool ShouldShowLocationBar() const; + + // Updates the location bar visibility based on whether it should be + // currently visible or not. If |animate| is set, the change will be + // animated. + void UpdateLocationBarVisibility(bool animate) const; + + // Whether the controlled browser should use the web app style frame. + bool should_use_web_app_frame() const { return should_use_web_app_frame_; } + + private: + Browser* browser_; + const std::string extension_id_; + bool should_use_web_app_frame_; + + DISALLOW_COPY_AND_ASSIGN(HostedAppBrowserController); +}; + +} // namespace extensions + +#endif // CHROME_BROWSER_UI_EXTENSIONS_HOSTED_APP_BROWSER_CONTROLLER_H_ diff --git a/chrome/browser/ui/extensions/bookmark_app_browsertest.cc b/chrome/browser/ui/extensions/hosted_app_browsertest.cc index 186029b..fa96455 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; diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi index b13a2fa..58ee9ce 100644 --- a/chrome/chrome_browser_ui.gypi +++ b/chrome/chrome_browser_ui.gypi @@ -2607,8 +2607,6 @@ 'browser/ui/extensions/app_launch_params.h', 'browser/ui/extensions/application_launch.cc', 'browser/ui/extensions/application_launch.h', - 'browser/ui/extensions/bookmark_app_browser_controller.cc', - 'browser/ui/extensions/bookmark_app_browser_controller.h', 'browser/ui/extensions/extension_action_platform_delegate.h', 'browser/ui/extensions/extension_action_view_controller.cc', 'browser/ui/extensions/extension_action_view_controller.h', @@ -2625,6 +2623,8 @@ 'browser/ui/extensions/extension_message_bubble_factory.h', 'browser/ui/extensions/extension_toolbar_icon_surfacing_bubble_delegate.cc', 'browser/ui/extensions/extension_toolbar_icon_surfacing_bubble_delegate.h', + 'browser/ui/extensions/hosted_app_browser_controller.cc', + 'browser/ui/extensions/hosted_app_browser_controller.h', 'browser/ui/webui/extensions/chromeos/kiosk_apps_handler.cc', 'browser/ui/webui/extensions/chromeos/kiosk_apps_handler.h', 'browser/ui/webui/extensions/extension_basic_info.cc', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 6f5c61e..88a3180 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -467,9 +467,9 @@ 'browser/ui/cocoa/content_settings/content_setting_bubble_cocoa_unittest.mm', 'browser/ui/cocoa/dev_tools_controller_browsertest.mm', 'browser/ui/cocoa/extensions/extension_install_dialog_controller_browsertest.mm', - 'browser/ui/cocoa/extensions/extension_message_bubble_browsertest_mac.mm', 'browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h', 'browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm', + 'browser/ui/cocoa/extensions/extension_message_bubble_browsertest_mac.mm', 'browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_browsertest.mm', 'browser/ui/cocoa/extensions/windowed_install_dialog_controller_browsertest.mm', 'browser/ui/cocoa/find_bar/find_bar_browsertest.mm', @@ -487,7 +487,7 @@ 'browser/ui/exclusive_access/fullscreen_controller_browsertest.cc', 'browser/ui/extensions/extension_message_bubble_browsertest.cc', 'browser/ui/extensions/extension_message_bubble_browsertest.h', - 'browser/ui/extensions/bookmark_app_browsertest.cc', + 'browser/ui/extensions/hosted_app_browsertest.cc', 'browser/ui/find_bar/find_bar_host_browsertest.cc', 'browser/ui/global_error/global_error_service_browsertest.cc', 'browser/ui/location_bar/location_bar_browsertest.cc', @@ -506,8 +506,6 @@ 'browser/ui/tab_modal_confirm_dialog_browsertest.h', 'browser/ui/test/scoped_fake_nswindow_main_status.h', 'browser/ui/test/scoped_fake_nswindow_main_status.mm', - 'browser/ui/website_settings/permission_bubble_browser_test_util.cc', - 'browser/ui/website_settings/permission_bubble_browser_test_util.h', 'browser/ui/toolbar/browser_actions_bar_browsertest.cc', 'browser/ui/toolbar/browser_actions_bar_browsertest.h', 'browser/ui/toolbar/component_toolbar_actions_browsertest.cc', @@ -515,6 +513,8 @@ 'browser/ui/toolbar/test_toolbar_model.h', 'browser/ui/website_settings/mock_permission_bubble_view.cc', 'browser/ui/website_settings/mock_permission_bubble_view.h', + 'browser/ui/website_settings/permission_bubble_browser_test_util.cc', + 'browser/ui/website_settings/permission_bubble_browser_test_util.h', 'browser/ui/webui/bidi_checker_web_ui_test.cc', 'browser/ui/webui/bidi_checker_web_ui_test.h', 'browser/ui/webui/bookmarks_ui_browsertest.cc', @@ -718,8 +718,8 @@ 'browser/chromeos/login/screens/network_screen_browsertest.cc', 'browser/chromeos/login/screens/update_screen_browsertest.cc', 'browser/chromeos/login/session_login_browsertest.cc', - 'browser/chromeos/login/signin/oauth2_browsertest.cc', 'browser/chromeos/login/signin/device_id_browsertest.cc', + 'browser/chromeos/login/signin/oauth2_browsertest.cc', 'browser/chromeos/login/supervised/supervised_user_creation_browsertest.cc', 'browser/chromeos/login/supervised/supervised_user_password_browsertest.cc', 'browser/chromeos/login/supervised/supervised_user_test_base.cc', @@ -2204,9 +2204,9 @@ 'sources': [ '<@(chrome_browser_tests_chromeos_sources)' ], 'sources!': [ '../apps/load_and_launch_browsertest.cc', + 'browser/policy/policy_startup_browsertest.cc', 'browser/printing/cloud_print/test/cloud_print_policy_browsertest.cc', 'browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc', - 'browser/policy/policy_startup_browsertest.cc', # chromeos does not support profile list avatar menu 'browser/profiles/profile_list_desktop_browsertest.cc', 'browser/service_process/service_process_control_browsertest.cc', diff --git a/chrome/test/data/extensions/app_no_www/manifest.json b/chrome/test/data/extensions/app_no_www/manifest.json new file mode 100644 index 0000000..9a413dc --- /dev/null +++ b/chrome/test/data/extensions/app_no_www/manifest.json @@ -0,0 +1,13 @@ +{ + "name": "App Test", + "version": "1", + "manifest_version": 2, + "permissions": [ + "notifications" + ], + "app": { + "launch": { + "web_url": "http://example.com/" + } + } +} |