| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
| 9 #include "base/sys_info.h" | 9 #include "base/sys_info.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| 11 #include "chrome/app/chrome_command_ids.h" | 11 #include "chrome/app/chrome_command_ids.h" |
| 12 #include "chrome/browser/defaults.h" | 12 #include "chrome/browser/defaults.h" |
| 13 #include "chrome/browser/extensions/extension_browsertest.h" | 13 #include "chrome/browser/extensions/extension_browsertest.h" |
| 14 #include "chrome/browser/extensions/extension_service.h" | 14 #include "chrome/browser/extensions/extension_service.h" |
| 15 #include "chrome/browser/extensions/extension_tab_helper.h" |
| 15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/browser/tabs/pinned_tab_codec.h" | 17 #include "chrome/browser/tabs/pinned_tab_codec.h" |
| 17 #include "chrome/browser/tabs/tab_strip_model.h" | 18 #include "chrome/browser/tabs/tab_strip_model.h" |
| 18 #include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h" | 19 #include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h" |
| 19 #include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h" | 20 #include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h" |
| 20 #include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h" | 21 #include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h" |
| 21 #include "chrome/browser/ui/browser.h" | 22 #include "chrome/browser/ui/browser.h" |
| 22 #include "chrome/browser/ui/browser_init.h" | 23 #include "chrome/browser/ui/browser_init.h" |
| 23 #include "chrome/browser/ui/browser_list.h" | 24 #include "chrome/browser/ui/browser_list.h" |
| 24 #include "chrome/browser/ui/browser_navigator.h" | 25 #include "chrome/browser/ui/browser_navigator.h" |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 | 484 |
| 484 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 485 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 485 | 486 |
| 486 const Extension* extension_app = GetExtension(); | 487 const Extension* extension_app = GetExtension(); |
| 487 | 488 |
| 488 ui_test_utils::NavigateToURL(browser(), url); | 489 ui_test_utils::NavigateToURL(browser(), url); |
| 489 | 490 |
| 490 TabContentsWrapper* app_contents = | 491 TabContentsWrapper* app_contents = |
| 491 Browser::TabContentsFactory(browser()->profile(), NULL, | 492 Browser::TabContentsFactory(browser()->profile(), NULL, |
| 492 MSG_ROUTING_NONE, NULL, NULL); | 493 MSG_ROUTING_NONE, NULL, NULL); |
| 493 app_contents->tab_contents()->SetExtensionApp(extension_app); | 494 app_contents->extension_tab_helper()->SetExtensionApp(extension_app); |
| 494 | 495 |
| 495 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); | 496 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); |
| 496 model->SetTabPinned(0, true); | 497 model->SetTabPinned(0, true); |
| 497 ui_test_utils::NavigateToURL(browser(), url); | 498 ui_test_utils::NavigateToURL(browser(), url); |
| 498 | 499 |
| 499 MockTabStripModelObserver observer; | 500 MockTabStripModelObserver observer; |
| 500 model->AddObserver(&observer); | 501 model->AddObserver(&observer); |
| 501 | 502 |
| 502 // Uninstall the extension and make sure TabClosing is sent. | 503 // Uninstall the extension and make sure TabClosing is sent. |
| 503 ExtensionService* service = browser()->profile()->GetExtensionService(); | 504 ExtensionService* service = browser()->profile()->GetExtensionService(); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 // Add an pinned app tab. | 605 // Add an pinned app tab. |
| 605 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 606 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
| 606 GURL url(test_server()->GetURL("empty.html")); | 607 GURL url(test_server()->GetURL("empty.html")); |
| 607 TabStripModel* model = browser()->tabstrip_model(); | 608 TabStripModel* model = browser()->tabstrip_model(); |
| 608 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 609 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 609 const Extension* extension_app = GetExtension(); | 610 const Extension* extension_app = GetExtension(); |
| 610 ui_test_utils::NavigateToURL(browser(), url); | 611 ui_test_utils::NavigateToURL(browser(), url); |
| 611 TabContentsWrapper* app_contents = | 612 TabContentsWrapper* app_contents = |
| 612 Browser::TabContentsFactory(browser()->profile(), NULL, | 613 Browser::TabContentsFactory(browser()->profile(), NULL, |
| 613 MSG_ROUTING_NONE, NULL, NULL); | 614 MSG_ROUTING_NONE, NULL, NULL); |
| 614 app_contents->tab_contents()->SetExtensionApp(extension_app); | 615 app_contents->extension_tab_helper()->SetExtensionApp(extension_app); |
| 615 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); | 616 model->AddTabContents(app_contents, 0, 0, TabStripModel::ADD_NONE); |
| 616 model->SetTabPinned(0, true); | 617 model->SetTabPinned(0, true); |
| 617 ui_test_utils::NavigateToURL(browser(), url); | 618 ui_test_utils::NavigateToURL(browser(), url); |
| 618 | 619 |
| 619 // Add a non pinned tab. | 620 // Add a non pinned tab. |
| 620 browser()->NewTab(); | 621 browser()->NewTab(); |
| 621 | 622 |
| 622 // Add a pinned non-app tab. | 623 // Add a pinned non-app tab. |
| 623 browser()->NewTab(); | 624 browser()->NewTab(); |
| 624 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); | 625 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 EXPECT_FALSE(new_model->IsAppTab(2)); | 658 EXPECT_FALSE(new_model->IsAppTab(2)); |
| 658 | 659 |
| 659 EXPECT_TRUE(new_model->IsTabPinned(0)); | 660 EXPECT_TRUE(new_model->IsTabPinned(0)); |
| 660 EXPECT_TRUE(new_model->IsTabPinned(1)); | 661 EXPECT_TRUE(new_model->IsTabPinned(1)); |
| 661 EXPECT_FALSE(new_model->IsTabPinned(2)); | 662 EXPECT_FALSE(new_model->IsTabPinned(2)); |
| 662 | 663 |
| 663 EXPECT_EQ(browser()->GetHomePage(), | 664 EXPECT_EQ(browser()->GetHomePage(), |
| 664 new_model->GetTabContentsAt(2)->tab_contents()->GetURL()); | 665 new_model->GetTabContentsAt(2)->tab_contents()->GetURL()); |
| 665 | 666 |
| 666 EXPECT_TRUE( | 667 EXPECT_TRUE( |
| 667 new_model->GetTabContentsAt(0)->tab_contents()->extension_app() == | 668 new_model->GetTabContentsAt(0)->extension_tab_helper()->extension_app() == |
| 668 extension_app); | 669 extension_app); |
| 669 } | 670 } |
| 670 #endif // !defined(OS_CHROMEOS) | 671 #endif // !defined(OS_CHROMEOS) |
| 671 | 672 |
| 672 // This test verifies we don't crash when closing the last window and the app | 673 // This test verifies we don't crash when closing the last window and the app |
| 673 // menu is showing. | 674 // menu is showing. |
| 674 IN_PROC_BROWSER_TEST_F(BrowserTest, CloseWithAppMenuOpen) { | 675 IN_PROC_BROWSER_TEST_F(BrowserTest, CloseWithAppMenuOpen) { |
| 675 if (browser_defaults::kBrowserAliveWithNoWindows) | 676 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 676 return; | 677 return; |
| 677 | 678 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 689 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); | 690 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); |
| 690 const Extension* extension_app = GetExtension(); | 691 const Extension* extension_app = GetExtension(); |
| 691 | 692 |
| 692 // Launch it in a window, as AppLauncherHandler::HandleLaunchApp() would. | 693 // Launch it in a window, as AppLauncherHandler::HandleLaunchApp() would. |
| 693 TabContents* app_window = Browser::OpenApplication( | 694 TabContents* app_window = Browser::OpenApplication( |
| 694 browser()->profile(), extension_app, extension_misc::LAUNCH_WINDOW, NULL); | 695 browser()->profile(), extension_app, extension_misc::LAUNCH_WINDOW, NULL); |
| 695 ASSERT_TRUE(app_window); | 696 ASSERT_TRUE(app_window); |
| 696 | 697 |
| 697 // Apps launched in a window from the NTP do not have extension_app set in | 698 // Apps launched in a window from the NTP do not have extension_app set in |
| 698 // tab contents. | 699 // tab contents. |
| 699 EXPECT_FALSE(app_window->extension_app()); | 700 TabContentsWrapper* wrapper = |
| 701 TabContentsWrapper::GetCurrentWrapperForContents(app_window); |
| 702 EXPECT_FALSE(wrapper->extension_tab_helper()->extension_app()); |
| 700 EXPECT_EQ(extension_app->GetFullLaunchURL(), app_window->GetURL()); | 703 EXPECT_EQ(extension_app->GetFullLaunchURL(), app_window->GetURL()); |
| 701 | 704 |
| 702 // The launch should have created a new browser. | 705 // The launch should have created a new browser. |
| 703 ASSERT_EQ(2u, BrowserList::GetBrowserCount(browser()->profile())); | 706 ASSERT_EQ(2u, BrowserList::GetBrowserCount(browser()->profile())); |
| 704 | 707 |
| 705 // Find the new browser. | 708 // Find the new browser. |
| 706 Browser* new_browser = NULL; | 709 Browser* new_browser = NULL; |
| 707 for (BrowserList::const_iterator i = BrowserList::begin(); | 710 for (BrowserList::const_iterator i = BrowserList::begin(); |
| 708 i != BrowserList::end() && !new_browser; ++i) { | 711 i != BrowserList::end() && !new_browser; ++i) { |
| 709 if (*i != browser()) | 712 if (*i != browser()) |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 | 801 |
| 799 // The normal browser should now have four. | 802 // The normal browser should now have four. |
| 800 EXPECT_EQ(4, browser()->tab_count()); | 803 EXPECT_EQ(4, browser()->tab_count()); |
| 801 | 804 |
| 802 // Close the additional browsers. | 805 // Close the additional browsers. |
| 803 popup_browser->CloseAllTabs(); | 806 popup_browser->CloseAllTabs(); |
| 804 app_browser->CloseAllTabs(); | 807 app_browser->CloseAllTabs(); |
| 805 app_popup_browser->CloseAllTabs(); | 808 app_popup_browser->CloseAllTabs(); |
| 806 } | 809 } |
| 807 #endif | 810 #endif |
| OLD | NEW |