OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "base/i18n/rtl.h" | 8 #include "base/i18n/rtl.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/sys_info.h" | 10 #include "base/sys_info.h" |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 private: | 87 private: |
88 int closing_count_; | 88 int closing_count_; |
89 | 89 |
90 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); | 90 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); |
91 }; | 91 }; |
92 | 92 |
93 } // namespace | 93 } // namespace |
94 | 94 |
95 class BrowserTest : public ExtensionBrowserTest { | 95 class BrowserTest : public ExtensionBrowserTest { |
96 public: | 96 public: |
97 // Used by phantom tab tests. Creates two tabs, pins the first and makes it | |
98 // a phantom tab (by closing it). | |
99 void PhantomTabTest() { | |
100 HTTPTestServer* server = StartHTTPServer(); | |
101 ASSERT_TRUE(server); | |
102 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | |
103 GURL url(server->TestServerPage("empty.html")); | |
104 TabStripModel* model = browser()->tabstrip_model(); | |
105 | |
106 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | |
107 | |
108 Extension* extension_app = GetExtension(); | |
109 | |
110 ui_test_utils::NavigateToURL(browser(), url); | |
111 | |
112 TabContents* app_contents = new TabContents(browser()->profile(), NULL, | |
113 MSG_ROUTING_NONE, NULL); | |
114 app_contents->SetExtensionApp(extension_app); | |
115 | |
116 model->AddTabContents(app_contents, 0, false, 0, false); | |
117 model->SetTabPinned(0, true); | |
118 ui_test_utils::NavigateToURL(browser(), url); | |
119 | |
120 // Close the first, which should make it a phantom. | |
121 model->CloseTabContentsAt(0, TabStripModel::CLOSE_CREATE_HISTORICAL_TAB); | |
122 | |
123 // There should still be two tabs. | |
124 ASSERT_EQ(2, browser()->tab_count()); | |
125 // The first tab should be a phantom. | |
126 EXPECT_TRUE(model->IsPhantomTab(0)); | |
127 // And the tab contents of the first tab should have changed. | |
128 EXPECT_TRUE(model->GetTabContentsAt(0) != app_contents); | |
129 } | |
130 | |
131 protected: | 97 protected: |
132 virtual void SetUpCommandLine(CommandLine* command_line) { | 98 virtual void SetUpCommandLine(CommandLine* command_line) { |
133 ExtensionBrowserTest::SetUpCommandLine(command_line); | 99 ExtensionBrowserTest::SetUpCommandLine(command_line); |
134 | 100 |
135 // Needed for phantom tab tests. | 101 // Needed for app tab tests. |
136 command_line->AppendSwitch(switches::kEnableApps); | 102 command_line->AppendSwitch(switches::kEnableApps); |
137 } | 103 } |
138 | 104 |
139 // In RTL locales wrap the page title with RTL embedding characters so that it | 105 // In RTL locales wrap the page title with RTL embedding characters so that it |
140 // matches the value returned by GetWindowTitle(). | 106 // matches the value returned by GetWindowTitle(). |
141 std::wstring LocaleWindowCaptionFromPageTitle( | 107 std::wstring LocaleWindowCaptionFromPageTitle( |
142 const std::wstring& expected_title) { | 108 const std::wstring& expected_title) { |
143 std::wstring page_title = WindowCaptionFromPageTitle(expected_title); | 109 std::wstring page_title = WindowCaptionFromPageTitle(expected_title); |
144 #if defined(OS_WIN) | 110 #if defined(OS_WIN) |
145 std::string locale = g_browser_process->GetApplicationLocale(); | 111 std::string locale = g_browser_process->GetApplicationLocale(); |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 static const FilePath::CharType* kIcon = | 386 static const FilePath::CharType* kIcon = |
421 FILE_PATH_LITERAL("test1.png"); | 387 FILE_PATH_LITERAL("test1.png"); |
422 GURL expected_favicon_url( | 388 GURL expected_favicon_url( |
423 ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory), | 389 ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory), |
424 FilePath(kIcon))); | 390 FilePath(kIcon))); |
425 EXPECT_EQ(expected_favicon_url.spec(), entry->favicon().url().spec()); | 391 EXPECT_EQ(expected_favicon_url.spec(), entry->favicon().url().spec()); |
426 } | 392 } |
427 | 393 |
428 // TODO(sky): get these to run on a Mac. | 394 // TODO(sky): get these to run on a Mac. |
429 #if !defined(OS_MACOSX) | 395 #if !defined(OS_MACOSX) |
430 IN_PROC_BROWSER_TEST_F(BrowserTest, PhantomTab) { | |
431 PhantomTabTest(); | |
432 } | |
433 | |
434 IN_PROC_BROWSER_TEST_F(BrowserTest, RevivePhantomTab) { | |
435 PhantomTabTest(); | |
436 | |
437 if (HasFatalFailure()) | |
438 return; | |
439 | |
440 TabStripModel* model = browser()->tabstrip_model(); | |
441 | |
442 // Revive the phantom tab by selecting it. | |
443 browser()->SelectTabContentsAt(0, true); | |
444 | |
445 // There should still be two tabs. | |
446 ASSERT_EQ(2, browser()->tab_count()); | |
447 // The first tab should no longer be a phantom. | |
448 EXPECT_FALSE(model->IsPhantomTab(0)); | |
449 } | |
450 | |
451 // Makes sure TabClosing is sent when uninstalling an extension that is an app | 396 // Makes sure TabClosing is sent when uninstalling an extension that is an app |
452 // tab. | 397 // tab. |
453 IN_PROC_BROWSER_TEST_F(BrowserTest, TabClosingWhenRemovingExtension) { | 398 IN_PROC_BROWSER_TEST_F(BrowserTest, TabClosingWhenRemovingExtension) { |
454 HTTPTestServer* server = StartHTTPServer(); | 399 HTTPTestServer* server = StartHTTPServer(); |
455 ASSERT_TRUE(server); | 400 ASSERT_TRUE(server); |
456 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 401 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
457 GURL url(server->TestServerPage("empty.html")); | 402 GURL url(server->TestServerPage("empty.html")); |
458 TabStripModel* model = browser()->tabstrip_model(); | 403 TabStripModel* model = browser()->tabstrip_model(); |
459 | 404 |
460 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 405 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
(...skipping 17 matching lines...) Expand all Loading... |
478 ExtensionsService* service = browser()->profile()->GetExtensionsService(); | 423 ExtensionsService* service = browser()->profile()->GetExtensionsService(); |
479 service->UninstallExtension(GetExtension()->id(), false); | 424 service->UninstallExtension(GetExtension()->id(), false); |
480 EXPECT_EQ(1, observer.closing_count()); | 425 EXPECT_EQ(1, observer.closing_count()); |
481 | 426 |
482 model->RemoveObserver(&observer); | 427 model->RemoveObserver(&observer); |
483 | 428 |
484 // There should only be one tab now. | 429 // There should only be one tab now. |
485 ASSERT_EQ(1, browser()->tab_count()); | 430 ASSERT_EQ(1, browser()->tab_count()); |
486 } | 431 } |
487 | 432 |
488 IN_PROC_BROWSER_TEST_F(BrowserTest, AppTabRemovedWhenExtensionUninstalled) { | |
489 PhantomTabTest(); | |
490 | |
491 Extension* extension = GetExtension(); | |
492 UninstallExtension(extension->id()); | |
493 | |
494 // The uninstall should have removed the tab. | |
495 ASSERT_EQ(1, browser()->tab_count()); | |
496 } | |
497 #endif // !defined(OS_MACOSX) | 433 #endif // !defined(OS_MACOSX) |
498 | 434 |
499 #if defined(OS_WIN) | 435 #if defined(OS_WIN) |
500 // http://crbug.com/46198. On XP/Vista, the failure rate is 5 ~ 6%. | 436 // http://crbug.com/46198. On XP/Vista, the failure rate is 5 ~ 6%. |
501 #define MAYBE_PageLanguageDetection FLAKY_PageLanguageDetection | 437 #define MAYBE_PageLanguageDetection FLAKY_PageLanguageDetection |
502 #else | 438 #else |
503 #define MAYBE_PageLanguageDetection PageLanguageDetection | 439 #define MAYBE_PageLanguageDetection PageLanguageDetection |
504 #endif | 440 #endif |
505 // Tests that the CLD (Compact Language Detection) works properly. | 441 // Tests that the CLD (Compact Language Detection) works properly. |
506 IN_PROC_BROWSER_TEST_F(BrowserTest, MAYBE_PageLanguageDetection) { | 442 IN_PROC_BROWSER_TEST_F(BrowserTest, MAYBE_PageLanguageDetection) { |
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 | 896 |
961 // The normal browser should now have four. | 897 // The normal browser should now have four. |
962 EXPECT_EQ(4, browser()->tab_count()); | 898 EXPECT_EQ(4, browser()->tab_count()); |
963 | 899 |
964 // Close the additional browsers. | 900 // Close the additional browsers. |
965 popup_browser->CloseAllTabs(); | 901 popup_browser->CloseAllTabs(); |
966 app_browser->CloseAllTabs(); | 902 app_browser->CloseAllTabs(); |
967 app_popup_browser->CloseAllTabs(); | 903 app_popup_browser->CloseAllTabs(); |
968 } | 904 } |
969 #endif | 905 #endif |
OLD | NEW |