| 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/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 2994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3005 | 3005 |
| 3006 void WebContentsImpl::OnUpdateFaviconURL( | 3006 void WebContentsImpl::OnUpdateFaviconURL( |
| 3007 const std::vector<FaviconURL>& candidates) { | 3007 const std::vector<FaviconURL>& candidates) { |
| 3008 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 3008 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| 3009 DidUpdateFaviconURL(candidates)); | 3009 DidUpdateFaviconURL(candidates)); |
| 3010 } | 3010 } |
| 3011 | 3011 |
| 3012 void WebContentsImpl::OnMediaPlayingNotification(int64 player_cookie, | 3012 void WebContentsImpl::OnMediaPlayingNotification(int64 player_cookie, |
| 3013 bool has_video, | 3013 bool has_video, |
| 3014 bool has_audio) { | 3014 bool has_audio) { |
| 3015 // Chrome OS does its own detection of audio and video. | |
| 3016 #if !defined(OS_CHROMEOS) | 3015 #if !defined(OS_CHROMEOS) |
| 3017 scoped_ptr<PowerSaveBlocker> blocker; | 3016 scoped_ptr<PowerSaveBlocker> blocker; |
| 3018 if (has_video) { | 3017 if (has_video) { |
| 3019 blocker = PowerSaveBlocker::Create( | 3018 blocker = PowerSaveBlocker::Create( |
| 3020 PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, "Playing video"); | 3019 PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, "Playing video"); |
| 3021 #if defined(OS_ANDROID) | 3020 #if defined(OS_ANDROID) |
| 3022 static_cast<PowerSaveBlockerImpl*>(blocker.get()) | 3021 static_cast<PowerSaveBlockerImpl*>(blocker.get()) |
| 3023 ->InitDisplaySleepBlocker(GetView()->GetNativeView()); | 3022 ->InitDisplaySleepBlocker(GetView()->GetNativeView()); |
| 3024 #endif | 3023 #endif |
| 3025 } else if (has_audio) { | 3024 } else if (has_audio) { |
| 3026 blocker = PowerSaveBlocker::Create( | 3025 blocker = PowerSaveBlocker::Create( |
| 3027 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, "Playing audio"); | 3026 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, "Playing audio"); |
| 3028 } | 3027 } |
| 3029 | 3028 |
| 3030 if (blocker) { | 3029 if (blocker) { |
| 3031 power_save_blockers_[render_frame_message_source_][player_cookie] = | 3030 uintptr_t key = reinterpret_cast<uintptr_t>(render_frame_message_source_); |
| 3032 blocker.release(); | 3031 if (!power_save_blockers_.contains(key)) { |
| 3032 power_save_blockers_.add(key, |
| 3033 make_scoped_ptr(new PowerSaveBlockerMapEntry)); |
| 3034 } |
| 3035 PowerSaveBlockerMapEntry* map_entry = |
| 3036 power_save_blockers_.get(key); |
| 3037 map_entry->set(player_cookie, blocker.Pass()); |
| 3033 } | 3038 } |
| 3034 #endif // !defined(OS_CHROMEOS) | 3039 #endif // !defined(OS_CHROMEOS) |
| 3035 } | 3040 } |
| 3036 | 3041 |
| 3037 void WebContentsImpl::OnMediaPausedNotification(int64 player_cookie) { | 3042 void WebContentsImpl::OnMediaPausedNotification(int64 player_cookie) { |
| 3038 // Chrome OS does its own detection of audio and video. | |
| 3039 #if !defined(OS_CHROMEOS) | 3043 #if !defined(OS_CHROMEOS) |
| 3040 delete power_save_blockers_[render_frame_message_source_][player_cookie]; | 3044 uintptr_t key = reinterpret_cast<uintptr_t>(render_frame_message_source_); |
| 3041 power_save_blockers_[render_frame_message_source_].erase(player_cookie); | 3045 PowerSaveBlockerMapEntry* map_entry = power_save_blockers_.get(key); |
| 3046 if (map_entry) |
| 3047 map_entry->erase(player_cookie); |
| 3042 #endif // !defined(OS_CHROMEOS) | 3048 #endif // !defined(OS_CHROMEOS) |
| 3043 } | 3049 } |
| 3044 | 3050 |
| 3045 void WebContentsImpl::OnFirstVisuallyNonEmptyPaint() { | 3051 void WebContentsImpl::OnFirstVisuallyNonEmptyPaint() { |
| 3046 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 3052 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
| 3047 DidFirstVisuallyNonEmptyPaint()); | 3053 DidFirstVisuallyNonEmptyPaint()); |
| 3048 } | 3054 } |
| 3049 | 3055 |
| 3050 void WebContentsImpl::DidChangeVisibleSSLState() { | 3056 void WebContentsImpl::DidChangeVisibleSSLState() { |
| 3051 if (delegate_) | 3057 if (delegate_) |
| (...skipping 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4202 CHECK(!browser_plugin_guest_); | 4208 CHECK(!browser_plugin_guest_); |
| 4203 browser_plugin_guest_.reset(guest); | 4209 browser_plugin_guest_.reset(guest); |
| 4204 } | 4210 } |
| 4205 | 4211 |
| 4206 BrowserPluginEmbedder* WebContentsImpl::GetBrowserPluginEmbedder() const { | 4212 BrowserPluginEmbedder* WebContentsImpl::GetBrowserPluginEmbedder() const { |
| 4207 return browser_plugin_embedder_.get(); | 4213 return browser_plugin_embedder_.get(); |
| 4208 } | 4214 } |
| 4209 | 4215 |
| 4210 void WebContentsImpl::ClearPowerSaveBlockers( | 4216 void WebContentsImpl::ClearPowerSaveBlockers( |
| 4211 RenderFrameHost* render_frame_host) { | 4217 RenderFrameHost* render_frame_host) { |
| 4212 STLDeleteValues(&power_save_blockers_[render_frame_host]); | 4218 #if !defined(OS_CHROMEOS) |
| 4213 power_save_blockers_.erase(render_frame_host); | 4219 uintptr_t key = reinterpret_cast<uintptr_t>(render_frame_host); |
| 4220 scoped_ptr<PowerSaveBlockerMapEntry> map_entry = |
| 4221 power_save_blockers_.take_and_erase(key); |
| 4222 if (map_entry) |
| 4223 map_entry->clear(); |
| 4224 #endif |
| 4214 } | 4225 } |
| 4215 | 4226 |
| 4216 void WebContentsImpl::ClearAllPowerSaveBlockers() { | 4227 void WebContentsImpl::ClearAllPowerSaveBlockers() { |
| 4217 for (PowerSaveBlockerMap::iterator i(power_save_blockers_.begin()); | 4228 #if !defined(OS_CHROMEOS) |
| 4218 i != power_save_blockers_.end(); ++i) | |
| 4219 STLDeleteValues(&power_save_blockers_[i->first]); | |
| 4220 power_save_blockers_.clear(); | 4229 power_save_blockers_.clear(); |
| 4230 #endif |
| 4221 } | 4231 } |
| 4222 | 4232 |
| 4223 gfx::Size WebContentsImpl::GetSizeForNewRenderView() { | 4233 gfx::Size WebContentsImpl::GetSizeForNewRenderView() { |
| 4224 gfx::Size size; | 4234 gfx::Size size; |
| 4225 if (delegate_) | 4235 if (delegate_) |
| 4226 size = delegate_->GetSizeForNewRenderView(this); | 4236 size = delegate_->GetSizeForNewRenderView(this); |
| 4227 if (size.IsEmpty()) | 4237 if (size.IsEmpty()) |
| 4228 size = GetContainerBounds().size(); | 4238 size = GetContainerBounds().size(); |
| 4229 return size; | 4239 return size; |
| 4230 } | 4240 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4241 if (new_size != old_size) | 4251 if (new_size != old_size) |
| 4242 delegate_->UpdatePreferredSize(this, new_size); | 4252 delegate_->UpdatePreferredSize(this, new_size); |
| 4243 } | 4253 } |
| 4244 | 4254 |
| 4245 void WebContentsImpl::ResumeResponseDeferredAtStart() { | 4255 void WebContentsImpl::ResumeResponseDeferredAtStart() { |
| 4246 FrameTreeNode* node = frame_tree_.root(); | 4256 FrameTreeNode* node = frame_tree_.root(); |
| 4247 node->render_manager()->ResumeResponseDeferredAtStart(); | 4257 node->render_manager()->ResumeResponseDeferredAtStart(); |
| 4248 } | 4258 } |
| 4249 | 4259 |
| 4250 } // namespace content | 4260 } // namespace content |
| OLD | NEW |