diff options
author | erikchen <erikchen@chromium.org> | 2015-08-26 14:38:50 -0700 |
---|---|---|
committer | erikchen <erikchen@chromium.org> | 2015-08-26 21:40:26 +0000 |
commit | d97620b02c11c298b782694d72b37e7c0361d6ad (patch) | |
tree | d12b3cfb1904687c77bd8b04878f6a95bf35e757 | |
parent | aeb348db1aa2e3fdc6ed4851378af35574401dca (diff) | |
download | chromium_src-d97620b02c11c298b782694d72b37e7c0361d6ad.zip chromium_src-d97620b02c11c298b782694d72b37e7c0361d6ad.tar.gz chromium_src-d97620b02c11c298b782694d72b37e7c0361d6ad.tar.bz2 |
mac: Fix tab strip theme redrawing bug. (Merge to 2490)
The theme of the tab strip wasn't being redrawn as the window started/stopped
being main.
BUG=523495
TBR=rsesek@chromium.org, andresantoso@chromium.org
Review URL: https://codereview.chromium.org/1315483005 .
Cr-Commit-Position: refs/branch-heads/2490@{#36}
Cr-Branched-From: 7790a3535f2a81a03685eca31a32cf69ae0c114f-refs/heads/master@{#344925}
-rw-r--r-- | chrome/browser/ui/cocoa/browser_window_controller.mm | 6 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/browser_window_controller_unittest.mm | 20 |
2 files changed, 24 insertions, 2 deletions
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.mm b/chrome/browser/ui/cocoa/browser_window_controller.mm index b86492f..bc66515 100644 --- a/chrome/browser/ui/cocoa/browser_window_controller.mm +++ b/chrome/browser/ui/cocoa/browser_window_controller.mm @@ -603,7 +603,8 @@ using content::WebContents; [self saveWindowPositionIfNeeded]; } - [[[self window] contentView] cr_recursivelyInvokeBlock:^(id view) { + NSView* rootView = [[[self window] contentView] superview]; + [rootView cr_recursivelyInvokeBlock:^(id view) { if ([view conformsToProtocol:@protocol(ThemedWindowDrawing)]) [view windowDidChangeActive]; }]; @@ -613,7 +614,8 @@ using content::WebContents; } - (void)windowDidResignMain:(NSNotification*)notification { - [[[self window] contentView] cr_recursivelyInvokeBlock:^(id view) { + NSView* rootView = [[[self window] contentView] superview]; + [rootView cr_recursivelyInvokeBlock:^(id view) { if ([view conformsToProtocol:@protocol(ThemedWindowDrawing)]) [view windowDidChangeActive]; }]; diff --git a/chrome/browser/ui/cocoa/browser_window_controller_unittest.mm b/chrome/browser/ui/cocoa/browser_window_controller_unittest.mm index fab284b..9bc2ce5 100644 --- a/chrome/browser/ui/cocoa/browser_window_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/browser_window_controller_unittest.mm @@ -25,6 +25,7 @@ #include "content/public/test/test_utils.h" #include "testing/gmock/include/gmock/gmock.h" #import "testing/gtest_mac.h" +#import "third_party/ocmock/OCMock/OCMock.h" using ::testing::Return; @@ -702,6 +703,25 @@ TEST_F(BrowserWindowControllerTest, BookmarkBarHitTest) { EXPECT_TRUE([[contentView hitTest:point] isDescendantOf:bookmarkView]); } +// Check that when the window becomes/resigns main, the tab strip's background +// view is redrawn. +TEST_F(BrowserWindowControllerTest, TabStripBackgroundViewRedrawTest) { + NSView* view = controller_.tabStripBackgroundView; + id partial_mock = [OCMockObject partialMockForObject:view]; + + [[partial_mock expect] setNeedsDisplay:YES]; + [[NSNotificationCenter defaultCenter] + postNotificationName:NSWindowDidBecomeMainNotification + object:controller_.window]; + [partial_mock verify]; + + [[partial_mock expect] setNeedsDisplay:YES]; + [[NSNotificationCenter defaultCenter] + postNotificationName:NSWindowDidResignMainNotification + object:controller_.window]; + [partial_mock verify]; +} + @interface BrowserWindowControllerFakeFullscreen : BrowserWindowController { @private // We release the window ourselves, so we don't have to rely on the unittest |