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

Side by Side Diff: chrome/browser/chromeos/power/renderer_freezer.cc

Issue 2395293003: chromeos: Add VLOG(1)s around renderer-freezing for suspend. (Closed)
Patch Set: remove extra parens Created 4 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
« no previous file with comments | « no previous file | chromeos/dbus/power_manager_client.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/chromeos/power/renderer_freezer.h" 5 #include "chrome/browser/chromeos/power/renderer_freezer.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 16 matching lines...) Expand all
27 #include "extensions/browser/process_map.h" 27 #include "extensions/browser/process_map.h"
28 #include "extensions/common/extension.h" 28 #include "extensions/common/extension.h"
29 #include "extensions/common/permissions/api_permission.h" 29 #include "extensions/common/permissions/api_permission.h"
30 #include "extensions/common/permissions/permissions_data.h" 30 #include "extensions/common/permissions/permissions_data.h"
31 31
32 namespace chromeos { 32 namespace chromeos {
33 33
34 RendererFreezer::RendererFreezer( 34 RendererFreezer::RendererFreezer(
35 std::unique_ptr<RendererFreezer::Delegate> delegate) 35 std::unique_ptr<RendererFreezer::Delegate> delegate)
36 : delegate_(std::move(delegate)), weak_factory_(this) { 36 : delegate_(std::move(delegate)), weak_factory_(this) {
37 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
38 VLOG(1) << "Creating RendererFreezer " << this;
37 delegate_->CheckCanFreezeRenderers( 39 delegate_->CheckCanFreezeRenderers(
38 base::Bind(&RendererFreezer::OnCheckCanFreezeRenderersComplete, 40 base::Bind(&RendererFreezer::OnCheckCanFreezeRenderersComplete,
39 weak_factory_.GetWeakPtr())); 41 weak_factory_.GetWeakPtr()));
40 } 42 }
41 43
42 RendererFreezer::~RendererFreezer() { 44 RendererFreezer::~RendererFreezer() {
45 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
46 VLOG(1) << "Destroying RendererFreezer " << this;
43 for (int rph_id : gcm_extension_processes_) { 47 for (int rph_id : gcm_extension_processes_) {
44 content::RenderProcessHost* host = 48 content::RenderProcessHost* host =
45 content::RenderProcessHost::FromID(rph_id); 49 content::RenderProcessHost::FromID(rph_id);
46 if (host) 50 if (host)
47 host->RemoveObserver(this); 51 host->RemoveObserver(this);
48 } 52 }
49 } 53 }
50 54
51 void RendererFreezer::SuspendImminent() { 55 void RendererFreezer::SuspendImminent() {
56 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
57 VLOG(1) << "Asking delegate to freeze renderers";
52 // All the delegate's operations are asynchronous so they may not complete 58 // All the delegate's operations are asynchronous so they may not complete
53 // before the system suspends. This is ok since the renderers only need to be 59 // before the system suspends. This is ok since the renderers only need to be
54 // frozen in dark resume. As long as they do get frozen soon after we enter 60 // frozen in dark resume. As long as they do get frozen soon after we enter
55 // dark resume, there shouldn't be a problem. 61 // dark resume, there shouldn't be a problem.
56 delegate_->FreezeRenderers(); 62 delegate_->FreezeRenderers();
57 } 63 }
58 64
59 void RendererFreezer::SuspendDone() { 65 void RendererFreezer::SuspendDone() {
66 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
67 VLOG(1) << "Asking delegate to thaw renderers";
60 delegate_->ThawRenderers(base::Bind(&RendererFreezer::OnThawRenderersComplete, 68 delegate_->ThawRenderers(base::Bind(&RendererFreezer::OnThawRenderersComplete,
61 weak_factory_.GetWeakPtr())); 69 weak_factory_.GetWeakPtr()));
62 } 70 }
63 71
64 void RendererFreezer::Observe(int type, 72 void RendererFreezer::Observe(int type,
65 const content::NotificationSource& source, 73 const content::NotificationSource& source,
66 const content::NotificationDetails& details) { 74 const content::NotificationDetails& details) {
67 switch (type) { 75 switch (type) {
68 case chrome::NOTIFICATION_SCREEN_LOCK_STATE_CHANGED: { 76 case chrome::NOTIFICATION_SCREEN_LOCK_STATE_CHANGED: {
69 OnScreenLockStateChanged( 77 OnScreenLockStateChanged(
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 131
124 registrar_.Add(this, chrome::NOTIFICATION_SCREEN_LOCK_STATE_CHANGED, 132 registrar_.Add(this, chrome::NOTIFICATION_SCREEN_LOCK_STATE_CHANGED,
125 content::NotificationService::AllBrowserContextsAndSources()); 133 content::NotificationService::AllBrowserContextsAndSources());
126 registrar_.Add( 134 registrar_.Add(
127 this, 135 this,
128 content::NOTIFICATION_RENDERER_PROCESS_CREATED, 136 content::NOTIFICATION_RENDERER_PROCESS_CREATED,
129 content::NotificationService::AllBrowserContextsAndSources()); 137 content::NotificationService::AllBrowserContextsAndSources());
130 } 138 }
131 139
132 void RendererFreezer::OnThawRenderersComplete(bool success) { 140 void RendererFreezer::OnThawRenderersComplete(bool success) {
141 // TODO(derat): Remove after http://crbug.com/648580 is fixed.
142 VLOG(1) << "Thawing renderers complete";
133 if (success) 143 if (success)
134 return; 144 return;
135 145
136 // We failed to write the thaw command and the renderers are still frozen. We 146 // We failed to write the thaw command and the renderers are still frozen. We
137 // are in big trouble because none of the tabs will be responsive so let's 147 // are in big trouble because none of the tabs will be responsive so let's
138 // crash the browser instead. 148 // crash the browser instead.
139 LOG(FATAL) << "Unable to thaw renderers."; 149 LOG(FATAL) << "Unable to thaw renderers.";
140 } 150 }
141 151
142 void RendererFreezer::OnScreenLockStateChanged(chromeos::ScreenLocker* locker, 152 void RendererFreezer::OnScreenLockStateChanged(chromeos::ScreenLocker* locker,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 rph->AddObserver(this); 210 rph->AddObserver(this);
201 return; 211 return;
202 } 212 }
203 213
204 // We didn't find an extension in this RenderProcessHost that is using GCM so 214 // We didn't find an extension in this RenderProcessHost that is using GCM so
205 // we can go ahead and freeze it on suspend. 215 // we can go ahead and freeze it on suspend.
206 delegate_->SetShouldFreezeRenderer(rph->GetHandle(), true); 216 delegate_->SetShouldFreezeRenderer(rph->GetHandle(), true);
207 } 217 }
208 218
209 } // namespace chromeos 219 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chromeos/dbus/power_manager_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698