| 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 "chrome/browser/ui/cocoa/tab_contents/tab_contents_controller.h" | 5 #import "chrome/browser/ui/cocoa/tab_contents/tab_contents_controller.h" | 
| 6 | 6 | 
| 7 #include <stdint.h> | 7 #include <stdint.h> | 
| 8 | 8 | 
| 9 #include <utility> | 9 #include <utility> | 
| 10 | 10 | 
| 11 #include "base/mac/scoped_cftyperef.h" | 11 #include "base/mac/scoped_cftyperef.h" | 
| 12 #include "base/mac/scoped_nsobject.h" | 12 #include "base/mac/scoped_nsobject.h" | 
| 13 #include "base/macros.h" | 13 #include "base/macros.h" | 
| 14 #include "chrome/browser/devtools/devtools_window.h" | 14 #include "chrome/browser/devtools/devtools_window.h" | 
| 15 #import "chrome/browser/themes/theme_properties.h" | 15 #import "chrome/browser/themes/theme_properties.h" | 
| 16 #import "chrome/browser/themes/theme_service.h" | 16 #import "chrome/browser/themes/theme_service.h" | 
| 17 #import "chrome/browser/ui/cocoa/themed_window.h" | 17 #import "chrome/browser/ui/cocoa/themed_window.h" | 
| 18 #include "chrome/browser/ui/view_ids.h" | 18 #include "chrome/browser/ui/view_ids.h" | 
|  | 19 #include "chrome/grit/theme_resources.h" | 
| 19 #include "content/public/browser/render_view_host.h" | 20 #include "content/public/browser/render_view_host.h" | 
| 20 #include "content/public/browser/render_widget_host.h" | 21 #include "content/public/browser/render_widget_host.h" | 
| 21 #include "content/public/browser/render_widget_host_view.h" | 22 #include "content/public/browser/render_widget_host_view.h" | 
| 22 #include "content/public/browser/web_contents.h" | 23 #include "content/public/browser/web_contents.h" | 
| 23 #include "content/public/browser/web_contents_observer.h" | 24 #include "content/public/browser/web_contents_observer.h" | 
| 24 #include "skia/ext/skia_utils_mac.h" | 25 #include "skia/ext/skia_utils_mac.h" | 
| 25 #include "ui/base/cocoa/animation_utils.h" | 26 #include "ui/base/cocoa/animation_utils.h" | 
| 26 #include "ui/gfx/geometry/rect.h" | 27 #include "ui/gfx/geometry/rect.h" | 
| 27 | 28 | 
| 28 using content::WebContents; | 29 using content::WebContents; | 
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 83 @end | 84 @end | 
| 84 | 85 | 
| 85 // An NSView with special-case handling for when the contents view does not | 86 // An NSView with special-case handling for when the contents view does not | 
| 86 // expand to fill the entire tab contents area. See 'AutoEmbedFullscreen mode' | 87 // expand to fill the entire tab contents area. See 'AutoEmbedFullscreen mode' | 
| 87 // in header file comments. | 88 // in header file comments. | 
| 88 @interface TabContentsContainerView : NSView { | 89 @interface TabContentsContainerView : NSView { | 
| 89  @private | 90  @private | 
| 90   TabContentsController* delegate_;  // weak | 91   TabContentsController* delegate_;  // weak | 
| 91 } | 92 } | 
| 92 | 93 | 
| 93 - (void)updateBackgroundColor; | 94 - (void)updateBackgroundColorFromWindowTheme:(NSWindow*)window; | 
| 94 @end | 95 @end | 
| 95 | 96 | 
| 96 @implementation TabContentsContainerView | 97 @implementation TabContentsContainerView | 
| 97 | 98 | 
| 98 - (id)initWithDelegate:(TabContentsController*)delegate { | 99 - (id)initWithDelegate:(TabContentsController*)delegate { | 
| 99   if ((self = [super initWithFrame:NSZeroRect])) { | 100   if ((self = [super initWithFrame:NSZeroRect])) { | 
| 100     delegate_ = delegate; | 101     delegate_ = delegate; | 
| 101     ScopedCAActionDisabler disabler; | 102     ScopedCAActionDisabler disabler; | 
| 102     base::scoped_nsobject<CALayer> layer([[CALayer alloc] init]); | 103     base::scoped_nsobject<CALayer> layer([[CALayer alloc] init]); | 
| 103     [self setLayer:layer]; | 104     [self setLayer:layer]; | 
| 104     [self setWantsLayer:YES]; | 105     [self setWantsLayer:YES]; | 
| 105     [self updateBackgroundColor]; |  | 
| 106   } | 106   } | 
| 107   return self; | 107   return self; | 
| 108 } | 108 } | 
| 109 | 109 | 
| 110 // Called by the delegate during dealloc to invalidate the pointer held by this | 110 // Called by the delegate during dealloc to invalidate the pointer held by this | 
| 111 // view. | 111 // view. | 
| 112 - (void)delegateDestroyed { | 112 - (void)delegateDestroyed { | 
| 113   delegate_ = nil; | 113   delegate_ = nil; | 
| 114 } | 114 } | 
| 115 | 115 | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 128     return; | 128     return; | 
| 129   } | 129   } | 
| 130 | 130 | 
| 131   ScopedCAActionDisabler disabler; | 131   ScopedCAActionDisabler disabler; | 
| 132   [contentsView setFrame:[delegate_ frameForContentsViewIn:self]]; | 132   [contentsView setFrame:[delegate_ frameForContentsViewIn:self]]; | 
| 133 } | 133 } | 
| 134 | 134 | 
| 135 // Update the background layer's color whenever the view needs to repaint. | 135 // Update the background layer's color whenever the view needs to repaint. | 
| 136 - (void)setNeedsDisplayInRect:(NSRect)rect { | 136 - (void)setNeedsDisplayInRect:(NSRect)rect { | 
| 137   [super setNeedsDisplayInRect:rect]; | 137   [super setNeedsDisplayInRect:rect]; | 
| 138   [self updateBackgroundColor]; | 138   [self updateBackgroundColorFromWindowTheme:[self window]]; | 
| 139 } | 139 } | 
| 140 | 140 | 
| 141 - (void)updateBackgroundColor { | 141 - (void)updateBackgroundColorFromWindowTheme:(NSWindow*)window { | 
| 142   // This view is sometimes flashed into visibility (e.g, when closing | 142   // This view is sometimes flashed into visibility (e.g, when closing | 
| 143   // windows or opening new tabs), so ensure that the flash be the theme | 143   // windows or opening new tabs), so ensure that the flash be the theme | 
| 144   // background color in those cases. | 144   // background color in those cases. | 
| 145   SkColor skBackgroundColor = SK_ColorWHITE; | 145   const ThemeProvider* theme = [window themeProvider]; | 
| 146   const ThemeProvider* theme = [[self window] themeProvider]; | 146   ThemedWindowStyle windowStyle = [window themedWindowStyle]; | 
| 147   if (theme) | 147   if (!theme) | 
| 148     skBackgroundColor = theme->GetColor(ThemeProperties::COLOR_NTP_BACKGROUND); | 148     return; | 
|  | 149 | 
|  | 150   // This logic and hard-coded color value are duplicated from the function | 
|  | 151   // NTPResourceCache::CreateNewTabIncognitoCSS. This logic should exist in only | 
|  | 152   // one location. | 
|  | 153   // https://crbug.com/719236 | 
|  | 154   SkColor skBackgroundColor = | 
|  | 155       theme->GetColor(ThemeProperties::COLOR_NTP_BACKGROUND); | 
|  | 156   bool incognito = windowStyle & THEMED_INCOGNITO; | 
|  | 157   if (incognito && !theme->HasCustomImage(IDR_THEME_NTP_BACKGROUND)) | 
|  | 158     skBackgroundColor = SkColorSetRGB(0x32, 0x32, 0x32); | 
| 149 | 159 | 
| 150   // If the page is in fullscreen tab capture mode, change the background color | 160   // If the page is in fullscreen tab capture mode, change the background color | 
| 151   // to be a dark tint of the new tab page's background color. | 161   // to be a dark tint of the new tab page's background color. | 
| 152   if ([delegate_ contentsInFullscreenCaptureMode]) { | 162   if ([delegate_ contentsInFullscreenCaptureMode]) { | 
| 153     const int kBackgroundDivisor = 5; | 163     const int kBackgroundDivisor = 5; | 
| 154     skBackgroundColor = skBackgroundColor = SkColorSetARGB( | 164     skBackgroundColor = skBackgroundColor = SkColorSetARGB( | 
| 155         SkColorGetA(skBackgroundColor), | 165         SkColorGetA(skBackgroundColor), | 
| 156         SkColorGetR(skBackgroundColor) / kBackgroundDivisor, | 166         SkColorGetR(skBackgroundColor) / kBackgroundDivisor, | 
| 157         SkColorGetG(skBackgroundColor) / kBackgroundDivisor, | 167         SkColorGetG(skBackgroundColor) / kBackgroundDivisor, | 
| 158         SkColorGetB(skBackgroundColor) / kBackgroundDivisor); | 168         SkColorGetB(skBackgroundColor) / kBackgroundDivisor); | 
| 159   } | 169   } | 
| 160 | 170 | 
| 161   ScopedCAActionDisabler disabler; | 171   ScopedCAActionDisabler disabler; | 
| 162   base::ScopedCFTypeRef<CGColorRef> cgBackgroundColor( | 172   base::ScopedCFTypeRef<CGColorRef> cgBackgroundColor( | 
| 163       skia::CGColorCreateFromSkColor(skBackgroundColor)); | 173       skia::CGColorCreateFromSkColor(skBackgroundColor)); | 
| 164   [[self layer] setBackgroundColor:cgBackgroundColor]; | 174   [[self layer] setBackgroundColor:cgBackgroundColor]; | 
| 165 } | 175 } | 
| 166 | 176 | 
|  | 177 - (void)viewWillMoveToWindow:(NSWindow*)newWindow { | 
|  | 178   [self updateBackgroundColorFromWindowTheme:newWindow]; | 
|  | 179 } | 
|  | 180 | 
| 167 - (ViewID)viewID { | 181 - (ViewID)viewID { | 
| 168   return VIEW_ID_TAB_CONTAINER; | 182   return VIEW_ID_TAB_CONTAINER; | 
| 169 } | 183 } | 
| 170 | 184 | 
| 171 - (BOOL)acceptsFirstResponder { | 185 - (BOOL)acceptsFirstResponder { | 
| 172   return [[self subviews] count] > 0 && | 186   return [[self subviews] count] > 0 && | 
| 173       [[[self subviews] objectAtIndex:0] acceptsFirstResponder]; | 187       [[[self subviews] objectAtIndex:0] acceptsFirstResponder]; | 
| 174 } | 188 } | 
| 175 | 189 | 
| 176 // When receiving a click-to-focus in the solid color area surrounding the | 190 // When receiving a click-to-focus in the solid color area surrounding the | 
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 378 | 392 | 
| 379 - (BOOL)shouldResizeContentView { | 393 - (BOOL)shouldResizeContentView { | 
| 380   return !isEmbeddingFullscreenWidget_ || !blockFullscreenResize_; | 394   return !isEmbeddingFullscreenWidget_ || !blockFullscreenResize_; | 
| 381 } | 395 } | 
| 382 | 396 | 
| 383 - (BOOL)isPopup { | 397 - (BOOL)isPopup { | 
| 384   return isPopup_; | 398   return isPopup_; | 
| 385 } | 399 } | 
| 386 | 400 | 
| 387 @end | 401 @end | 
| OLD | NEW | 
|---|