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 |