| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 #include "content/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 #include "ui/gfx/screen.h" | 101 #include "ui/gfx/screen.h" |
| 102 #include "ui/gl/gl_switches.h" | 102 #include "ui/gl/gl_switches.h" |
| 103 | 103 |
| 104 #if defined(ENABLE_BROWSER_CDMS) | 104 #if defined(ENABLE_BROWSER_CDMS) |
| 105 #include "content/browser/media/media_web_contents_observer.h" | 105 #include "content/browser/media/media_web_contents_observer.h" |
| 106 #endif | 106 #endif |
| 107 | 107 |
| 108 #if defined(OS_ANDROID) | 108 #if defined(OS_ANDROID) |
| 109 #include "content/browser/android/content_video_view.h" | 109 #include "content/browser/android/content_video_view.h" |
| 110 #include "content/browser/android/date_time_chooser_android.h" | 110 #include "content/browser/android/date_time_chooser_android.h" |
| 111 #include "content/browser/android/media_players_observer.h" |
| 111 #include "content/browser/media/android/browser_media_player_manager.h" | 112 #include "content/browser/media/android/browser_media_player_manager.h" |
| 112 #include "content/browser/web_contents/web_contents_android.h" | 113 #include "content/browser/web_contents/web_contents_android.h" |
| 113 #endif | 114 #endif |
| 114 | 115 |
| 115 #if defined(OS_MACOSX) | 116 #if defined(OS_MACOSX) |
| 116 #include "base/mac/foundation_util.h" | 117 #include "base/mac/foundation_util.h" |
| 117 #endif | 118 #endif |
| 118 | 119 |
| 119 namespace content { | 120 namespace content { |
| 120 namespace { | 121 namespace { |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 render_view_message_source_(NULL), | 352 render_view_message_source_(NULL), |
| 352 render_frame_message_source_(NULL), | 353 render_frame_message_source_(NULL), |
| 353 fullscreen_widget_routing_id_(MSG_ROUTING_NONE), | 354 fullscreen_widget_routing_id_(MSG_ROUTING_NONE), |
| 354 fullscreen_widget_had_focus_at_shutdown_(false), | 355 fullscreen_widget_had_focus_at_shutdown_(false), |
| 355 is_subframe_(false), | 356 is_subframe_(false), |
| 356 force_disable_overscroll_content_(false), | 357 force_disable_overscroll_content_(false), |
| 357 last_dialog_suppressed_(false), | 358 last_dialog_suppressed_(false), |
| 358 geolocation_service_context_(new GeolocationServiceContext()), | 359 geolocation_service_context_(new GeolocationServiceContext()), |
| 359 accessibility_mode_( | 360 accessibility_mode_( |
| 360 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()), | 361 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()), |
| 361 audio_stream_monitor_(this), | |
| 362 virtual_keyboard_requested_(false), | 362 virtual_keyboard_requested_(false), |
| 363 loading_weak_factory_(this) { | 363 loading_weak_factory_(this) { |
| 364 frame_tree_.SetFrameRemoveListener( | 364 frame_tree_.SetFrameRemoveListener( |
| 365 base::Bind(&WebContentsImpl::OnFrameRemoved, | 365 base::Bind(&WebContentsImpl::OnFrameRemoved, |
| 366 base::Unretained(this))); | 366 base::Unretained(this))); |
| 367 #if defined(ENABLE_BROWSER_CDMS) | 367 #if defined(ENABLE_BROWSER_CDMS) |
| 368 media_web_contents_observer_.reset(new MediaWebContentsObserver(this)); | 368 media_web_contents_observer_.reset(new MediaWebContentsObserver(this)); |
| 369 #endif | 369 #endif |
| 370 |
| 371 #if defined(OS_ANDROID) |
| 372 audio_state_provider_.reset(new MediaPlayersObserver(this)); |
| 373 #else |
| 374 audio_state_provider_.reset(new AudioStreamMonitor(this)); |
| 375 #endif |
| 370 } | 376 } |
| 371 | 377 |
| 372 WebContentsImpl::~WebContentsImpl() { | 378 WebContentsImpl::~WebContentsImpl() { |
| 373 is_being_destroyed_ = true; | 379 is_being_destroyed_ = true; |
| 374 | 380 |
| 375 // Delete all RFH pending shutdown, which will lead the corresponding RVH to | 381 // Delete all RFH pending shutdown, which will lead the corresponding RVH to |
| 376 // shutdown and be deleted as well. | 382 // shutdown and be deleted as well. |
| 377 frame_tree_.ForEach( | 383 frame_tree_.ForEach( |
| 378 base::Bind(&RenderFrameHostManager::ClearRFHsPendingShutdown)); | 384 base::Bind(&RenderFrameHostManager::ClearRFHsPendingShutdown)); |
| 379 | 385 |
| (...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1035 | 1041 |
| 1036 bool WebContentsImpl::IsBeingDestroyed() const { | 1042 bool WebContentsImpl::IsBeingDestroyed() const { |
| 1037 return is_being_destroyed_; | 1043 return is_being_destroyed_; |
| 1038 } | 1044 } |
| 1039 | 1045 |
| 1040 void WebContentsImpl::NotifyNavigationStateChanged( | 1046 void WebContentsImpl::NotifyNavigationStateChanged( |
| 1041 InvalidateTypes changed_flags) { | 1047 InvalidateTypes changed_flags) { |
| 1042 // Create and release the audio power save blocker depending on whether the | 1048 // Create and release the audio power save blocker depending on whether the |
| 1043 // tab is actively producing audio or not. | 1049 // tab is actively producing audio or not. |
| 1044 if ((changed_flags & INVALIDATE_TYPE_TAB) && | 1050 if ((changed_flags & INVALIDATE_TYPE_TAB) && |
| 1045 AudioStreamMonitor::monitoring_available()) { | 1051 AudioStateProvider::audio_state_available()) { |
| 1046 if (WasRecentlyAudible()) { | 1052 if (WasRecentlyAudible()) { |
| 1047 if (!audio_power_save_blocker_) | 1053 if (!audio_power_save_blocker_) |
| 1048 CreateAudioPowerSaveBlocker(); | 1054 CreateAudioPowerSaveBlocker(); |
| 1049 } else { | 1055 } else { |
| 1050 audio_power_save_blocker_.reset(); | 1056 audio_power_save_blocker_.reset(); |
| 1051 } | 1057 } |
| 1052 } | 1058 } |
| 1053 | 1059 |
| 1054 if (delegate_) | 1060 if (delegate_) |
| 1055 delegate_->NavigationStateChanged(this, changed_flags); | 1061 delegate_->NavigationStateChanged(this, changed_flags); |
| (...skipping 1433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2489 } | 2495 } |
| 2490 Send(new ViewMsg_StopFinding(GetRoutingID(), action)); | 2496 Send(new ViewMsg_StopFinding(GetRoutingID(), action)); |
| 2491 } | 2497 } |
| 2492 | 2498 |
| 2493 void WebContentsImpl::InsertCSS(const std::string& css) { | 2499 void WebContentsImpl::InsertCSS(const std::string& css) { |
| 2494 GetMainFrame()->Send(new FrameMsg_CSSInsertRequest( | 2500 GetMainFrame()->Send(new FrameMsg_CSSInsertRequest( |
| 2495 GetMainFrame()->GetRoutingID(), css)); | 2501 GetMainFrame()->GetRoutingID(), css)); |
| 2496 } | 2502 } |
| 2497 | 2503 |
| 2498 bool WebContentsImpl::WasRecentlyAudible() { | 2504 bool WebContentsImpl::WasRecentlyAudible() { |
| 2499 return audio_stream_monitor_.WasRecentlyAudible(); | 2505 return audio_state_provider_->WasRecentlyAudible(); |
| 2500 } | 2506 } |
| 2501 | 2507 |
| 2502 void WebContentsImpl::GetManifest(const GetManifestCallback& callback) { | 2508 void WebContentsImpl::GetManifest(const GetManifestCallback& callback) { |
| 2503 manifest_manager_host_->GetManifest(GetMainFrame(), callback); | 2509 manifest_manager_host_->GetManifest(GetMainFrame(), callback); |
| 2504 } | 2510 } |
| 2505 | 2511 |
| 2506 void WebContentsImpl::ExitFullscreen() { | 2512 void WebContentsImpl::ExitFullscreen() { |
| 2507 // Clean up related state and initiate the fullscreen exit. | 2513 // Clean up related state and initiate the fullscreen exit. |
| 2508 GetRenderViewHostImpl()->RejectMouseLockOrUnlockIfNecessary(); | 2514 GetRenderViewHostImpl()->RejectMouseLockOrUnlockIfNecessary(); |
| 2509 ExitFullscreenMode(); | 2515 ExitFullscreenMode(); |
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3181 ->InitDisplaySleepBlocker(GetView()->GetNativeView()); | 3187 ->InitDisplaySleepBlocker(GetView()->GetNativeView()); |
| 3182 #endif | 3188 #endif |
| 3183 #endif | 3189 #endif |
| 3184 } | 3190 } |
| 3185 | 3191 |
| 3186 void WebContentsImpl::MaybeReleasePowerSaveBlockers() { | 3192 void WebContentsImpl::MaybeReleasePowerSaveBlockers() { |
| 3187 // If there are no more audio players and we don't have audio stream | 3193 // If there are no more audio players and we don't have audio stream |
| 3188 // monitoring, release the audio power save blocker here instead of during | 3194 // monitoring, release the audio power save blocker here instead of during |
| 3189 // NotifyNavigationStateChanged(). | 3195 // NotifyNavigationStateChanged(). |
| 3190 if (active_audio_players_.empty() && | 3196 if (active_audio_players_.empty() && |
| 3191 !AudioStreamMonitor::monitoring_available()) { | 3197 !AudioStateProvider::audio_state_available()) { |
| 3192 audio_power_save_blocker_.reset(); | 3198 audio_power_save_blocker_.reset(); |
| 3193 } | 3199 } |
| 3194 | 3200 |
| 3195 // If there are no more video players, clear the video power save blocker. | 3201 // If there are no more video players, clear the video power save blocker. |
| 3196 if (active_video_players_.empty()) | 3202 if (active_video_players_.empty()) |
| 3197 video_power_save_blocker_.reset(); | 3203 video_power_save_blocker_.reset(); |
| 3198 } | 3204 } |
| 3199 | 3205 |
| 3200 void WebContentsImpl::OnMediaPlayingNotification(int64 player_cookie, | 3206 void WebContentsImpl::OnMediaPlayingNotification(int64 player_cookie, |
| 3201 bool has_video, | 3207 bool has_video, |
| 3202 bool has_audio, | 3208 bool has_audio, |
| 3203 bool is_remote) { | 3209 bool is_remote) { |
| 3204 // Ignore the videos playing remotely and don't hold the wake lock for the | 3210 // Ignore the videos playing remotely and don't hold the wake lock for the |
| 3205 // screen. | 3211 // screen. |
| 3206 if (is_remote) return; | 3212 if (is_remote) return; |
| 3207 | 3213 |
| 3208 if (has_audio) { | 3214 if (has_audio) { |
| 3209 AddMediaPlayerEntry(player_cookie, &active_audio_players_); | 3215 AddMediaPlayerEntry(player_cookie, &active_audio_players_); |
| 3210 | 3216 |
| 3211 // If we don't have audio stream monitoring, allocate the audio power save | 3217 // If we don't have audio stream monitoring, allocate the audio power save |
| 3212 // blocker here instead of during NotifyNavigationStateChanged(). | 3218 // blocker here instead of during NotifyNavigationStateChanged(). |
| 3213 if (!audio_power_save_blocker_ && | 3219 if (!audio_power_save_blocker_ && |
| 3214 !AudioStreamMonitor::monitoring_available()) { | 3220 !AudioStateProvider::audio_state_available()) { |
| 3215 CreateAudioPowerSaveBlocker(); | 3221 CreateAudioPowerSaveBlocker(); |
| 3216 } | 3222 } |
| 3217 } | 3223 } |
| 3218 | 3224 |
| 3219 if (has_video) { | 3225 if (has_video) { |
| 3220 AddMediaPlayerEntry(player_cookie, &active_video_players_); | 3226 AddMediaPlayerEntry(player_cookie, &active_video_players_); |
| 3221 | 3227 |
| 3222 // If we're not hidden and have just created a player, create a blocker. | 3228 // If we're not hidden and have just created a player, create a blocker. |
| 3223 if (!video_power_save_blocker_ && !IsHidden()) | 3229 if (!video_power_save_blocker_ && !IsHidden()) |
| 3224 CreateVideoPowerSaveBlocker(); | 3230 CreateVideoPowerSaveBlocker(); |
| (...skipping 1288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4513 node->render_manager()->ResumeResponseDeferredAtStart(); | 4519 node->render_manager()->ResumeResponseDeferredAtStart(); |
| 4514 } | 4520 } |
| 4515 | 4521 |
| 4516 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { | 4522 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { |
| 4517 force_disable_overscroll_content_ = force_disable; | 4523 force_disable_overscroll_content_ = force_disable; |
| 4518 if (view_) | 4524 if (view_) |
| 4519 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); | 4525 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
| 4520 } | 4526 } |
| 4521 | 4527 |
| 4522 } // namespace content | 4528 } // namespace content |
| OLD | NEW |