OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "chrome/browser/ui/browser_tabstrip.h" | 42 #include "chrome/browser/ui/browser_tabstrip.h" |
43 #include "chrome/browser/ui/browser_ui_prefs.h" | 43 #include "chrome/browser/ui/browser_ui_prefs.h" |
44 #include "chrome/browser/ui/browser_window.h" | 44 #include "chrome/browser/ui/browser_window.h" |
45 #include "chrome/browser/ui/extensions/app_launch_params.h" | 45 #include "chrome/browser/ui/extensions/app_launch_params.h" |
46 #include "chrome/browser/ui/extensions/application_launch.h" | 46 #include "chrome/browser/ui/extensions/application_launch.h" |
47 #include "chrome/browser/ui/host_desktop.h" | 47 #include "chrome/browser/ui/host_desktop.h" |
48 #include "chrome/browser/ui/startup/startup_browser_creator.h" | 48 #include "chrome/browser/ui/startup/startup_browser_creator.h" |
49 #include "chrome/browser/ui/startup/startup_browser_creator_impl.h" | 49 #include "chrome/browser/ui/startup/startup_browser_creator_impl.h" |
50 #include "chrome/browser/ui/tabs/pinned_tab_codec.h" | 50 #include "chrome/browser/ui/tabs/pinned_tab_codec.h" |
51 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 51 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
52 #include "chrome/browser/web_applications/web_app.h" | |
53 #include "chrome/common/chrome_switches.h" | 52 #include "chrome/common/chrome_switches.h" |
54 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 53 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
55 #include "chrome/common/pref_names.h" | 54 #include "chrome/common/pref_names.h" |
56 #include "chrome/common/url_constants.h" | 55 #include "chrome/common/url_constants.h" |
57 #include "chrome/grit/chromium_strings.h" | 56 #include "chrome/grit/chromium_strings.h" |
58 #include "chrome/grit/generated_resources.h" | 57 #include "chrome/grit/generated_resources.h" |
59 #include "chrome/test/base/in_process_browser_test.h" | 58 #include "chrome/test/base/in_process_browser_test.h" |
60 #include "chrome/test/base/test_switches.h" | 59 #include "chrome/test/base/test_switches.h" |
61 #include "chrome/test/base/ui_test_utils.h" | 60 #include "chrome/test/base/ui_test_utils.h" |
62 #include "components/app_modal/app_modal_dialog.h" | 61 #include "components/app_modal/app_modal_dialog.h" |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 | 202 |
204 // Used by CloseWithAppMenuOpen. Posts a CloseWindowCallback and shows the app | 203 // Used by CloseWithAppMenuOpen. Posts a CloseWindowCallback and shows the app |
205 // menu. | 204 // menu. |
206 void RunCloseWithAppMenuCallback(Browser* browser) { | 205 void RunCloseWithAppMenuCallback(Browser* browser) { |
207 // ShowAppMenu is modal under views. Schedule a task that closes the window. | 206 // ShowAppMenu is modal under views. Schedule a task that closes the window. |
208 base::MessageLoop::current()->PostTask( | 207 base::MessageLoop::current()->PostTask( |
209 FROM_HERE, base::Bind(&CloseWindowCallback, browser)); | 208 FROM_HERE, base::Bind(&CloseWindowCallback, browser)); |
210 chrome::ShowAppMenu(browser); | 209 chrome::ShowAppMenu(browser); |
211 } | 210 } |
212 | 211 |
213 #if !defined(OS_MACOSX) | |
214 // Used by ShouldLocationBarForXXX. Performs a navigation and then checks that | |
215 // the location bar visibility is as expcted. | |
216 void NavigateAndCheckForLocationBar(Browser* browser, | |
217 const std::string& url_string, | |
218 bool expected_visibility) { | |
219 GURL url(url_string); | |
220 ui_test_utils::NavigateToURL(browser, url); | |
221 EXPECT_EQ(expected_visibility, | |
222 browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); | |
223 } | |
224 #endif // !defined(OS_MACOSX) | |
225 | |
226 // Displays "INTERSTITIAL" while the interstitial is attached. | 212 // Displays "INTERSTITIAL" while the interstitial is attached. |
227 // (InterstitialPage can be used in a test directly, but there would be no way | 213 // (InterstitialPage can be used in a test directly, but there would be no way |
228 // to visually tell if it is showing or not.) | 214 // to visually tell if it is showing or not.) |
229 class TestInterstitialPage : public content::InterstitialPageDelegate { | 215 class TestInterstitialPage : public content::InterstitialPageDelegate { |
230 public: | 216 public: |
231 TestInterstitialPage(WebContents* tab, bool new_navigation, const GURL& url) { | 217 TestInterstitialPage(WebContents* tab, bool new_navigation, const GURL& url) { |
232 interstitial_page_ = InterstitialPage::Create( | 218 interstitial_page_ = InterstitialPage::Create( |
233 tab, new_navigation, url , this); | 219 tab, new_navigation, url , this); |
234 interstitial_page_->Show(); | 220 interstitial_page_->Show(); |
235 } | 221 } |
(...skipping 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1393 ASSERT_TRUE(app_browser); | 1379 ASSERT_TRUE(app_browser); |
1394 ASSERT_TRUE(app_browser != browser()); | 1380 ASSERT_TRUE(app_browser != browser()); |
1395 | 1381 |
1396 EXPECT_FALSE( | 1382 EXPECT_FALSE( |
1397 dev_tools_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); | 1383 dev_tools_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); |
1398 EXPECT_FALSE( | 1384 EXPECT_FALSE( |
1399 app_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); | 1385 app_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); |
1400 | 1386 |
1401 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window); | 1387 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window); |
1402 } | 1388 } |
1403 | |
1404 // Check that the location bar is shown correctly for HTTP bookmark apps. | |
1405 IN_PROC_BROWSER_TEST_F(BrowserTest, ShouldShowLocationBarForHTTPBookmarkApp) { | |
1406 base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
1407 switches::kEnableNewBookmarkApps); | |
1408 ASSERT_TRUE(test_server()->Start()); | |
1409 | |
1410 // Load a http bookmark app. | |
1411 const Extension* http_bookmark_app = InstallExtensionWithSourceAndFlags( | |
1412 test_data_dir_.AppendASCII("app/"), | |
1413 1, | |
1414 extensions::Manifest::INTERNAL, | |
1415 extensions::Extension::FROM_BOOKMARK); | |
1416 ASSERT_TRUE(http_bookmark_app); | |
1417 | |
1418 // Launch it in a window. | |
1419 WebContents* app_window = OpenApplication(AppLaunchParams( | |
1420 browser()->profile(), http_bookmark_app, | |
1421 extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW, | |
1422 extensions::SOURCE_TEST)); | |
1423 ASSERT_TRUE(app_window); | |
1424 | |
1425 // Find the new browser. | |
1426 Browser* http_app_browser = NULL; | |
1427 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | |
1428 std::string app_id = | |
1429 web_app::GetExtensionIdFromApplicationName((*it)->app_name()); | |
1430 if (*it == browser()) { | |
1431 continue; | |
1432 } else if (app_id == http_bookmark_app->id()) { | |
1433 http_app_browser = *it; | |
1434 } | |
1435 } | |
1436 ASSERT_TRUE(http_app_browser); | |
1437 ASSERT_TRUE(http_app_browser != browser()); | |
1438 | |
1439 // Navigate to the app's launch page; the location bar should be hidden. | |
1440 NavigateAndCheckForLocationBar( | |
1441 http_app_browser, "http://www.example.com/empty.html", false); | |
1442 | |
1443 // Navigate to another page on the same origin; the location bar should still | |
1444 // hidden. | |
1445 NavigateAndCheckForLocationBar( | |
1446 http_app_browser, "http://www.example.com/blah", false); | |
1447 | |
1448 // Navigate to the https version of the site; the location bar should | |
1449 // be hidden for both browsers. | |
1450 NavigateAndCheckForLocationBar( | |
1451 http_app_browser, "https://www.example.com/blah", false); | |
1452 | |
1453 // Navigate to different origin; the location bar should now be visible. | |
1454 NavigateAndCheckForLocationBar( | |
1455 http_app_browser, "http://www.foo.com/blah", true); | |
1456 | |
1457 // Navigate back to the app's origin; the location bar should now be hidden. | |
1458 NavigateAndCheckForLocationBar( | |
1459 http_app_browser, "http://www.example.com/blah", false); | |
1460 } | |
1461 | |
1462 // Check that the location bar is shown correctly for HTTPS bookmark apps. | |
1463 IN_PROC_BROWSER_TEST_F(BrowserTest, ShouldShowLocationBarForHTTPSBookmarkApp) { | |
1464 base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
1465 switches::kEnableNewBookmarkApps); | |
1466 ASSERT_TRUE(test_server()->Start()); | |
1467 | |
1468 // Load a https bookmark app. | |
1469 const Extension* https_bookmark_app = InstallExtensionWithSourceAndFlags( | |
1470 test_data_dir_.AppendASCII("https_app/"), | |
1471 1, | |
1472 extensions::Manifest::INTERNAL, | |
1473 extensions::Extension::FROM_BOOKMARK); | |
1474 ASSERT_TRUE(https_bookmark_app); | |
1475 | |
1476 // Launch it in a window. | |
1477 WebContents* app_window = OpenApplication(AppLaunchParams( | |
1478 browser()->profile(), https_bookmark_app, | |
1479 extensions::LAUNCH_CONTAINER_WINDOW, NEW_WINDOW, | |
1480 extensions::SOURCE_TEST)); | |
1481 ASSERT_TRUE(app_window); | |
1482 | |
1483 // Find the new browser. | |
1484 Browser* https_app_browser = NULL; | |
1485 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | |
1486 std::string app_id = | |
1487 web_app::GetExtensionIdFromApplicationName((*it)->app_name()); | |
1488 if (*it == browser()) { | |
1489 continue; | |
1490 } else if (app_id == https_bookmark_app->id()) { | |
1491 https_app_browser = *it; | |
1492 } | |
1493 } | |
1494 ASSERT_TRUE(https_app_browser); | |
1495 ASSERT_TRUE(https_app_browser != browser()); | |
1496 | |
1497 // Navigate to the app's launch page; the location bar should be hidden. | |
1498 NavigateAndCheckForLocationBar( | |
1499 https_app_browser, "https://www.example.com/empty.html", false); | |
1500 | |
1501 // Navigate to another page on the same origin; the location bar should still | |
1502 // hidden. | |
1503 NavigateAndCheckForLocationBar( | |
1504 https_app_browser, "https://www.example.com/blah", false); | |
1505 | |
1506 // Navigate to the http version of the site; the location bar should | |
1507 // be visible for the https version as it is now on a less secure version | |
1508 // of its host. | |
1509 NavigateAndCheckForLocationBar( | |
1510 https_app_browser, "http://www.example.com/blah", true); | |
1511 | |
1512 // Navigate to different origin; the location bar should now be visible. | |
1513 NavigateAndCheckForLocationBar( | |
1514 https_app_browser, "http://www.foo.com/blah", true); | |
1515 | |
1516 // Navigate back to the app's origin; the location bar should now be hidden. | |
1517 NavigateAndCheckForLocationBar( | |
1518 https_app_browser, "https://www.example.com/blah", false); | |
1519 } | |
1520 #endif // !defined(OS_MACOSX) | 1389 #endif // !defined(OS_MACOSX) |
1521 | 1390 |
1522 // Open a normal browser window, a hosted app window, a legacy packaged app | |
1523 // window and a dev tools window, and check that the web app frame feature is | |
1524 // supported correctly. | |
1525 IN_PROC_BROWSER_TEST_F(BrowserTest, ShouldUseWebAppFrame) { | |
1526 ASSERT_TRUE(test_server()->Start()); | |
1527 base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
1528 switches::kEnableWebAppFrame); | |
1529 | |
1530 // Load a hosted app. | |
1531 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | |
1532 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | |
1533 const Extension* hosted_app = GetExtension(); | |
1534 | |
1535 // Launch it in a window, as AppLauncherHandler::HandleLaunchApp() would. | |
1536 WebContents* hosted_app_window = OpenApplication(AppLaunchParams( | |
1537 browser()->profile(), hosted_app, extensions::LAUNCH_CONTAINER_WINDOW, | |
1538 NEW_WINDOW, extensions::SOURCE_UNTRACKED)); | |
1539 ASSERT_TRUE(hosted_app_window); | |
1540 | |
1541 // Load a packaged app. | |
1542 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("packaged_app/"))); | |
1543 const Extension* packaged_app = nullptr; | |
1544 extensions::ExtensionRegistry* registry = | |
1545 extensions::ExtensionRegistry::Get(browser()->profile()); | |
1546 for (const scoped_refptr<const extensions::Extension>& extension : | |
1547 registry->enabled_extensions()) { | |
1548 if (extension->name() == "Packaged App Test") | |
1549 packaged_app = extension.get(); | |
1550 } | |
1551 ASSERT_TRUE(packaged_app); | |
1552 | |
1553 // Launch it in a window, as AppLauncherHandler::HandleLaunchApp() would. | |
1554 WebContents* packaged_app_window = OpenApplication(AppLaunchParams( | |
1555 browser()->profile(), packaged_app, extensions::LAUNCH_CONTAINER_WINDOW, | |
1556 NEW_WINDOW, extensions::SOURCE_UNTRACKED)); | |
1557 ASSERT_TRUE(packaged_app_window); | |
1558 | |
1559 DevToolsWindow* devtools_window = | |
1560 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false); | |
1561 | |
1562 // The launch should have created a new app browser and a dev tools browser. | |
1563 ASSERT_EQ(4u, chrome::GetBrowserCount(browser()->profile(), | |
1564 browser()->host_desktop_type())); | |
1565 | |
1566 // Find the new browsers. | |
1567 Browser* hosted_app_browser = NULL; | |
1568 Browser* packaged_app_browser = NULL; | |
1569 Browser* dev_tools_browser = NULL; | |
1570 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | |
1571 if (*it == browser()) { | |
1572 continue; | |
1573 } else if ((*it)->app_name() == DevToolsWindow::kDevToolsApp) { | |
1574 dev_tools_browser = *it; | |
1575 } else if ((*it)->tab_strip_model()->GetActiveWebContents() == | |
1576 hosted_app_window) { | |
1577 hosted_app_browser = *it; | |
1578 } else { | |
1579 packaged_app_browser = *it; | |
1580 } | |
1581 } | |
1582 ASSERT_TRUE(dev_tools_browser); | |
1583 ASSERT_TRUE(hosted_app_browser); | |
1584 ASSERT_TRUE(hosted_app_browser != browser()); | |
1585 ASSERT_TRUE(packaged_app_browser); | |
1586 ASSERT_TRUE(packaged_app_browser != browser()); | |
1587 ASSERT_TRUE(packaged_app_browser != hosted_app_browser); | |
1588 | |
1589 EXPECT_FALSE(browser()->SupportsWindowFeature(Browser::FEATURE_WEBAPPFRAME)); | |
1590 EXPECT_FALSE( | |
1591 dev_tools_browser->SupportsWindowFeature(Browser::FEATURE_WEBAPPFRAME)); | |
1592 EXPECT_EQ( | |
1593 browser()->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH, | |
1594 hosted_app_browser->SupportsWindowFeature(Browser::FEATURE_WEBAPPFRAME)); | |
1595 EXPECT_FALSE(packaged_app_browser->SupportsWindowFeature( | |
1596 Browser::FEATURE_WEBAPPFRAME)); | |
1597 | |
1598 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window); | |
1599 } | |
1600 | |
1601 // Tests that the CLD (Compact Language Detection) works properly. | 1391 // Tests that the CLD (Compact Language Detection) works properly. |
1602 IN_PROC_BROWSER_TEST_F(BrowserTest, PageLanguageDetection) { | 1392 IN_PROC_BROWSER_TEST_F(BrowserTest, PageLanguageDetection) { |
1603 scoped_ptr<test::CldDataHarness> cld_data_harness = | 1393 scoped_ptr<test::CldDataHarness> cld_data_harness = |
1604 test::CldDataHarnessFactory::Get()->CreateCldDataHarness(); | 1394 test::CldDataHarnessFactory::Get()->CreateCldDataHarness(); |
1605 ASSERT_NO_FATAL_FAILURE(cld_data_harness->Init()); | 1395 ASSERT_NO_FATAL_FAILURE(cld_data_harness->Init()); |
1606 ASSERT_TRUE(test_server()->Start()); | 1396 ASSERT_TRUE(test_server()->Start()); |
1607 | 1397 |
1608 translate::LanguageDetectionDetails details; | 1398 translate::LanguageDetectionDetails details; |
1609 | 1399 |
1610 // Open a new tab with a page in English. | 1400 // Open a new tab with a page in English. |
(...skipping 1298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2909 #endif | 2699 #endif |
2910 EXPECT_EQ(exp_commit_size, rwhv_commit_size2); | 2700 EXPECT_EQ(exp_commit_size, rwhv_commit_size2); |
2911 EXPECT_EQ(exp_commit_size, wcv_commit_size2); | 2701 EXPECT_EQ(exp_commit_size, wcv_commit_size2); |
2912 gfx::Size exp_final_size(initial_wcv_size); | 2702 gfx::Size exp_final_size(initial_wcv_size); |
2913 exp_final_size.Enlarge(wcv_resize_insets.width(), | 2703 exp_final_size.Enlarge(wcv_resize_insets.width(), |
2914 wcv_resize_insets.height() + height_inset); | 2704 wcv_resize_insets.height() + height_inset); |
2915 EXPECT_EQ(exp_final_size, | 2705 EXPECT_EQ(exp_final_size, |
2916 web_contents->GetRenderWidgetHostView()->GetViewBounds().size()); | 2706 web_contents->GetRenderWidgetHostView()->GetViewBounds().size()); |
2917 EXPECT_EQ(exp_final_size, web_contents->GetContainerBounds().size()); | 2707 EXPECT_EQ(exp_final_size, web_contents->GetContainerBounds().size()); |
2918 } | 2708 } |
OLD | NEW |