| 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/compiler_specific.h" | 8 #include "base/compiler_specific.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" |
| 11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
| 12 #include "chrome/app/chrome_command_ids.h" | 12 #include "chrome/app/chrome_command_ids.h" |
| 13 #include "chrome/browser/app_modal_dialog.h" | 13 #include "chrome/browser/app_modal_dialog.h" |
| 14 #include "chrome/browser/browser_process.h" | 14 #include "chrome/browser/browser_process.h" |
| 15 #include "chrome/browser/defaults.h" | 15 #include "chrome/browser/defaults.h" |
| 16 #include "chrome/browser/extensions/extension_browsertest.h" | 16 #include "chrome/browser/extensions/extension_browsertest.h" |
| 17 #include "chrome/browser/extensions/extensions_service.h" | 17 #include "chrome/browser/extensions/extensions_service.h" |
| 18 #include "chrome/browser/js_modal_dialog.h" | 18 #include "chrome/browser/js_modal_dialog.h" |
| 19 #include "chrome/browser/native_app_modal_dialog.h" | 19 #include "chrome/browser/native_app_modal_dialog.h" |
| 20 #include "chrome/browser/profile.h" | 20 #include "chrome/browser/profile.h" |
| 21 #include "chrome/browser/renderer_host/render_process_host.h" | 21 #include "chrome/browser/renderer_host/render_process_host.h" |
| 22 #include "chrome/browser/renderer_host/render_view_host.h" | 22 #include "chrome/browser/renderer_host/render_view_host.h" |
| 23 #include "chrome/browser/tab_contents/tab_contents.h" | 23 #include "chrome/browser/tab_contents/tab_contents.h" |
| 24 #include "chrome/browser/tab_contents_wrapper.h" |
| 24 #include "chrome/browser/tabs/pinned_tab_codec.h" | 25 #include "chrome/browser/tabs/pinned_tab_codec.h" |
| 25 #include "chrome/browser/tabs/tab_strip_model.h" | 26 #include "chrome/browser/tabs/tab_strip_model.h" |
| 26 #include "chrome/browser/ui/browser.h" | 27 #include "chrome/browser/ui/browser.h" |
| 27 #include "chrome/browser/ui/browser_init.h" | 28 #include "chrome/browser/ui/browser_init.h" |
| 28 #include "chrome/browser/ui/browser_list.h" | 29 #include "chrome/browser/ui/browser_list.h" |
| 29 #include "chrome/browser/ui/browser_navigator.h" | 30 #include "chrome/browser/ui/browser_navigator.h" |
| 30 #include "chrome/browser/ui/browser_window.h" | 31 #include "chrome/browser/ui/browser_window.h" |
| 31 #include "chrome/common/chrome_switches.h" | 32 #include "chrome/common/chrome_switches.h" |
| 32 #include "chrome/common/extensions/extension.h" | 33 #include "chrome/common/extensions/extension.h" |
| 33 #include "chrome/common/url_constants.h" | 34 #include "chrome/common/url_constants.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 !i.IsAtEnd(); i.Advance()) | 82 !i.IsAtEnd(); i.Advance()) |
| 82 ++result; | 83 ++result; |
| 83 return result; | 84 return result; |
| 84 } | 85 } |
| 85 | 86 |
| 86 class MockTabStripModelObserver : public TabStripModelObserver { | 87 class MockTabStripModelObserver : public TabStripModelObserver { |
| 87 public: | 88 public: |
| 88 MockTabStripModelObserver() : closing_count_(0) {} | 89 MockTabStripModelObserver() : closing_count_(0) {} |
| 89 | 90 |
| 90 virtual void TabClosingAt(TabStripModel* tab_strip_model, | 91 virtual void TabClosingAt(TabStripModel* tab_strip_model, |
| 91 TabContents* contents, | 92 TabContentsWrapper* contents, |
| 92 int index) { | 93 int index) { |
| 93 closing_count_++; | 94 closing_count_++; |
| 94 } | 95 } |
| 95 | 96 |
| 96 int closing_count() const { return closing_count_; } | 97 int closing_count() const { return closing_count_; } |
| 97 | 98 |
| 98 private: | 99 private: |
| 99 int closing_count_; | 100 int closing_count_; |
| 100 | 101 |
| 101 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); | 102 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 418 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
| 418 GURL url(test_server()->GetURL("empty.html")); | 419 GURL url(test_server()->GetURL("empty.html")); |
| 419 TabStripModel* model = browser()->tabstrip_model(); | 420 TabStripModel* model = browser()->tabstrip_model(); |
| 420 | 421 |
| 421 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 422 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 422 | 423 |
| 423 const Extension* extension_app = GetExtension(); | 424 const Extension* extension_app = GetExtension(); |
| 424 | 425 |
| 425 ui_test_utils::NavigateToURL(browser(), url); | 426 ui_test_utils::NavigateToURL(browser(), url); |
| 426 | 427 |
| 427 TabContents* app_contents = new TabContents(browser()->profile(), NULL, | 428 TabContentsWrapper* app_contents = |
| 428 MSG_ROUTING_NONE, NULL, NULL); | 429 Browser::TabContentsFactory(browser()->profile(), NULL, |
| 429 app_contents->SetExtensionApp(extension_app); | 430 MSG_ROUTING_NONE, NULL, NULL); |
| 431 app_contents->tab_contents()->SetExtensionApp(extension_app); |
| 430 | 432 |
| 431 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); | 433 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); |
| 432 model->SetTabPinned(0, true); | 434 model->SetTabPinned(0, true); |
| 433 ui_test_utils::NavigateToURL(browser(), url); | 435 ui_test_utils::NavigateToURL(browser(), url); |
| 434 | 436 |
| 435 MockTabStripModelObserver observer; | 437 MockTabStripModelObserver observer; |
| 436 model->AddObserver(&observer); | 438 model->AddObserver(&observer); |
| 437 | 439 |
| 438 // Uninstall the extension and make sure TabClosing is sent. | 440 // Uninstall the extension and make sure TabClosing is sent. |
| 439 ExtensionsService* service = browser()->profile()->GetExtensionsService(); | 441 ExtensionsService* service = browser()->profile()->GetExtensionsService(); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 IN_PROC_BROWSER_TEST_F(BrowserTest, RestorePinnedTabs) { | 500 IN_PROC_BROWSER_TEST_F(BrowserTest, RestorePinnedTabs) { |
| 499 ASSERT_TRUE(test_server()->Start()); | 501 ASSERT_TRUE(test_server()->Start()); |
| 500 | 502 |
| 501 // Add an pinned app tab. | 503 // Add an pinned app tab. |
| 502 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 504 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
| 503 GURL url(test_server()->GetURL("empty.html")); | 505 GURL url(test_server()->GetURL("empty.html")); |
| 504 TabStripModel* model = browser()->tabstrip_model(); | 506 TabStripModel* model = browser()->tabstrip_model(); |
| 505 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 507 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 506 const Extension* extension_app = GetExtension(); | 508 const Extension* extension_app = GetExtension(); |
| 507 ui_test_utils::NavigateToURL(browser(), url); | 509 ui_test_utils::NavigateToURL(browser(), url); |
| 508 TabContents* app_contents = new TabContents(browser()->profile(), NULL, | 510 TabContentsWrapper* app_contents = |
| 509 MSG_ROUTING_NONE, NULL, NULL); | 511 Browser::TabContentsFactory(browser()->profile(), NULL, |
| 510 app_contents->SetExtensionApp(extension_app); | 512 MSG_ROUTING_NONE, NULL, NULL); |
| 513 app_contents->tab_contents()->SetExtensionApp(extension_app); |
| 511 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); | 514 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); |
| 512 model->SetTabPinned(0, true); | 515 model->SetTabPinned(0, true); |
| 513 ui_test_utils::NavigateToURL(browser(), url); | 516 ui_test_utils::NavigateToURL(browser(), url); |
| 514 | 517 |
| 515 // Add a non pinned tab. | 518 // Add a non pinned tab. |
| 516 browser()->NewTab(); | 519 browser()->NewTab(); |
| 517 | 520 |
| 518 // Add a pinned non-app tab. | 521 // Add a pinned non-app tab. |
| 519 browser()->NewTab(); | 522 browser()->NewTab(); |
| 520 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); | 523 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 546 ASSERT_EQ(2, new_browser->tab_count()); | 549 ASSERT_EQ(2, new_browser->tab_count()); |
| 547 | 550 |
| 548 // Make sure the state matches. | 551 // Make sure the state matches. |
| 549 TabStripModel* new_model = new_browser->tabstrip_model(); | 552 TabStripModel* new_model = new_browser->tabstrip_model(); |
| 550 EXPECT_TRUE(new_model->IsAppTab(0)); | 553 EXPECT_TRUE(new_model->IsAppTab(0)); |
| 551 EXPECT_FALSE(new_model->IsAppTab(1)); | 554 EXPECT_FALSE(new_model->IsAppTab(1)); |
| 552 | 555 |
| 553 EXPECT_TRUE(new_model->IsTabPinned(0)); | 556 EXPECT_TRUE(new_model->IsTabPinned(0)); |
| 554 EXPECT_TRUE(new_model->IsTabPinned(1)); | 557 EXPECT_TRUE(new_model->IsTabPinned(1)); |
| 555 | 558 |
| 556 EXPECT_TRUE(new_model->GetTabContentsAt(0)->extension_app() == | 559 EXPECT_TRUE( |
| 557 extension_app); | 560 new_model->GetTabContentsAt(0)->tab_contents()->extension_app() == |
| 561 extension_app); |
| 558 } | 562 } |
| 559 #endif // !defined(OS_CHROMEOS) | 563 #endif // !defined(OS_CHROMEOS) |
| 560 | 564 |
| 561 // This test verifies we don't crash when closing the last window and the app | 565 // This test verifies we don't crash when closing the last window and the app |
| 562 // menu is showing. | 566 // menu is showing. |
| 563 IN_PROC_BROWSER_TEST_F(BrowserTest, CloseWithAppMenuOpen) { | 567 IN_PROC_BROWSER_TEST_F(BrowserTest, CloseWithAppMenuOpen) { |
| 564 if (browser_defaults::kBrowserAliveWithNoWindows) | 568 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 565 return; | 569 return; |
| 566 | 570 |
| 567 // We need a message loop running for menus on windows. | 571 // We need a message loop running for menus on windows. |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 646 | 650 |
| 647 // The normal browser should now have four. | 651 // The normal browser should now have four. |
| 648 EXPECT_EQ(4, browser()->tab_count()); | 652 EXPECT_EQ(4, browser()->tab_count()); |
| 649 | 653 |
| 650 // Close the additional browsers. | 654 // Close the additional browsers. |
| 651 popup_browser->CloseAllTabs(); | 655 popup_browser->CloseAllTabs(); |
| 652 app_browser->CloseAllTabs(); | 656 app_browser->CloseAllTabs(); |
| 653 app_popup_browser->CloseAllTabs(); | 657 app_popup_browser->CloseAllTabs(); |
| 654 } | 658 } |
| 655 #endif | 659 #endif |
| OLD | NEW |