summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerikchen <erikchen@chromium.org>2015-08-26 14:38:50 -0700
committererikchen <erikchen@chromium.org>2015-08-26 21:40:26 +0000
commitd97620b02c11c298b782694d72b37e7c0361d6ad (patch)
treed12b3cfb1904687c77bd8b04878f6a95bf35e757
parentaeb348db1aa2e3fdc6ed4851378af35574401dca (diff)
downloadchromium_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.mm6
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller_unittest.mm20
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