| 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 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #import "base/mac/scoped_nsobject.h" | 7 #import "base/mac/scoped_nsobject.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "chrome/app/chrome_command_ids.h" | 10 #include "chrome/app/chrome_command_ids.h" |
| 11 #include "chrome/browser/command_updater.h" | 11 #include "chrome/browser/command_updater.h" |
| 12 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" |
| 13 #include "chrome/browser/ui/browser_command_controller.h" | 13 #include "chrome/browser/ui/browser_command_controller.h" |
| 14 #include "chrome/browser/ui/browser_commands.h" | 14 #include "chrome/browser/ui/browser_commands.h" |
| 15 #include "chrome/browser/ui/browser_list.h" | 15 #include "chrome/browser/ui/browser_list.h" |
| 16 #include "chrome/browser/ui/browser_list_observer.h" | 16 #include "chrome/browser/ui/browser_list_observer.h" |
| 17 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" | 17 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
| 18 #import "chrome/browser/ui/cocoa/image_button_cell.h" | 18 #import "chrome/browser/ui/cocoa/image_button_cell.h" |
| 19 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" | 19 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" |
| 20 #import "chrome/browser/ui/cocoa/view_resizer_pong.h" | |
| 21 #include "chrome/common/pref_names.h" | 20 #include "chrome/common/pref_names.h" |
| 22 #include "chrome/test/base/testing_profile.h" | 21 #include "chrome/test/base/testing_profile.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 24 #import "testing/gtest_mac.h" | 23 #import "testing/gtest_mac.h" |
| 25 #include "testing/platform_test.h" | 24 #include "testing/platform_test.h" |
| 26 | 25 |
| 27 // An NSView that fakes out hitTest:. | 26 // An NSView that fakes out hitTest:. |
| 28 @interface HitView : NSView { | 27 @interface HitView : NSView { |
| 29 id hitTestReturn_; | 28 id hitTestReturn_; |
| 30 } | 29 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 void SetUp() override { | 77 void SetUp() override { |
| 79 CocoaProfileTest::SetUp(); | 78 CocoaProfileTest::SetUp(); |
| 80 ASSERT_TRUE(browser()); | 79 ASSERT_TRUE(browser()); |
| 81 | 80 |
| 82 CommandUpdater* updater = | 81 CommandUpdater* updater = |
| 83 browser()->command_controller()->command_updater(); | 82 browser()->command_controller()->command_updater(); |
| 84 // The default state for the commands is true, set a couple to false to | 83 // The default state for the commands is true, set a couple to false to |
| 85 // ensure they get picked up correct on initialization | 84 // ensure they get picked up correct on initialization |
| 86 updater->UpdateCommandEnabled(IDC_BACK, false); | 85 updater->UpdateCommandEnabled(IDC_BACK, false); |
| 87 updater->UpdateCommandEnabled(IDC_FORWARD, false); | 86 updater->UpdateCommandEnabled(IDC_FORWARD, false); |
| 88 resizeDelegate_.reset([[ViewResizerPong alloc] init]); | |
| 89 bar_.reset([[TestToolbarController alloc] | 87 bar_.reset([[TestToolbarController alloc] |
| 90 initWithCommands:browser()->command_controller()->command_updater() | 88 initWithCommands:browser()->command_controller()->command_updater() |
| 91 profile:profile() | 89 profile:profile() |
| 92 browser:browser() | 90 browser:browser()]); |
| 93 resizeDelegate:resizeDelegate_.get()]); | |
| 94 EXPECT_TRUE([bar_ view]); | 91 EXPECT_TRUE([bar_ view]); |
| 95 NSView* parent = [test_window() contentView]; | 92 NSView* parent = [test_window() contentView]; |
| 96 [parent addSubview:[bar_ view]]; | 93 [parent addSubview:[bar_ view]]; |
| 97 } | 94 } |
| 98 | 95 |
| 99 void TearDown() override { | 96 void TearDown() override { |
| 100 bar_.reset(); // browser() must outlive the ToolbarController. | 97 bar_.reset(); // browser() must outlive the ToolbarController. |
| 101 CocoaProfileTest::TearDown(); | 98 CocoaProfileTest::TearDown(); |
| 102 } | 99 } |
| 103 | 100 |
| 104 // Make sure the enabled state of the view is the same as the corresponding | 101 // Make sure the enabled state of the view is the same as the corresponding |
| 105 // command in the updater. The views are in the declaration order of outlets. | 102 // command in the updater. The views are in the declaration order of outlets. |
| 106 void CompareState(CommandUpdater* updater, NSArray* views) { | 103 void CompareState(CommandUpdater* updater, NSArray* views) { |
| 107 EXPECT_EQ(updater->IsCommandEnabled(IDC_BACK), | 104 EXPECT_EQ(updater->IsCommandEnabled(IDC_BACK), |
| 108 [[views objectAtIndex:kBackIndex] isEnabled] ? true : false); | 105 [[views objectAtIndex:kBackIndex] isEnabled] ? true : false); |
| 109 EXPECT_EQ(updater->IsCommandEnabled(IDC_FORWARD), | 106 EXPECT_EQ(updater->IsCommandEnabled(IDC_FORWARD), |
| 110 [[views objectAtIndex:kForwardIndex] isEnabled] ? true : false); | 107 [[views objectAtIndex:kForwardIndex] isEnabled] ? true : false); |
| 111 EXPECT_EQ(updater->IsCommandEnabled(IDC_RELOAD), | 108 EXPECT_EQ(updater->IsCommandEnabled(IDC_RELOAD), |
| 112 [[views objectAtIndex:kReloadIndex] isEnabled] ? true : false); | 109 [[views objectAtIndex:kReloadIndex] isEnabled] ? true : false); |
| 113 EXPECT_EQ(updater->IsCommandEnabled(IDC_HOME), | 110 EXPECT_EQ(updater->IsCommandEnabled(IDC_HOME), |
| 114 [[views objectAtIndex:kHomeIndex] isEnabled] ? true : false); | 111 [[views objectAtIndex:kHomeIndex] isEnabled] ? true : false); |
| 115 } | 112 } |
| 116 | 113 |
| 117 base::scoped_nsobject<ViewResizerPong> resizeDelegate_; | |
| 118 base::scoped_nsobject<TestToolbarController> bar_; | 114 base::scoped_nsobject<TestToolbarController> bar_; |
| 119 }; | 115 }; |
| 120 | 116 |
| 121 TEST_VIEW(ToolbarControllerTest, [bar_ view]) | 117 TEST_VIEW(ToolbarControllerTest, [bar_ view]) |
| 122 | 118 |
| 123 // Test the initial state that everything is sync'd up | 119 // Test the initial state that everything is sync'd up |
| 124 TEST_F(ToolbarControllerTest, InitialState) { | 120 TEST_F(ToolbarControllerTest, InitialState) { |
| 125 CommandUpdater* updater = browser()->command_controller()->command_updater(); | 121 CommandUpdater* updater = browser()->command_controller()->command_updater(); |
| 126 CompareState(updater, [bar_ toolbarViews]); | 122 CompareState(updater, [bar_ toolbarViews]); |
| 127 } | 123 } |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 private: | 287 private: |
| 292 base::RunLoop run_loop_; | 288 base::RunLoop run_loop_; |
| 293 | 289 |
| 294 DISALLOW_COPY_AND_ASSIGN(BrowserRemovedObserver); | 290 DISALLOW_COPY_AND_ASSIGN(BrowserRemovedObserver); |
| 295 }; | 291 }; |
| 296 | 292 |
| 297 // Test that ToolbarController can be destroyed after the Browser. | 293 // Test that ToolbarController can be destroyed after the Browser. |
| 298 // This can happen because the ToolbarController is retained by both the | 294 // This can happen because the ToolbarController is retained by both the |
| 299 // BrowserWindowController and -[ToolbarController view], the latter of which is | 295 // BrowserWindowController and -[ToolbarController view], the latter of which is |
| 300 // autoreleased. | 296 // autoreleased. |
| 301 // TODO(nhiroki): This is disabled due to http://crbug.com/506745. | 297 TEST_F(ToolbarControllerTest, ToolbarDestroyedAfterBrowser) { |
| 302 TEST_F(ToolbarControllerTest, DISABLED_ToolbarDestroyedAfterBrowser) { | |
| 303 BrowserRemovedObserver observer; | 298 BrowserRemovedObserver observer; |
| 299 // This is normally called by BrowserWindowController, but since |bar_| is not |
| 300 // owned by one, call it here. |
| 301 [bar_ browserWillBeDestroyed]; |
| 304 CloseBrowserWindow(); | 302 CloseBrowserWindow(); |
| 305 observer.WaitUntilBrowserRemoved(); | 303 observer.WaitUntilBrowserRemoved(); |
| 306 // |bar_| is released in TearDown(). | 304 // |bar_| is released in TearDown(). |
| 307 } | 305 } |
| 308 | 306 |
| 309 } // namespace | 307 } // namespace |
| OLD | NEW |