Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Side by Side Diff: chrome/browser/ui/views/apps/chrome_native_app_window_views_win.cc

Issue 616253002: Extract NativeAppWindow from src/extensions Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: might fix athena. similarity=33 Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/apps/chrome_native_app_window_views_win.h" 5 #include "chrome/browser/ui/views/apps/chrome_native_app_window_views_win.h"
6 6
7 #include "apps/ui/views/app_window_frame_view.h" 7 #include "apps/ui/views/app_window_frame_view.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 17 matching lines...) Expand all
28 #include "extensions/browser/app_window/app_window.h" 28 #include "extensions/browser/app_window/app_window.h"
29 #include "extensions/browser/app_window/app_window_registry.h" 29 #include "extensions/browser/app_window/app_window_registry.h"
30 #include "extensions/browser/extension_util.h" 30 #include "extensions/browser/extension_util.h"
31 #include "extensions/common/extension.h" 31 #include "extensions/common/extension.h"
32 #include "ui/aura/remote_window_tree_host_win.h" 32 #include "ui/aura/remote_window_tree_host_win.h"
33 #include "ui/base/l10n/l10n_util.h" 33 #include "ui/base/l10n/l10n_util.h"
34 #include "ui/base/win/shell.h" 34 #include "ui/base/win/shell.h"
35 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 35 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
36 #include "ui/views/win/hwnd_util.h" 36 #include "ui/views/win/hwnd_util.h"
37 37
38 ChromeNativeAppWindowViewsWin::ChromeNativeAppWindowViewsWin() 38 ChromeNativeAppWindowViewsWin::ChromeNativeAppWindowViewsWin(
39 : glass_frame_view_(NULL), weak_ptr_factory_(this) { 39 extensions::AppWindow* app_window)
40 : ChromeNativeAppWindowViews(app_window),
41 glass_frame_view_(NULL),
42 weak_ptr_factory_(this) {
40 } 43 }
41 44
42 void ChromeNativeAppWindowViewsWin::ActivateParentDesktopIfNecessary() { 45 void ChromeNativeAppWindowViewsWin::ActivateParentDesktopIfNecessary() {
43 // Only switching into Ash from Native is supported. Tearing the user out of 46 // Only switching into Ash from Native is supported. Tearing the user out of
44 // Metro mode can only be done by launching a process from Metro mode itself. 47 // Metro mode can only be done by launching a process from Metro mode itself.
45 // This is done for launching apps, but not regular activations. 48 // This is done for launching apps, but not regular activations.
46 if (IsRunningInAsh() && 49 if (IsRunningInAsh() &&
47 chrome::GetActiveDesktop() == chrome::HOST_DESKTOP_TYPE_NATIVE) { 50 chrome::GetActiveDesktop() == chrome::HOST_DESKTOP_TYPE_NATIVE) {
48 chrome::ActivateMetroChrome(); 51 chrome::ActivateMetroChrome();
49 } 52 }
(...skipping 19 matching lines...) Expand all
69 // The default views / Aura implementation will remove this if we are using 72 // The default views / Aura implementation will remove this if we are using
70 // frameless or colored windows, so we put it back here. 73 // frameless or colored windows, so we put it back here.
71 HWND hwnd = GetNativeAppWindowHWND(); 74 HWND hwnd = GetNativeAppWindowHWND();
72 int current_style = ::GetWindowLong(hwnd, GWL_STYLE); 75 int current_style = ::GetWindowLong(hwnd, GWL_STYLE);
73 ::SetWindowLong(hwnd, GWL_STYLE, current_style | WS_CAPTION); 76 ::SetWindowLong(hwnd, GWL_STYLE, current_style | WS_CAPTION);
74 } 77 }
75 78
76 void ChromeNativeAppWindowViewsWin::OnBeforeWidgetInit( 79 void ChromeNativeAppWindowViewsWin::OnBeforeWidgetInit(
77 views::Widget::InitParams* init_params, 80 views::Widget::InitParams* init_params,
78 views::Widget* widget) { 81 views::Widget* widget) {
79 content::BrowserContext* browser_context = app_window()->browser_context(); 82 content::BrowserContext* browser_context = app_window()->GetBrowserContext();
80 std::string extension_id = app_window()->extension_id(); 83 std::string extension_id = extension_app_window()->extension_id();
81 // If an app has any existing windows, ensure new ones are created on the 84 // If an app has any existing windows, ensure new ones are created on the
82 // same desktop. 85 // same desktop.
83 extensions::AppWindow* any_existing_window = 86 extensions::AppWindow* any_existing_window =
84 extensions::AppWindowRegistry::Get(browser_context) 87 extensions::AppWindowRegistry::Get(browser_context)
85 ->GetCurrentAppWindowForApp(extension_id); 88 ->GetCurrentAppWindowForApp(extension_id);
86 chrome::HostDesktopType desktop_type; 89 chrome::HostDesktopType desktop_type;
87 if (any_existing_window) { 90 if (any_existing_window) {
88 desktop_type = chrome::GetHostDesktopTypeForNativeWindow( 91 desktop_type = chrome::GetHostDesktopTypeForNativeWindow(
89 any_existing_window->GetNativeWindow()); 92 any_existing_window->GetNativeWindow());
90 } else { 93 } else {
(...skipping 15 matching lines...) Expand all
106 109
107 void ChromeNativeAppWindowViewsWin::InitializeDefaultWindow( 110 void ChromeNativeAppWindowViewsWin::InitializeDefaultWindow(
108 const extensions::AppWindow::CreateParams& create_params) { 111 const extensions::AppWindow::CreateParams& create_params) {
109 ChromeNativeAppWindowViews::InitializeDefaultWindow(create_params); 112 ChromeNativeAppWindowViews::InitializeDefaultWindow(create_params);
110 113
111 // Remaining initialization is for Windows shell integration, which doesn't 114 // Remaining initialization is for Windows shell integration, which doesn't
112 // apply to app windows in Ash. 115 // apply to app windows in Ash.
113 if (IsRunningInAsh()) 116 if (IsRunningInAsh())
114 return; 117 return;
115 118
116 const extensions::Extension* extension = app_window()->GetExtension(); 119 const extensions::Extension* extension =
120 extension_app_window()->GetExtension();
117 if (!extension) 121 if (!extension)
118 return; 122 return;
119 123
120 std::string app_name = 124 std::string app_name =
121 web_app::GenerateApplicationNameFromExtensionId(extension->id()); 125 web_app::GenerateApplicationNameFromExtensionId(extension->id());
122 base::string16 app_name_wide = base::UTF8ToWide(app_name); 126 base::string16 app_name_wide = base::UTF8ToWide(app_name);
123 HWND hwnd = GetNativeAppWindowHWND(); 127 HWND hwnd = GetNativeAppWindowHWND();
124 Profile* profile = 128 Profile* profile =
125 Profile::FromBrowserContext(app_window()->browser_context()); 129 Profile::FromBrowserContext(app_window()->GetBrowserContext());
126 app_model_id_ = 130 app_model_id_ =
127 ShellIntegration::GetAppModelIdForProfile(app_name_wide, 131 ShellIntegration::GetAppModelIdForProfile(app_name_wide,
128 profile->GetPath()); 132 profile->GetPath());
129 ui::win::SetAppIdForWindow(app_model_id_, hwnd); 133 ui::win::SetAppIdForWindow(app_model_id_, hwnd);
130 web_app::UpdateRelaunchDetailsForApp(profile, extension, hwnd); 134 web_app::UpdateRelaunchDetailsForApp(profile, extension, hwnd);
131 135
132 if (!create_params.alpha_enabled) 136 if (!create_params.alpha_enabled)
133 EnsureCaptionStyleSet(); 137 EnsureCaptionStyleSet();
134 UpdateShelfMenu(); 138 UpdateShelfMenu();
135 } 139 }
(...skipping 22 matching lines...) Expand all
158 if (!JumpListUpdater::IsEnabled() || IsRunningInAsh()) 162 if (!JumpListUpdater::IsEnabled() || IsRunningInAsh())
159 return; 163 return;
160 164
161 // Currently the only option is related to ephemeral apps, so avoid updating 165 // Currently the only option is related to ephemeral apps, so avoid updating
162 // the app's jump list when the feature is not enabled. 166 // the app's jump list when the feature is not enabled.
163 if (!CommandLine::ForCurrentProcess()->HasSwitch( 167 if (!CommandLine::ForCurrentProcess()->HasSwitch(
164 switches::kEnableEphemeralApps)) { 168 switches::kEnableEphemeralApps)) {
165 return; 169 return;
166 } 170 }
167 171
168 const extensions::Extension* extension = app_window()->GetExtension(); 172 const extensions::Extension* extension =
173 extension_app_window()->GetExtension();
169 if (!extension) 174 if (!extension)
170 return; 175 return;
171 176
172 // For the icon resources. 177 // For the icon resources.
173 base::FilePath chrome_path; 178 base::FilePath chrome_path;
174 if (!PathService::Get(base::FILE_EXE, &chrome_path)) 179 if (!PathService::Get(base::FILE_EXE, &chrome_path))
175 return; 180 return;
176 181
177 DCHECK(!app_model_id_.empty()); 182 DCHECK(!app_model_id_.empty());
178 183
179 JumpListUpdater jumplist_updater(app_model_id_); 184 JumpListUpdater jumplist_updater(app_model_id_);
180 if (!jumplist_updater.BeginUpdate()) 185 if (!jumplist_updater.BeginUpdate())
181 return; 186 return;
182 187
183 // Add item to install ephemeral apps. 188 // Add item to install ephemeral apps.
184 if (extensions::util::IsEphemeralApp(extension->id(), 189 if (extensions::util::IsEphemeralApp(extension->id(),
185 app_window()->browser_context())) { 190 app_window()->GetBrowserContext())) {
186 scoped_refptr<ShellLinkItem> link(new ShellLinkItem()); 191 scoped_refptr<ShellLinkItem> link(new ShellLinkItem());
187 link->set_title(l10n_util::GetStringUTF16(IDS_APP_INSTALL_TITLE)); 192 link->set_title(l10n_util::GetStringUTF16(IDS_APP_INSTALL_TITLE));
188 link->set_icon(chrome_path.value(), 193 link->set_icon(chrome_path.value(),
189 icon_resources::kInstallPackagedAppIndex); 194 icon_resources::kInstallPackagedAppIndex);
190 ShellIntegration::AppendProfileArgs( 195 ShellIntegration::AppendProfileArgs(
191 app_window()->browser_context()->GetPath(), link->GetCommandLine()); 196 app_window()->GetBrowserContext()->GetPath(), link->GetCommandLine());
192 link->GetCommandLine()->AppendSwitchASCII(switches::kInstallFromWebstore, 197 link->GetCommandLine()->AppendSwitchASCII(switches::kInstallFromWebstore,
193 extension->id()); 198 extension->id());
194 199
195 ShellLinkItemList items; 200 ShellLinkItemList items;
196 items.push_back(link); 201 items.push_back(link);
197 jumplist_updater.AddTasks(items); 202 jumplist_updater.AddTasks(items);
198 } 203 }
199 204
200 // Note that an empty jumplist must still be committed to clear all items. 205 // Note that an empty jumplist must still be committed to clear all items.
201 jumplist_updater.CommitUpdate(); 206 jumplist_updater.CommitUpdate();
202 } 207 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698