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

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

Issue 503383002: Allow component IME extension use app.window and add 'ime' window type for app window (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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.h" 5 #include "chrome/browser/ui/views/apps/chrome_native_app_window_views.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 "base/command_line.h" 8 #include "base/command_line.h"
9 #include "chrome/app/chrome_command_ids.h" 9 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/app_mode/app_mode_utils.h" 10 #include "chrome/browser/app_mode/app_mode_utils.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 #include "ash/wm/window_state.h" 45 #include "ash/wm/window_state.h"
46 #include "ash/wm/window_state_delegate.h" 46 #include "ash/wm/window_state_delegate.h"
47 #include "ash/wm/window_state_observer.h" 47 #include "ash/wm/window_state_observer.h"
48 #include "chrome/browser/ui/ash/ash_util.h" 48 #include "chrome/browser/ui/ash/ash_util.h"
49 #include "chrome/browser/ui/ash/multi_user/multi_user_context_menu.h" 49 #include "chrome/browser/ui/ash/multi_user/multi_user_context_menu.h"
50 #include "ui/aura/client/aura_constants.h" 50 #include "ui/aura/client/aura_constants.h"
51 #include "ui/aura/client/window_tree_client.h" 51 #include "ui/aura/client/window_tree_client.h"
52 #include "ui/aura/window_observer.h" 52 #include "ui/aura/window_observer.h"
53 #endif 53 #endif
54 54
55 #if defined(OS_CHROMEOS)
56 #include "ash/shell_window_ids.h"
57 #endif
58
55 using extensions::AppWindow; 59 using extensions::AppWindow;
56 60
57 namespace { 61 namespace {
58 62
59 const int kMinPanelWidth = 100; 63 const int kMinPanelWidth = 100;
60 const int kMinPanelHeight = 100; 64 const int kMinPanelHeight = 100;
61 const int kDefaultPanelWidth = 200; 65 const int kDefaultPanelWidth = 200;
62 const int kDefaultPanelHeight = 300; 66 const int kDefaultPanelHeight = 300;
63 67
64 struct AcceleratorMapping { 68 struct AcceleratorMapping {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 226 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
223 // Set up a custom WM_CLASS for app windows. This allows task switchers in 227 // Set up a custom WM_CLASS for app windows. This allows task switchers in
224 // X11 environments to distinguish them from main browser windows. 228 // X11 environments to distinguish them from main browser windows.
225 init_params.wm_class_name = web_app::GetWMClassFromAppName(app_name); 229 init_params.wm_class_name = web_app::GetWMClassFromAppName(app_name);
226 init_params.wm_class_class = shell_integration_linux::GetProgramClassName(); 230 init_params.wm_class_class = shell_integration_linux::GetProgramClassName();
227 const char kX11WindowRoleApp[] = "app"; 231 const char kX11WindowRoleApp[] = "app";
228 init_params.wm_role_name = std::string(kX11WindowRoleApp); 232 init_params.wm_role_name = std::string(kX11WindowRoleApp);
229 #endif 233 #endif
230 234
231 OnBeforeWidgetInit(&init_params, widget()); 235 OnBeforeWidgetInit(&init_params, widget());
236 #if defined(OS_CHROMEOS)
237 if (create_params.is_ime_window) {
238 // Puts ime windows into ime window container.
239 init_params.parent =
240 ash::Shell::GetContainer(ash::Shell::GetPrimaryRootWindow(),
241 ash::kShellWindowId_ImeWindowParentContainer);
242 }
243 #endif
232 widget()->Init(init_params); 244 widget()->Init(init_params);
233 245
234 // The frame insets are required to resolve the bounds specifications 246 // The frame insets are required to resolve the bounds specifications
235 // correctly. So we set the window bounds and constraints now. 247 // correctly. So we set the window bounds and constraints now.
236 gfx::Insets frame_insets = GetFrameInsets(); 248 gfx::Insets frame_insets = GetFrameInsets();
237 gfx::Rect window_bounds = create_params.GetInitialWindowBounds(frame_insets); 249 gfx::Rect window_bounds = create_params.GetInitialWindowBounds(frame_insets);
238 SetContentSizeConstraints(create_params.GetContentMinimumSize(frame_insets), 250 SetContentSizeConstraints(create_params.GetContentMinimumSize(frame_insets),
239 create_params.GetContentMaximumSize(frame_insets)); 251 create_params.GetContentMaximumSize(frame_insets));
240 if (!window_bounds.IsEmpty()) { 252 if (!window_bounds.IsEmpty()) {
241 typedef AppWindow::BoundsSpecification BoundsSpecification; 253 typedef AppWindow::BoundsSpecification BoundsSpecification;
242 bool position_specified = 254 bool position_specified =
243 window_bounds.x() != BoundsSpecification::kUnspecifiedPosition && 255 window_bounds.x() != BoundsSpecification::kUnspecifiedPosition &&
244 window_bounds.y() != BoundsSpecification::kUnspecifiedPosition; 256 window_bounds.y() != BoundsSpecification::kUnspecifiedPosition;
245 if (!position_specified) 257 if (!position_specified)
246 widget()->CenterWindow(window_bounds.size()); 258 widget()->CenterWindow(window_bounds.size());
247 else 259 else
248 widget()->SetBounds(window_bounds); 260 widget()->SetBounds(window_bounds);
249 } 261 }
250 262
251 if (IsFrameless() && 263 if (IsFrameless() &&
252 init_params.opacity == views::Widget::InitParams::TRANSLUCENT_WINDOW) { 264 init_params.opacity == views::Widget::InitParams::TRANSLUCENT_WINDOW) {
253 // The given window is most likely not rectangular since it uses 265 // The given window is most likely not rectangular since it uses
254 // transparency and has no standard frame, don't show a shadow for it. 266 // transparency and has no standard frame, don't show a shadow for it.
255 // TODO(skuhne): If we run into an application which should have a shadow 267 // TODO(skuhne): If we run into an application which should have a shadow
256 // but does not have, a new attribute has to be added. 268 // but does not have, a new attribute has to be added.
257 wm::SetShadowType(widget()->GetNativeWindow(), wm::SHADOW_TYPE_NONE); 269 wm::SetShadowType(widget()->GetNativeWindow(), wm::SHADOW_TYPE_NONE);
258 } 270 }
259 271
272 #if defined(OS_CHROMEOS)
273 if (create_params.is_ime_window)
274 return;
275 #endif
276
260 // Register accelarators supported by app windows. 277 // Register accelarators supported by app windows.
261 // TODO(jeremya/stevenjb): should these be registered for panels too? 278 // TODO(jeremya/stevenjb): should these be registered for panels too?
262 views::FocusManager* focus_manager = GetFocusManager(); 279 views::FocusManager* focus_manager = GetFocusManager();
263 const std::map<ui::Accelerator, int>& accelerator_table = 280 const std::map<ui::Accelerator, int>& accelerator_table =
264 GetAcceleratorTable(); 281 GetAcceleratorTable();
265 const bool is_kiosk_app_mode = chrome::IsRunningInForcedAppMode(); 282 const bool is_kiosk_app_mode = chrome::IsRunningInForcedAppMode();
266 283
267 // Ensures that kiosk mode accelerators are enabled when in kiosk mode (to be 284 // Ensures that kiosk mode accelerators are enabled when in kiosk mode (to be
268 // future proof). This is needed because GetAcceleratorTable() uses a static 285 // future proof). This is needed because GetAcceleratorTable() uses a static
269 // to store data and only checks kiosk mode once. If a platform app is 286 // to store data and only checks kiosk mode once. If a platform app is
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 InitializePanelWindow(create_params); 695 InitializePanelWindow(create_params);
679 } else { 696 } else {
680 InitializeDefaultWindow(create_params); 697 InitializeDefaultWindow(create_params);
681 } 698 }
682 extension_keybinding_registry_.reset(new ExtensionKeybindingRegistryViews( 699 extension_keybinding_registry_.reset(new ExtensionKeybindingRegistryViews(
683 Profile::FromBrowserContext(app_window->browser_context()), 700 Profile::FromBrowserContext(app_window->browser_context()),
684 widget()->GetFocusManager(), 701 widget()->GetFocusManager(),
685 extensions::ExtensionKeybindingRegistry::PLATFORM_APPS_ONLY, 702 extensions::ExtensionKeybindingRegistry::PLATFORM_APPS_ONLY,
686 NULL)); 703 NULL));
687 } 704 }
OLDNEW
« no previous file with comments | « chrome/browser/resources/chromeos/input_method/xkb_manifest.json ('k') | chrome/common/extensions/api/_api_features.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698