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 |