| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "chrome/browser/ui/tabs/tab_strip_model.h" | 5 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 31 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 32 #include "chrome/test/base/testing_profile.h" | 32 #include "chrome/test/base/testing_profile.h" |
| 33 #include "components/web_modal/web_contents_modal_dialog_manager.h" | 33 #include "components/web_modal/web_contents_modal_dialog_manager.h" |
| 34 #include "content/public/browser/navigation_controller.h" | 34 #include "content/public/browser/navigation_controller.h" |
| 35 #include "content/public/browser/navigation_entry.h" | 35 #include "content/public/browser/navigation_entry.h" |
| 36 #include "content/public/browser/render_process_host.h" | 36 #include "content/public/browser/render_process_host.h" |
| 37 #include "content/public/browser/web_contents.h" | 37 #include "content/public/browser/web_contents.h" |
| 38 #include "content/public/browser/web_contents_observer.h" | 38 #include "content/public/browser/web_contents_observer.h" |
| 39 #include "content/public/test/web_contents_tester.h" | 39 #include "content/public/test/web_contents_tester.h" |
| 40 #include "extensions/common/extension.h" | 40 #include "extensions/common/extension.h" |
| 41 #include "testing/gmock/include/gmock/gmock.h" |
| 41 #include "testing/gtest/include/gtest/gtest.h" | 42 #include "testing/gtest/include/gtest/gtest.h" |
| 42 | 43 |
| 43 using content::SiteInstance; | 44 using content::SiteInstance; |
| 44 using content::WebContents; | 45 using content::WebContents; |
| 45 using content::WebContentsTester; | 46 using content::WebContentsTester; |
| 46 using extensions::Extension; | 47 using extensions::Extension; |
| 47 | 48 |
| 48 namespace { | 49 namespace { |
| 49 | 50 |
| 50 // Class used to delete a WebContents and TabStripModel when another WebContents | 51 // Class used to delete a WebContents and TabStripModel when another WebContents |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 | 426 |
| 426 private: | 427 private: |
| 427 std::vector<State> states_; | 428 std::vector<State> states_; |
| 428 | 429 |
| 429 bool empty_; | 430 bool empty_; |
| 430 TabStripModel* model_; | 431 TabStripModel* model_; |
| 431 | 432 |
| 432 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); | 433 DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver); |
| 433 }; | 434 }; |
| 434 | 435 |
| 436 class MockWebContentsObserver : public content::WebContentsObserver { |
| 437 public: |
| 438 explicit MockWebContentsObserver(WebContents* web_contents) |
| 439 : WebContentsObserver(web_contents) {} |
| 440 MOCK_METHOD2( |
| 441 WebContentsReplaced, |
| 442 void(WebContents* old_web_contents, WebContents* new_web_contents)); |
| 443 }; |
| 444 |
| 435 TEST_F(TabStripModelTest, TestBasicAPI) { | 445 TEST_F(TabStripModelTest, TestBasicAPI) { |
| 436 TabStripDummyDelegate delegate; | 446 TabStripDummyDelegate delegate; |
| 437 TabStripModel tabstrip(&delegate, profile()); | 447 TabStripModel tabstrip(&delegate, profile()); |
| 438 MockTabStripModelObserver observer(&tabstrip); | 448 MockTabStripModelObserver observer(&tabstrip); |
| 439 tabstrip.AddObserver(&observer); | 449 tabstrip.AddObserver(&observer); |
| 440 | 450 |
| 441 EXPECT_TRUE(tabstrip.empty()); | 451 EXPECT_TRUE(tabstrip.empty()); |
| 442 | 452 |
| 443 typedef MockTabStripModelObserver::State State; | 453 typedef MockTabStripModelObserver::State State; |
| 444 | 454 |
| (...skipping 1672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2117 | 2127 |
| 2118 ASSERT_EQ(1, tabstrip_observer.GetStateCount()); | 2128 ASSERT_EQ(1, tabstrip_observer.GetStateCount()); |
| 2119 | 2129 |
| 2120 state = State(new_contents, 1, MockTabStripModelObserver::REPLACED); | 2130 state = State(new_contents, 1, MockTabStripModelObserver::REPLACED); |
| 2121 state.src_contents = third_contents; | 2131 state.src_contents = third_contents; |
| 2122 EXPECT_TRUE(tabstrip_observer.StateEquals(0, state)); | 2132 EXPECT_TRUE(tabstrip_observer.StateEquals(0, state)); |
| 2123 | 2133 |
| 2124 strip.CloseAllTabs(); | 2134 strip.CloseAllTabs(); |
| 2125 } | 2135 } |
| 2126 | 2136 |
| 2137 // Makes sure the TabStripModel notifies a WebContents during its replacement. |
| 2138 TEST_F(TabStripModelTest, ReplaceNotifiesWebContents) { |
| 2139 TabStripDummyDelegate delegate; |
| 2140 TabStripModel strip(&delegate, profile()); |
| 2141 |
| 2142 WebContents* contents1 = CreateWebContents(); |
| 2143 WebContents* contents2 = CreateWebContents(); |
| 2144 strip.AppendWebContents(contents1, true); |
| 2145 |
| 2146 MockWebContentsObserver observer(contents1); |
| 2147 EXPECT_CALL(observer, WebContentsReplaced(contents1, contents2)); |
| 2148 delete strip.ReplaceWebContentsAt(0, contents2); |
| 2149 |
| 2150 strip.CloseAllTabs(); |
| 2151 } |
| 2152 |
| 2127 // Makes sure TabStripModel handles the case of deleting a tab while removing | 2153 // Makes sure TabStripModel handles the case of deleting a tab while removing |
| 2128 // another tab. | 2154 // another tab. |
| 2129 TEST_F(TabStripModelTest, DeleteFromDestroy) { | 2155 TEST_F(TabStripModelTest, DeleteFromDestroy) { |
| 2130 TabStripDummyDelegate delegate; | 2156 TabStripDummyDelegate delegate; |
| 2131 TabStripModel strip(&delegate, profile()); | 2157 TabStripModel strip(&delegate, profile()); |
| 2132 WebContents* contents1 = CreateWebContents(); | 2158 WebContents* contents1 = CreateWebContents(); |
| 2133 WebContents* contents2 = CreateWebContents(); | 2159 WebContents* contents2 = CreateWebContents(); |
| 2134 MockTabStripModelObserver tab_strip_model_observer(&strip); | 2160 MockTabStripModelObserver tab_strip_model_observer(&strip); |
| 2135 strip.AppendWebContents(contents1, true); | 2161 strip.AppendWebContents(contents1, true); |
| 2136 strip.AppendWebContents(contents2, true); | 2162 strip.AppendWebContents(contents2, true); |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2544 strip.AddObserver(&observer); | 2570 strip.AddObserver(&observer); |
| 2545 | 2571 |
| 2546 strip.ActivateTabAt(1, true); | 2572 strip.ActivateTabAt(1, true); |
| 2547 EXPECT_EQ(1, strip.active_index()); | 2573 EXPECT_EQ(1, strip.active_index()); |
| 2548 | 2574 |
| 2549 strip.MoveWebContentsAt(2, 3, true); | 2575 strip.MoveWebContentsAt(2, 3, true); |
| 2550 EXPECT_EQ(3, strip.active_index()); | 2576 EXPECT_EQ(3, strip.active_index()); |
| 2551 | 2577 |
| 2552 strip.CloseAllTabs(); | 2578 strip.CloseAllTabs(); |
| 2553 } | 2579 } |
| OLD | NEW |