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: content/browser/renderer_host/render_process_host_impl.cc

Issue 1214883004: Fixed the audio backgrounding bug (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed an unnecessary atomic operation 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "content/browser/renderer_host/render_process_host_impl.h" 8 #include "content/browser/renderer_host/render_process_host_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 if (visible_widgets_ == 0) { 1085 if (visible_widgets_ == 0) {
1086 DCHECK(!backgrounded_); 1086 DCHECK(!backgrounded_);
1087 SetBackgrounded(true); 1087 SetBackgrounded(true);
1088 } 1088 }
1089 } 1089 }
1090 1090
1091 int RenderProcessHostImpl::VisibleWidgetCount() const { 1091 int RenderProcessHostImpl::VisibleWidgetCount() const {
1092 return visible_widgets_; 1092 return visible_widgets_;
1093 } 1093 }
1094 1094
1095 void RenderProcessHostImpl::AudioStopped() {
1096 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1097
1098 // If the backgrounding was skipped because audio was playing, we background
gab 2015/06/30 13:41:41 -we (in general we try to avoid "we" in comments),
sebsg 2015/07/02 12:58:08 Done.
1099 // the tab.
1100 if (backgrounded_)
1101 SetBackgrounded(true);
1102 }
1103
1104 void RenderProcessHostImpl::AudioStarted() {
1105 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1106
1107 // If audio starts from a backgrounded tab, we un-background it.
gab 2015/06/30 13:41:41 // If audio starts playing from a backgrounded tab
sebsg 2015/07/02 12:58:08 Done.
1108 if (backgrounded_) {
1109 SetBackgrounded(false);
1110
1111 // Since it's not a visible tab, we need to set it to backgrounded so that
1112 // it is backgrounded again when the video finishes.
gab 2015/06/30 13:41:41 // Since it's not a visible tab, it needs to be ma
sebsg 2015/07/02 12:58:09 Done.
1113 SetBackgrounded(true);
1114 }
1115 }
1116
1095 bool RenderProcessHostImpl::IsForGuestsOnly() const { 1117 bool RenderProcessHostImpl::IsForGuestsOnly() const {
1096 return is_for_guests_only_; 1118 return is_for_guests_only_;
1097 } 1119 }
1098 1120
1099 StoragePartition* RenderProcessHostImpl::GetStoragePartition() const { 1121 StoragePartition* RenderProcessHostImpl::GetStoragePartition() const {
1100 return storage_partition_impl_; 1122 return storage_partition_impl_;
1101 } 1123 }
1102 1124
1103 static void AppendCompositorCommandLineFlags(base::CommandLine* command_line) { 1125 static void AppendCompositorCommandLineFlags(base::CommandLine* command_line) {
1104 if (IsPropertyTreeVerificationEnabled()) 1126 if (IsPropertyTreeVerificationEnabled())
(...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after
2230 mojo_application_host_->WillDestroySoon(); 2252 mojo_application_host_->WillDestroySoon();
2231 2253
2232 Send(new ChildProcessMsg_Shutdown()); 2254 Send(new ChildProcessMsg_Shutdown());
2233 } 2255 }
2234 2256
2235 void RenderProcessHostImpl::SuddenTerminationChanged(bool enabled) { 2257 void RenderProcessHostImpl::SuddenTerminationChanged(bool enabled) {
2236 SetSuddenTerminationAllowed(enabled); 2258 SetSuddenTerminationAllowed(enabled);
2237 } 2259 }
2238 2260
2239 void RenderProcessHostImpl::SetBackgrounded(bool backgrounded) { 2261 void RenderProcessHostImpl::SetBackgrounded(bool backgrounded) {
2262 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2240 TRACE_EVENT1("renderer_host", "RenderProcessHostImpl::SetBackgrounded", 2263 TRACE_EVENT1("renderer_host", "RenderProcessHostImpl::SetBackgrounded",
2241 "backgrounded", backgrounded); 2264 "backgrounded", backgrounded);
2242 // Note: we always set the backgrounded_ value. If the process is NULL 2265 // Note: we always set the backgrounded_ value. If the process is NULL
2243 // (and hence hasn't been created yet), we will set the process priority 2266 // (and hence hasn't been created yet), we will set the process priority
2244 // later when we create the process. 2267 // later when we create the process.
2245 backgrounded_ = backgrounded; 2268 backgrounded_ = backgrounded;
2246 if (!child_process_launcher_.get() || child_process_launcher_->IsStarting()) 2269 if (!child_process_launcher_.get() || child_process_launcher_->IsStarting())
2247 return; 2270 return;
2248 2271
2249 // Don't background processes which have active audio streams. 2272 // Don't background processes which have active audio streams.
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
2512 void RenderProcessHostImpl::GetAudioOutputControllers( 2535 void RenderProcessHostImpl::GetAudioOutputControllers(
2513 const GetAudioOutputControllersCallback& callback) const { 2536 const GetAudioOutputControllersCallback& callback) const {
2514 audio_renderer_host()->GetOutputControllers(callback); 2537 audio_renderer_host()->GetOutputControllers(callback);
2515 } 2538 }
2516 2539
2517 BluetoothDispatcherHost* RenderProcessHostImpl::GetBluetoothDispatcherHost() { 2540 BluetoothDispatcherHost* RenderProcessHostImpl::GetBluetoothDispatcherHost() {
2518 return bluetooth_dispatcher_host_.get(); 2541 return bluetooth_dispatcher_host_.get();
2519 } 2542 }
2520 2543
2521 } // namespace content 2544 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698