OLD | NEW |
---|---|
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 "extensions/browser/app_window/app_window.h" | 5 #include "extensions/browser/app_window/app_window.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
247 CHECK(!client->IsGuestSession(context) || context->IsOffTheRecord()) | 247 CHECK(!client->IsGuestSession(context) || context->IsOffTheRecord()) |
248 << "Only off the record window may be opened in the guest mode."; | 248 << "Only off the record window may be opened in the guest mode."; |
249 } | 249 } |
250 | 250 |
251 void AppWindow::Init(const GURL& url, | 251 void AppWindow::Init(const GURL& url, |
252 AppWindowContents* app_window_contents, | 252 AppWindowContents* app_window_contents, |
253 const CreateParams& params) { | 253 const CreateParams& params) { |
254 // Initialize the render interface and web contents | 254 // Initialize the render interface and web contents |
255 app_window_contents_.reset(app_window_contents); | 255 app_window_contents_.reset(app_window_contents); |
256 app_window_contents_->Initialize(browser_context(), url); | 256 app_window_contents_->Initialize(browser_context(), url); |
257 WebContents* web_contents = app_window_contents_->GetWebContents(); | |
258 if (CommandLine::ForCurrentProcess()->HasSwitch( | 257 if (CommandLine::ForCurrentProcess()->HasSwitch( |
259 switches::kEnableAppsShowOnFirstPaint)) { | 258 switches::kEnableAppsShowOnFirstPaint)) { |
260 content::WebContentsObserver::Observe(web_contents); | 259 content::WebContentsObserver::Observe(web_contents()); |
261 } | 260 } |
262 app_delegate_->InitWebContents(web_contents); | 261 app_delegate_->InitWebContents(web_contents()); |
263 | 262 |
264 WebContentsModalDialogManager::CreateForWebContents(web_contents); | 263 WebContentsModalDialogManager::CreateForWebContents(web_contents()); |
265 | 264 |
266 web_contents->SetDelegate(this); | 265 web_contents()->SetDelegate(this); |
267 WebContentsModalDialogManager::FromWebContents(web_contents) | 266 WebContentsModalDialogManager::FromWebContents(web_contents()) |
268 ->SetDelegate(this); | 267 ->SetDelegate(this); |
269 SetViewType(web_contents, VIEW_TYPE_APP_WINDOW); | 268 SetViewType(web_contents(), VIEW_TYPE_APP_WINDOW); |
270 | 269 |
271 // Initialize the window | 270 // Initialize the window |
272 CreateParams new_params = LoadDefaults(params); | 271 CreateParams new_params = LoadDefaults(params); |
273 window_type_ = new_params.window_type; | 272 window_type_ = new_params.window_type; |
274 window_key_ = new_params.window_key; | 273 window_key_ = new_params.window_key; |
275 | 274 |
276 // Windows cannot be always-on-top in fullscreen mode for security reasons. | 275 // Windows cannot be always-on-top in fullscreen mode for security reasons. |
277 cached_always_on_top_ = new_params.always_on_top; | 276 cached_always_on_top_ = new_params.always_on_top; |
278 if (new_params.state == ui::SHOW_STATE_FULLSCREEN) | 277 if (new_params.state == ui::SHOW_STATE_FULLSCREEN) |
279 new_params.always_on_top = false; | 278 new_params.always_on_top = false; |
280 | 279 |
281 requested_alpha_enabled_ = new_params.alpha_enabled; | 280 requested_alpha_enabled_ = new_params.alpha_enabled; |
282 | 281 |
283 AppWindowClient* app_window_client = AppWindowClient::Get(); | 282 AppWindowClient* app_window_client = AppWindowClient::Get(); |
284 native_app_window_.reset( | 283 native_app_window_.reset( |
285 app_window_client->CreateNativeAppWindow(this, &new_params)); | 284 app_window_client->CreateNativeAppWindow(this, &new_params)); |
286 | 285 |
287 helper_.reset(new AppWebContentsHelper( | 286 helper_.reset(new AppWebContentsHelper( |
288 browser_context_, extension_id_, web_contents, app_delegate_.get())); | 287 browser_context_, extension_id_, web_contents(), app_delegate_.get())); |
289 | 288 |
290 popup_manager_.reset( | 289 popup_manager_.reset( |
291 new web_modal::PopupManager(GetWebContentsModalDialogHost())); | 290 new web_modal::PopupManager(GetWebContentsModalDialogHost())); |
292 popup_manager_->RegisterWith(web_contents); | 291 popup_manager_->RegisterWith(web_contents()); |
293 | 292 |
294 UpdateExtensionAppIcon(); | 293 UpdateExtensionAppIcon(); |
295 AppWindowRegistry::Get(browser_context_)->AddAppWindow(this); | 294 AppWindowRegistry::Get(browser_context_)->AddAppWindow(this); |
296 | 295 |
297 if (new_params.hidden) { | 296 if (new_params.hidden) { |
298 // Although the window starts hidden by default, calling Hide() here | 297 // Although the window starts hidden by default, calling Hide() here |
299 // notifies observers of the window being hidden. | 298 // notifies observers of the window being hidden. |
300 Hide(); | 299 Hide(); |
301 } else { | 300 } else { |
302 // Panels are not activated by default. | 301 // Panels are not activated by default. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
336 app_window_contents_->LoadContents(new_params.creator_process_id); | 335 app_window_contents_->LoadContents(new_params.creator_process_id); |
337 | 336 |
338 if (CommandLine::ForCurrentProcess()->HasSwitch( | 337 if (CommandLine::ForCurrentProcess()->HasSwitch( |
339 extensions::switches::kEnableAppsShowOnFirstPaint)) { | 338 extensions::switches::kEnableAppsShowOnFirstPaint)) { |
340 // We want to show the window only when the content has been painted. For | 339 // We want to show the window only when the content has been painted. For |
341 // that to happen, we need to define a size for the content, otherwise the | 340 // that to happen, we need to define a size for the content, otherwise the |
342 // layout will happen in a 0x0 area. | 341 // layout will happen in a 0x0 area. |
343 gfx::Insets frame_insets = native_app_window_->GetFrameInsets(); | 342 gfx::Insets frame_insets = native_app_window_->GetFrameInsets(); |
344 gfx::Rect initial_bounds = new_params.GetInitialWindowBounds(frame_insets); | 343 gfx::Rect initial_bounds = new_params.GetInitialWindowBounds(frame_insets); |
345 initial_bounds.Inset(frame_insets); | 344 initial_bounds.Inset(frame_insets); |
346 app_delegate_->ResizeWebContents(web_contents, initial_bounds.size()); | 345 app_delegate_->ResizeWebContents(web_contents(), initial_bounds.size()); |
347 } | 346 } |
348 } | 347 } |
349 | 348 |
350 AppWindow::~AppWindow() { | 349 AppWindow::~AppWindow() { |
351 } | 350 } |
352 | 351 |
353 void AppWindow::RequestMediaAccessPermission( | 352 void AppWindow::RequestMediaAccessPermission( |
354 content::WebContents* web_contents, | 353 content::WebContents* web_contents, |
355 const content::MediaStreamRequest& request, | 354 const content::MediaStreamRequest& request, |
356 const content::MediaResponseCallback& callback) { | 355 const content::MediaResponseCallback& callback) { |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
445 if (show_on_first_paint_) { | 444 if (show_on_first_paint_) { |
446 DCHECK(delayed_show_type_ == SHOW_ACTIVE || | 445 DCHECK(delayed_show_type_ == SHOW_ACTIVE || |
447 delayed_show_type_ == SHOW_INACTIVE); | 446 delayed_show_type_ == SHOW_INACTIVE); |
448 Show(delayed_show_type_); | 447 Show(delayed_show_type_); |
449 } | 448 } |
450 } | 449 } |
451 | 450 |
452 void AppWindow::OnNativeClose() { | 451 void AppWindow::OnNativeClose() { |
453 AppWindowRegistry::Get(browser_context_)->RemoveAppWindow(this); | 452 AppWindowRegistry::Get(browser_context_)->RemoveAppWindow(this); |
454 if (app_window_contents_) { | 453 if (app_window_contents_) { |
455 WebContents* web_contents = app_window_contents_->GetWebContents(); | 454 WebContentsModalDialogManager* modal_dialog_manager = |
456 WebContentsModalDialogManager::FromWebContents(web_contents) | 455 WebContentsModalDialogManager::FromWebContents(web_contents()); |
457 ->SetDelegate(NULL); | 456 if (modal_dialog_manager) // May be NULL in unit tests. |
James Cook
2014/11/17 17:48:36
null
Yoyo Zhou
2014/11/17 23:55:26
Done.
| |
457 modal_dialog_manager->SetDelegate(NULL); | |
James Cook
2014/11/17 17:48:36
nullptr
Yoyo Zhou
2014/11/17 23:55:26
Done.
| |
458 app_window_contents_->NativeWindowClosed(); | 458 app_window_contents_->NativeWindowClosed(); |
459 } | 459 } |
460 delete this; | 460 delete this; |
461 } | 461 } |
462 | 462 |
463 void AppWindow::OnNativeWindowChanged() { | 463 void AppWindow::OnNativeWindowChanged() { |
464 SaveWindowPosition(); | 464 SaveWindowPosition(); |
465 | 465 |
466 #if defined(OS_WIN) | 466 #if defined(OS_WIN) |
467 if (native_app_window_ && cached_always_on_top_ && !IsFullscreen() && | 467 if (native_app_window_ && cached_always_on_top_ && !IsFullscreen() && |
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1089 region.bounds.x(), | 1089 region.bounds.x(), |
1090 region.bounds.y(), | 1090 region.bounds.y(), |
1091 region.bounds.right(), | 1091 region.bounds.right(), |
1092 region.bounds.bottom(), | 1092 region.bounds.bottom(), |
1093 region.draggable ? SkRegion::kUnion_Op : SkRegion::kDifference_Op); | 1093 region.draggable ? SkRegion::kUnion_Op : SkRegion::kDifference_Op); |
1094 } | 1094 } |
1095 return sk_region; | 1095 return sk_region; |
1096 } | 1096 } |
1097 | 1097 |
1098 } // namespace extensions | 1098 } // namespace extensions |
OLD | NEW |