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

Side by Side Diff: components/guest_view/browser/guest_view_base.cc

Issue 1232603002: This patch improves the way that GuestViewManager tracks the destruction of GuestView embedders. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comment by kalman@. Created 5 years, 5 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 "components/guest_view/browser/guest_view_base.h" 5 #include "components/guest_view/browser/guest_view_base.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "components/guest_view/browser/guest_view_event.h" 10 #include "components/guest_view/browser/guest_view_event.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 const content::LoadCommittedDetails& details, 69 const content::LoadCommittedDetails& details,
70 const content::FrameNavigateParams& params) override { 70 const content::FrameNavigateParams& params) override {
71 // If the embedder navigates to a different page then destroy the guest. 71 // If the embedder navigates to a different page then destroy the guest.
72 if (details.is_navigation_to_different_page()) 72 if (details.is_navigation_to_different_page())
73 Destroy(); 73 Destroy();
74 } 74 }
75 75
76 void RenderProcessGone(base::TerminationStatus status) override { 76 void RenderProcessGone(base::TerminationStatus status) override {
77 if (destroyed_) 77 if (destroyed_)
78 return; 78 return;
79
80 GuestViewManager::FromBrowserContext(web_contents()->GetBrowserContext())
81 ->EmbedderWillBeDestroyed(
82 web_contents()->GetRenderProcessHost()->GetID());
83
84 // If the embedder process is destroyed, then destroy the guest. 79 // If the embedder process is destroyed, then destroy the guest.
85 Destroy(); 80 Destroy();
86 } 81 }
87 82
88 void DidToggleFullscreenModeForTab(bool entered_fullscreen) override { 83 void DidToggleFullscreenModeForTab(bool entered_fullscreen) override {
89 if (destroyed_) 84 if (destroyed_)
90 return; 85 return;
91 86
92 is_fullscreen_ = entered_fullscreen; 87 is_fullscreen_ = entered_fullscreen;
93 guest_->EmbedderFullscreenToggled(is_fullscreen_); 88 guest_->EmbedderFullscreenToggled(is_fullscreen_);
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 } 310 }
316 311
317 DispatchOnResizeEvent(guest_size_, new_size); 312 DispatchOnResizeEvent(guest_size_, new_size);
318 guest_size_ = new_size; 313 guest_size_ = new_size;
319 } 314 }
320 315
321 auto_size_enabled_ = enable_auto_size; 316 auto_size_enabled_ = enable_auto_size;
322 } 317 }
323 318
324 // static 319 // static
325 void GuestViewBase::CleanUp(int embedder_process_id, int view_instance_id) { 320 void GuestViewBase::CleanUp(content::BrowserContext* browser_context,
321 int embedder_process_id,
322 int view_instance_id) {
326 // TODO(paulmeyer): Add in any general GuestView cleanup work here. 323 // TODO(paulmeyer): Add in any general GuestView cleanup work here.
327 } 324 }
328 325
329 // static 326 // static
330 GuestViewBase* GuestViewBase::FromWebContents(const WebContents* web_contents) { 327 GuestViewBase* GuestViewBase::FromWebContents(const WebContents* web_contents) {
331 WebContentsGuestViewMap* guest_map = webcontents_guestview_map.Pointer(); 328 WebContentsGuestViewMap* guest_map = webcontents_guestview_map.Pointer();
332 auto it = guest_map->find(web_contents); 329 auto it = guest_map->find(web_contents);
333 return it == guest_map->end() ? nullptr : it->second; 330 return it == guest_map->end() ? nullptr : it->second;
334 } 331 }
335 332
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 826
830 auto embedder_zoom_controller = 827 auto embedder_zoom_controller =
831 ui_zoom::ZoomController::FromWebContents(owner_web_contents()); 828 ui_zoom::ZoomController::FromWebContents(owner_web_contents());
832 // Chrome Apps do not have a ZoomController. 829 // Chrome Apps do not have a ZoomController.
833 if (!embedder_zoom_controller) 830 if (!embedder_zoom_controller)
834 return; 831 return;
835 embedder_zoom_controller->RemoveObserver(this); 832 embedder_zoom_controller->RemoveObserver(this);
836 } 833 }
837 834
838 } // namespace guest_view 835 } // namespace guest_view
OLDNEW
« no previous file with comments | « components/guest_view/browser/guest_view_base.h ('k') | components/guest_view/browser/guest_view_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698