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 #include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h" | 5 #include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "ash/ash_switches.h" | 10 #include "ash/ash_switches.h" |
11 #include "ash/shell.h" | 11 #include "ash/shell.h" |
12 #include "ash/wm/window_properties.h" | 12 #include "ash/wm/window_state.h" |
13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
14 #include "chrome/browser/chrome_notification_types.h" | 14 #include "chrome/browser/chrome_notification_types.h" |
15 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" | 15 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" |
16 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" | 16 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" |
17 #include "chrome/browser/ui/views/frame/top_container_view.h" | 17 #include "chrome/browser/ui/views/frame/top_container_view.h" |
18 #include "content/public/browser/notification_service.h" | 18 #include "content/public/browser/notification_service.h" |
19 #include "content/public/browser/web_contents.h" | 19 #include "content/public/browser/web_contents.h" |
20 #include "content/public/browser/web_contents_view.h" | 20 #include "content/public/browser/web_contents_view.h" |
21 #include "ui/aura/client/activation_client.h" | 21 #include "ui/aura/client/activation_client.h" |
22 #include "ui/aura/client/aura_constants.h" | 22 #include "ui/aura/client/aura_constants.h" |
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 return false; | 907 return false; |
908 } | 908 } |
909 | 909 |
910 void ImmersiveModeControllerAsh::UpdateUseMinimalChrome(Layout layout) { | 910 void ImmersiveModeControllerAsh::UpdateUseMinimalChrome(Layout layout) { |
911 // May be NULL in tests. | 911 // May be NULL in tests. |
912 FullscreenController* fullscreen_controller = | 912 FullscreenController* fullscreen_controller = |
913 delegate_->GetFullscreenController(); | 913 delegate_->GetFullscreenController(); |
914 bool in_tab_fullscreen = fullscreen_controller ? | 914 bool in_tab_fullscreen = fullscreen_controller ? |
915 fullscreen_controller->IsFullscreenForTabOrPending() : false; | 915 fullscreen_controller->IsFullscreenForTabOrPending() : false; |
916 bool use_minimal_chrome = !in_tab_fullscreen && enabled_; | 916 bool use_minimal_chrome = !in_tab_fullscreen && enabled_; |
917 native_window_->SetProperty(ash::internal::kFullscreenUsesMinimalChromeKey, | 917 |
918 use_minimal_chrome); | 918 // When using minimal chrome, the shelf is auto-hidden. The auto-hidden shelf |
| 919 // displays a 3px 'light bar' when it is closed. Otherwise, the shelf is |
| 920 // hidden completely and cannot be revealed. |
| 921 ash::wm::GetWindowState(native_window_)->set_hide_shelf_when_fullscreen( |
| 922 !use_minimal_chrome); |
919 | 923 |
920 TabIndicatorVisibility previous_tab_indicator_visibility = | 924 TabIndicatorVisibility previous_tab_indicator_visibility = |
921 tab_indicator_visibility_; | 925 tab_indicator_visibility_; |
922 if (tab_indicator_visibility_ != TAB_INDICATORS_FORCE_HIDE) { | 926 if (tab_indicator_visibility_ != TAB_INDICATORS_FORCE_HIDE) { |
923 tab_indicator_visibility_ = use_minimal_chrome ? | 927 tab_indicator_visibility_ = use_minimal_chrome ? |
924 TAB_INDICATORS_SHOW : TAB_INDICATORS_HIDE; | 928 TAB_INDICATORS_SHOW : TAB_INDICATORS_HIDE; |
925 } | 929 } |
926 | 930 |
927 // Ash on Windows may not have a shell. | 931 ash::Shell::GetInstance()->UpdateShelfVisibility(); |
928 if (ash::Shell::HasInstance()) { | |
929 // When using minimal chrome, the shelf is auto-hidden. The auto-hidden | |
930 // shelf displays a 3px 'light bar' when it is closed. | |
931 ash::Shell::GetInstance()->UpdateShelfVisibility(); | |
932 } | |
933 | 932 |
934 if (tab_indicator_visibility_ != previous_tab_indicator_visibility) { | 933 if (tab_indicator_visibility_ != previous_tab_indicator_visibility) { |
935 // If the top-of-window views are revealed or animating, the change will | 934 // If the top-of-window views are revealed or animating, the change will |
936 // take effect with the layout once the top-of-window views are closed. | 935 // take effect with the layout once the top-of-window views are closed. |
937 if (layout == LAYOUT_YES && reveal_state_ == CLOSED) | 936 if (layout == LAYOUT_YES && reveal_state_ == CLOSED) |
938 LayoutBrowserRootView(); | 937 LayoutBrowserRootView(); |
939 } | 938 } |
940 } | 939 } |
941 | 940 |
942 int ImmersiveModeControllerAsh::GetAnimationDuration(Animate animate) const { | 941 int ImmersiveModeControllerAsh::GetAnimationDuration(Animate animate) const { |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1155 aura::Window* transient_child = transient_children[i]; | 1154 aura::Window* transient_child = transient_children[i]; |
1156 views::BubbleDelegateView* bubble_delegate = | 1155 views::BubbleDelegateView* bubble_delegate = |
1157 AsBubbleDelegate(transient_child); | 1156 AsBubbleDelegate(transient_child); |
1158 if (bubble_delegate && | 1157 if (bubble_delegate && |
1159 bubble_delegate->GetAnchorView() && | 1158 bubble_delegate->GetAnchorView() && |
1160 top_container_->Contains(bubble_delegate->GetAnchorView())) { | 1159 top_container_->Contains(bubble_delegate->GetAnchorView())) { |
1161 bubble_manager_->StartObserving(transient_child); | 1160 bubble_manager_->StartObserving(transient_child); |
1162 } | 1161 } |
1163 } | 1162 } |
1164 } | 1163 } |
OLD | NEW |