| 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 #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h" | 5 #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h" |
| 6 | 6 |
| 7 #include <dwmapi.h> | 7 #include <dwmapi.h> |
| 8 | 8 |
| 9 #include "base/process/process_handle.h" |
| 9 #include "chrome/browser/lifetime/application_lifetime.h" | 10 #include "chrome/browser/lifetime/application_lifetime.h" |
| 10 #include "chrome/browser/themes/theme_service.h" | 11 #include "chrome/browser/themes/theme_service.h" |
| 11 #include "chrome/browser/themes/theme_service_factory.h" | 12 #include "chrome/browser/themes/theme_service_factory.h" |
| 12 #include "chrome/browser/ui/views/frame/browser_frame.h" | 13 #include "chrome/browser/ui/views/frame/browser_frame.h" |
| 13 #include "chrome/browser/ui/views/frame/browser_frame_common_win.h" | 14 #include "chrome/browser/ui/views/frame/browser_frame_common_win.h" |
| 14 #include "chrome/browser/ui/views/frame/browser_view.h" | 15 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 15 #include "chrome/browser/ui/views/frame/browser_window_property_manager_win.h" | 16 #include "chrome/browser/ui/views/frame/browser_window_property_manager_win.h" |
| 16 #include "chrome/browser/ui/views/frame/system_menu_insertion_delegate_win.h" | 17 #include "chrome/browser/ui/views/frame/system_menu_insertion_delegate_win.h" |
| 17 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 18 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
| 18 #include "chrome/browser/ui/views/theme_image_mapper.h" | 19 #include "chrome/browser/ui/views/theme_image_mapper.h" |
| 20 #include "chrome/common/chrome_constants.h" |
| 21 #include "components/browser_watcher/exit_funnel_win.h" |
| 19 #include "ui/base/theme_provider.h" | 22 #include "ui/base/theme_provider.h" |
| 20 #include "ui/gfx/win/dpi.h" | 23 #include "ui/gfx/win/dpi.h" |
| 21 #include "ui/views/controls/menu/native_menu_win.h" | 24 #include "ui/views/controls/menu/native_menu_win.h" |
| 22 | 25 |
| 23 #pragma comment(lib, "dwmapi.lib") | 26 #pragma comment(lib, "dwmapi.lib") |
| 24 | 27 |
| 25 namespace { | 28 namespace { |
| 26 | 29 |
| 27 const int kClientEdgeThickness = 3; | 30 const int kClientEdgeThickness = 3; |
| 28 // We need to offset the DWMFrame into the toolbar so that the blackness | 31 // We need to offset the DWMFrame into the toolbar so that the blackness |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 ui::ScaleFactor scale_factor) const override { | 66 ui::ScaleFactor scale_factor) const override { |
| 64 return delegate_->GetRawData(id, scale_factor); | 67 return delegate_->GetRawData(id, scale_factor); |
| 65 } | 68 } |
| 66 | 69 |
| 67 private: | 70 private: |
| 68 ui::ThemeProvider* delegate_; | 71 ui::ThemeProvider* delegate_; |
| 69 | 72 |
| 70 DISALLOW_COPY_AND_ASSIGN(DesktopThemeProvider); | 73 DISALLOW_COPY_AND_ASSIGN(DesktopThemeProvider); |
| 71 }; | 74 }; |
| 72 | 75 |
| 76 // See http://crbug.com/412384. |
| 77 void TraceSessionEnding(LPARAM lparam) { |
| 78 browser_watcher::ExitFunnel funnel; |
| 79 if (!funnel.Init(chrome::kBrowserExitCodesRegistryPath, |
| 80 base::GetCurrentProcessHandle())) { |
| 81 return; |
| 82 } |
| 83 |
| 84 // This exit path is the prime suspect for most our unclean shutdowns. |
| 85 // Trace all the possible options to WM_ENDSESSION. This may result in |
| 86 // multiple events for a single shutdown, but that's fine. |
| 87 funnel.RecordEvent(L"WM_ENDSESSION"); |
| 88 |
| 89 if (lparam & ENDSESSION_CLOSEAPP) |
| 90 funnel.RecordEvent(L"ES_CloseApp"); |
| 91 if (lparam & ENDSESSION_CRITICAL) |
| 92 funnel.RecordEvent(L"ES_Critical"); |
| 93 if (lparam & ENDSESSION_LOGOFF) |
| 94 funnel.RecordEvent(L"ES_Logoff"); |
| 95 const LPARAM kKnownBits = |
| 96 ENDSESSION_CLOSEAPP | ENDSESSION_CRITICAL | ENDSESSION_LOGOFF; |
| 97 if (lparam & ~kKnownBits) |
| 98 funnel.RecordEvent(L"ES_Other"); |
| 99 } |
| 100 |
| 73 } // namespace | 101 } // namespace |
| 74 | 102 |
| 75 //////////////////////////////////////////////////////////////////////////////// | 103 //////////////////////////////////////////////////////////////////////////////// |
| 76 // BrowserDesktopWindowTreeHostWin, public: | 104 // BrowserDesktopWindowTreeHostWin, public: |
| 77 | 105 |
| 78 BrowserDesktopWindowTreeHostWin::BrowserDesktopWindowTreeHostWin( | 106 BrowserDesktopWindowTreeHostWin::BrowserDesktopWindowTreeHostWin( |
| 79 views::internal::NativeWidgetDelegate* native_widget_delegate, | 107 views::internal::NativeWidgetDelegate* native_widget_delegate, |
| 80 views::DesktopNativeWidgetAura* desktop_native_widget_aura, | 108 views::DesktopNativeWidgetAura* desktop_native_widget_aura, |
| 81 BrowserView* browser_view, | 109 BrowserView* browser_view, |
| 82 BrowserFrame* browser_frame) | 110 BrowserFrame* browser_frame) |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 bool BrowserDesktopWindowTreeHostWin::PreHandleMSG(UINT message, | 203 bool BrowserDesktopWindowTreeHostWin::PreHandleMSG(UINT message, |
| 176 WPARAM w_param, | 204 WPARAM w_param, |
| 177 LPARAM l_param, | 205 LPARAM l_param, |
| 178 LRESULT* result) { | 206 LRESULT* result) { |
| 179 switch (message) { | 207 switch (message) { |
| 180 case WM_ACTIVATE: | 208 case WM_ACTIVATE: |
| 181 if (LOWORD(w_param) != WA_INACTIVE) | 209 if (LOWORD(w_param) != WA_INACTIVE) |
| 182 minimize_button_metrics_.OnHWNDActivated(); | 210 minimize_button_metrics_.OnHWNDActivated(); |
| 183 return false; | 211 return false; |
| 184 case WM_ENDSESSION: | 212 case WM_ENDSESSION: |
| 213 TraceSessionEnding(l_param); |
| 185 chrome::SessionEnding(); | 214 chrome::SessionEnding(); |
| 186 return true; | 215 return true; |
| 187 case WM_INITMENUPOPUP: | 216 case WM_INITMENUPOPUP: |
| 188 GetSystemMenu()->UpdateStates(); | 217 GetSystemMenu()->UpdateStates(); |
| 189 return true; | 218 return true; |
| 190 } | 219 } |
| 191 return DesktopWindowTreeHostWin::PreHandleMSG( | 220 return DesktopWindowTreeHostWin::PreHandleMSG( |
| 192 message, w_param, l_param, result); | 221 message, w_param, l_param, result); |
| 193 } | 222 } |
| 194 | 223 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost( | 355 BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost( |
| 327 views::internal::NativeWidgetDelegate* native_widget_delegate, | 356 views::internal::NativeWidgetDelegate* native_widget_delegate, |
| 328 views::DesktopNativeWidgetAura* desktop_native_widget_aura, | 357 views::DesktopNativeWidgetAura* desktop_native_widget_aura, |
| 329 BrowserView* browser_view, | 358 BrowserView* browser_view, |
| 330 BrowserFrame* browser_frame) { | 359 BrowserFrame* browser_frame) { |
| 331 return new BrowserDesktopWindowTreeHostWin(native_widget_delegate, | 360 return new BrowserDesktopWindowTreeHostWin(native_widget_delegate, |
| 332 desktop_native_widget_aura, | 361 desktop_native_widget_aura, |
| 333 browser_view, | 362 browser_view, |
| 334 browser_frame); | 363 browser_frame); |
| 335 } | 364 } |
| OLD | NEW |