| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/browser_window_controller.h" | 5 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <numeric> | 8 #include <numeric> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 #include "chrome/browser/ui/browser_command_controller.h" | 35 #include "chrome/browser/ui/browser_command_controller.h" |
| 36 #include "chrome/browser/ui/browser_commands.h" | 36 #include "chrome/browser/ui/browser_commands.h" |
| 37 #include "chrome/browser/ui/browser_dialogs.h" | 37 #include "chrome/browser/ui/browser_dialogs.h" |
| 38 #include "chrome/browser/ui/browser_instant_controller.h" | 38 #include "chrome/browser/ui/browser_instant_controller.h" |
| 39 #include "chrome/browser/ui/browser_list.h" | 39 #include "chrome/browser/ui/browser_list.h" |
| 40 #include "chrome/browser/ui/browser_window_state.h" | 40 #include "chrome/browser/ui/browser_window_state.h" |
| 41 #import "chrome/browser/ui/cocoa/background_gradient_view.h" | 41 #import "chrome/browser/ui/cocoa/background_gradient_view.h" |
| 42 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" | 42 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" |
| 43 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_observer_cocoa.h" | 43 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_observer_cocoa.h" |
| 44 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_editor_controller.h" | 44 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_editor_controller.h" |
| 45 #import "chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.h" |
| 45 #import "chrome/browser/ui/cocoa/browser_window_cocoa.h" | 46 #import "chrome/browser/ui/cocoa/browser_window_cocoa.h" |
| 46 #import "chrome/browser/ui/cocoa/browser_window_command_handler.h" | 47 #import "chrome/browser/ui/cocoa/browser_window_command_handler.h" |
| 47 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" | 48 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" |
| 48 #import "chrome/browser/ui/cocoa/browser_window_layout.h" | 49 #import "chrome/browser/ui/cocoa/browser_window_layout.h" |
| 49 #import "chrome/browser/ui/cocoa/browser_window_utils.h" | 50 #import "chrome/browser/ui/cocoa/browser_window_utils.h" |
| 50 #import "chrome/browser/ui/cocoa/dev_tools_controller.h" | 51 #import "chrome/browser/ui/cocoa/dev_tools_controller.h" |
| 51 #import "chrome/browser/ui/cocoa/download/download_shelf_controller.h" | 52 #import "chrome/browser/ui/cocoa/download/download_shelf_controller.h" |
| 52 #include "chrome/browser/ui/cocoa/extensions/extension_keybinding_registry_cocoa
.h" | 53 #include "chrome/browser/ui/cocoa/extensions/extension_keybinding_registry_cocoa
.h" |
| 53 #import "chrome/browser/ui/cocoa/fast_resize_view.h" | 54 #import "chrome/browser/ui/cocoa/fast_resize_view.h" |
| 54 #import "chrome/browser/ui/cocoa/find_bar/find_bar_bridge.h" | 55 #import "chrome/browser/ui/cocoa/find_bar/find_bar_bridge.h" |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 // When we are given x/y coordinates of 0 on a created popup window, assume | 294 // When we are given x/y coordinates of 0 on a created popup window, assume |
| 294 // none were given by the window.open() command. | 295 // none were given by the window.open() command. |
| 295 if (browser_->is_type_popup() && | 296 if (browser_->is_type_popup() && |
| 296 windowRect.x() == 0 && windowRect.y() == 0) { | 297 windowRect.x() == 0 && windowRect.y() == 0) { |
| 297 gfx::Size size = windowRect.size(); | 298 gfx::Size size = windowRect.size(); |
| 298 windowRect.set_origin( | 299 windowRect.set_origin( |
| 299 WindowSizer::GetDefaultPopupOrigin(size, | 300 WindowSizer::GetDefaultPopupOrigin(size, |
| 300 browser_->host_desktop_type())); | 301 browser_->host_desktop_type())); |
| 301 } | 302 } |
| 302 | 303 |
| 304 // Creates the manager for fullscreen and fullscreen bubbles. |
| 305 exclusiveAccessController_.reset( |
| 306 new ExclusiveAccessController(self, browser_.get())); |
| 307 |
| 303 // Size and position the window. Note that it is not yet onscreen. Popup | 308 // Size and position the window. Note that it is not yet onscreen. Popup |
| 304 // windows may get resized later on in this function, once the actual size | 309 // windows may get resized later on in this function, once the actual size |
| 305 // of the toolbar/tabstrip is known. | 310 // of the toolbar/tabstrip is known. |
| 306 windowShim_->SetBounds(windowRect); | 311 windowShim_->SetBounds(windowRect); |
| 307 | 312 |
| 308 // Puts the incognito badge on the window frame, if necessary. | 313 // Puts the incognito badge on the window frame, if necessary. |
| 309 [self installAvatar]; | 314 [self installAvatar]; |
| 310 | 315 |
| 311 // Create a sub-controller for the docked devTools and add its view to the | 316 // Create a sub-controller for the docked devTools and add its view to the |
| 312 // hierarchy. | 317 // hierarchy. |
| (...skipping 1564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1877 CGFloat y = 0; | 1882 CGFloat y = 0; |
| 1878 if (NSMaxY(target) < NSMaxY(source)) | 1883 if (NSMaxY(target) < NSMaxY(source)) |
| 1879 y = NSMaxY(source) - NSMaxY(target); | 1884 y = NSMaxY(source) - NSMaxY(target); |
| 1880 else if (NSMinY(source) < NSMinY(target)) | 1885 else if (NSMinY(source) < NSMinY(target)) |
| 1881 y = NSMinY(source) - NSMinY(target); | 1886 y = NSMinY(source) - NSMinY(target); |
| 1882 | 1887 |
| 1883 return NSMakeSize(x, y); | 1888 return NSMakeSize(x, y); |
| 1884 } | 1889 } |
| 1885 | 1890 |
| 1886 // (Private/TestingAPI) | 1891 // (Private/TestingAPI) |
| 1887 - (ExclusiveAccessBubbleWindowController*) | |
| 1888 exclusiveAccessBubbleWindowController { | |
| 1889 return exclusiveAccessBubbleWindowController_.get(); | |
| 1890 } | |
| 1891 | |
| 1892 - (NSRect)omniboxPopupAnchorRect { | 1892 - (NSRect)omniboxPopupAnchorRect { |
| 1893 // Start with toolbar rect. | 1893 // Start with toolbar rect. |
| 1894 NSView* toolbarView = [toolbarController_ view]; | 1894 NSView* toolbarView = [toolbarController_ view]; |
| 1895 NSRect anchorRect = [toolbarView frame]; | 1895 NSRect anchorRect = [toolbarView frame]; |
| 1896 | 1896 |
| 1897 // Adjust to account for height and possible bookmark bar. Compress by 1 | 1897 // Adjust to account for height and possible bookmark bar. Compress by 1 |
| 1898 // to account for the separator. | 1898 // to account for the separator. |
| 1899 anchorRect.origin.y = | 1899 anchorRect.origin.y = |
| 1900 NSMaxY(anchorRect) - [toolbarController_ desiredHeightForCompression:1]; | 1900 NSMaxY(anchorRect) - [toolbarController_ desiredHeightForCompression:1]; |
| 1901 | 1901 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1952 [self enterAppKitFullscreen]; | 1952 [self enterAppKitFullscreen]; |
| 1953 } | 1953 } |
| 1954 } | 1954 } |
| 1955 | 1955 |
| 1956 - (void)updateFullscreenWithToolbar:(BOOL)withToolbar { | 1956 - (void)updateFullscreenWithToolbar:(BOOL)withToolbar { |
| 1957 [self adjustUIForSlidingFullscreenStyle: | 1957 [self adjustUIForSlidingFullscreenStyle: |
| 1958 withToolbar ? fullscreen_mac::OMNIBOX_TABS_PRESENT | 1958 withToolbar ? fullscreen_mac::OMNIBOX_TABS_PRESENT |
| 1959 : fullscreen_mac::OMNIBOX_TABS_HIDDEN]; | 1959 : fullscreen_mac::OMNIBOX_TABS_HIDDEN]; |
| 1960 } | 1960 } |
| 1961 | 1961 |
| 1962 - (void)updateFullscreenExitBubbleURL:(const GURL&)url | 1962 - (void)updateFullscreenExitBubble { |
| 1963 bubbleType:(ExclusiveAccessBubbleType)bubbleType { | |
| 1964 fullscreenUrl_ = url; | |
| 1965 exclusiveAccessBubbleType_ = bubbleType; | |
| 1966 [self layoutSubviews]; | 1963 [self layoutSubviews]; |
| 1967 [self showFullscreenExitBubbleIfNecessary]; | 1964 [self showFullscreenExitBubbleIfNecessary]; |
| 1968 } | 1965 } |
| 1969 | 1966 |
| 1970 - (void)toggleFullscreenToolbar { | 1967 - (void)toggleFullscreenToolbar { |
| 1971 shouldHideFullscreenToolbar_ = !shouldHideFullscreenToolbar_; | 1968 shouldHideFullscreenToolbar_ = !shouldHideFullscreenToolbar_; |
| 1972 | 1969 |
| 1973 if ([self isInAppKitFullscreen]) | 1970 if ([self isInAppKitFullscreen]) |
| 1974 [self updateFullscreenWithToolbar:!shouldHideFullscreenToolbar_]; | 1971 [self updateFullscreenWithToolbar:!shouldHideFullscreenToolbar_]; |
| 1975 } | 1972 } |
| 1976 | 1973 |
| 1977 - (BOOL)isInAnyFullscreenMode { | 1974 - (BOOL)isInAnyFullscreenMode { |
| 1978 return [self isInImmersiveFullscreen] || [self isInAppKitFullscreen]; | 1975 return [self isInImmersiveFullscreen] || [self isInAppKitFullscreen]; |
| 1979 } | 1976 } |
| 1980 | 1977 |
| 1981 - (BOOL)isInImmersiveFullscreen { | 1978 - (BOOL)isInImmersiveFullscreen { |
| 1982 return fullscreenWindow_.get() != nil || enteringImmersiveFullscreen_; | 1979 return fullscreenWindow_.get() != nil || enteringImmersiveFullscreen_; |
| 1983 } | 1980 } |
| 1984 | 1981 |
| 1985 - (BOOL)isInAppKitFullscreen { | 1982 - (BOOL)isInAppKitFullscreen { |
| 1986 return !exitingAppKitFullscreen_ && | 1983 return !exitingAppKitFullscreen_ && |
| 1987 (([[self window] styleMask] & NSFullScreenWindowMask) == | 1984 (([[self window] styleMask] & NSFullScreenWindowMask) == |
| 1988 NSFullScreenWindowMask || | 1985 NSFullScreenWindowMask || |
| 1989 enteringAppKitFullscreen_); | 1986 enteringAppKitFullscreen_); |
| 1990 } | 1987 } |
| 1991 | 1988 |
| 1992 - (void)enterExtensionFullscreenForURL:(const GURL&)url | 1989 - (void)enterExtensionFullscreen { |
| 1993 bubbleType:(ExclusiveAccessBubbleType)bubbleType { | |
| 1994 if (chrome::mac::SupportsSystemFullscreen()) { | 1990 if (chrome::mac::SupportsSystemFullscreen()) { |
| 1995 fullscreenUrl_ = url; | |
| 1996 exclusiveAccessBubbleType_ = bubbleType; | |
| 1997 [self enterBrowserFullscreenWithToolbar:NO]; | 1991 [self enterBrowserFullscreenWithToolbar:NO]; |
| 1998 } else { | 1992 } else { |
| 1999 [self enterImmersiveFullscreen]; | 1993 [self enterImmersiveFullscreen]; |
| 2000 DCHECK(!url.is_empty()); | 1994 DCHECK(!exclusiveAccessController_->url().is_empty()); |
| 2001 [self updateFullscreenExitBubbleURL:url bubbleType:bubbleType]; | 1995 [self updateFullscreenExitBubble]; |
| 2002 } | 1996 } |
| 2003 } | 1997 } |
| 2004 | 1998 |
| 2005 - (void)enterWebContentFullscreenForURL:(const GURL&)url | 1999 - (void)enterWebContentFullscreen { |
| 2006 bubbleType:(ExclusiveAccessBubbleType)bubbleType { | |
| 2007 // HTML5 Fullscreen should only use AppKit fullscreen in 10.10+. | 2000 // HTML5 Fullscreen should only use AppKit fullscreen in 10.10+. |
| 2008 if (chrome::mac::SupportsSystemFullscreen() && | 2001 if (chrome::mac::SupportsSystemFullscreen() && |
| 2009 base::mac::IsOSYosemiteOrLater()) | 2002 base::mac::IsOSYosemiteOrLater()) |
| 2010 [self enterAppKitFullscreen]; | 2003 [self enterAppKitFullscreen]; |
| 2011 else | 2004 else |
| 2012 [self enterImmersiveFullscreen]; | 2005 [self enterImmersiveFullscreen]; |
| 2013 | 2006 |
| 2014 if (!url.is_empty()) | 2007 if (!exclusiveAccessController_->url().is_empty()) |
| 2015 [self updateFullscreenExitBubbleURL:url bubbleType:bubbleType]; | 2008 [self updateFullscreenExitBubble]; |
| 2016 } | 2009 } |
| 2017 | 2010 |
| 2018 - (void)exitAnyFullscreen { | 2011 - (void)exitAnyFullscreen { |
| 2019 // TODO(erikchen): Fullscreen modes should stack. Should be able to exit | 2012 // TODO(erikchen): Fullscreen modes should stack. Should be able to exit |
| 2020 // Immersive Fullscreen and still be in AppKit Fullscreen. | 2013 // Immersive Fullscreen and still be in AppKit Fullscreen. |
| 2021 if ([self isInAppKitFullscreen]) | 2014 if ([self isInAppKitFullscreen]) |
| 2022 [self exitAppKitFullscreen]; | 2015 [self exitAppKitFullscreen]; |
| 2023 if ([self isInImmersiveFullscreen]) | 2016 if ([self isInImmersiveFullscreen]) |
| 2024 [self exitImmersiveFullscreen]; | 2017 [self exitImmersiveFullscreen]; |
| 2025 } | 2018 } |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2078 delay:delay]; | 2071 delay:delay]; |
| 2079 } | 2072 } |
| 2080 } | 2073 } |
| 2081 } | 2074 } |
| 2082 | 2075 |
| 2083 - (BOOL)floatingBarHasFocus { | 2076 - (BOOL)floatingBarHasFocus { |
| 2084 NSResponder* focused = [[self window] firstResponder]; | 2077 NSResponder* focused = [[self window] firstResponder]; |
| 2085 return [focused isKindOfClass:[AutocompleteTextFieldEditor class]]; | 2078 return [focused isKindOfClass:[AutocompleteTextFieldEditor class]]; |
| 2086 } | 2079 } |
| 2087 | 2080 |
| 2081 - (ExclusiveAccessController*)exclusiveAccessController { |
| 2082 return exclusiveAccessController_.get(); |
| 2083 } |
| 2084 |
| 2088 @end // @implementation BrowserWindowController(Fullscreen) | 2085 @end // @implementation BrowserWindowController(Fullscreen) |
| 2089 | 2086 |
| 2090 | 2087 |
| 2091 @implementation BrowserWindowController(WindowType) | 2088 @implementation BrowserWindowController(WindowType) |
| 2092 | 2089 |
| 2093 - (BOOL)supportsWindowFeature:(int)feature { | 2090 - (BOOL)supportsWindowFeature:(int)feature { |
| 2094 return browser_->SupportsWindowFeature( | 2091 return browser_->SupportsWindowFeature( |
| 2095 static_cast<Browser::WindowFeature>(feature)); | 2092 static_cast<Browser::WindowFeature>(feature)); |
| 2096 } | 2093 } |
| 2097 | 2094 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2109 | 2106 |
| 2110 - (BOOL)supportsBookmarkBar { | 2107 - (BOOL)supportsBookmarkBar { |
| 2111 return [self supportsWindowFeature:Browser::FEATURE_BOOKMARKBAR]; | 2108 return [self supportsWindowFeature:Browser::FEATURE_BOOKMARKBAR]; |
| 2112 } | 2109 } |
| 2113 | 2110 |
| 2114 - (BOOL)isTabbedWindow { | 2111 - (BOOL)isTabbedWindow { |
| 2115 return browser_->is_type_tabbed(); | 2112 return browser_->is_type_tabbed(); |
| 2116 } | 2113 } |
| 2117 | 2114 |
| 2118 @end // @implementation BrowserWindowController(WindowType) | 2115 @end // @implementation BrowserWindowController(WindowType) |
| OLD | NEW |