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

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 10413015: Upstream implementation for embedded video for WebMediaPlayerAndroid (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: refactored the code to remove SetVideoSurface() call Created 8 years, 7 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 | Annotate | Revision Log
OLDNEW
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/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 #include "webkit/gpu/webgraphicscontext3d_in_process_impl.h" 176 #include "webkit/gpu/webgraphicscontext3d_in_process_impl.h"
177 #include "webkit/media/webmediaplayer_impl.h" 177 #include "webkit/media/webmediaplayer_impl.h"
178 #include "webkit/plugins/npapi/plugin_list.h" 178 #include "webkit/plugins/npapi/plugin_list.h"
179 #include "webkit/plugins/npapi/webplugin_delegate.h" 179 #include "webkit/plugins/npapi/webplugin_delegate.h"
180 #include "webkit/plugins/npapi/webplugin_delegate_impl.h" 180 #include "webkit/plugins/npapi/webplugin_delegate_impl.h"
181 #include "webkit/plugins/npapi/webplugin_impl.h" 181 #include "webkit/plugins/npapi/webplugin_impl.h"
182 #include "webkit/plugins/ppapi/ppapi_webplugin_impl.h" 182 #include "webkit/plugins/ppapi/ppapi_webplugin_impl.h"
183 183
184 #if defined(OS_ANDROID) 184 #if defined(OS_ANDROID)
185 #include "webkit/media/android/webmediaplayer_android.h" 185 #include "webkit/media/android/webmediaplayer_android.h"
186 #include "webkit/media/android/webmediaplayer_manager_android.h"
186 #elif defined(OS_WIN) 187 #elif defined(OS_WIN)
187 // TODO(port): these files are currently Windows only because they concern: 188 // TODO(port): these files are currently Windows only because they concern:
188 // * theming 189 // * theming
189 #include "ui/base/native_theme/native_theme_win.h" 190 #include "ui/base/native_theme/native_theme_win.h"
190 #elif defined(USE_X11) 191 #elif defined(USE_X11)
191 #include "third_party/WebKit/Source/WebKit/chromium/public/linux/WebRenderTheme. h" 192 #include "third_party/WebKit/Source/WebKit/chromium/public/linux/WebRenderTheme. h"
192 #include "ui/base/native_theme/native_theme.h" 193 #include "ui/base/native_theme/native_theme.h"
193 #elif defined(OS_MACOSX) 194 #elif defined(OS_MACOSX)
194 #include "skia/ext/skia_utils_mac.h" 195 #include "skia/ext/skia_utils_mac.h"
195 #endif 196 #endif
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 #if defined(ENABLE_WEBRTC) 559 #if defined(ENABLE_WEBRTC)
559 if (!media_stream_dispatcher_) 560 if (!media_stream_dispatcher_)
560 media_stream_dispatcher_ = new MediaStreamDispatcher(this); 561 media_stream_dispatcher_ = new MediaStreamDispatcher(this);
561 #endif 562 #endif
562 563
563 new MHTMLGenerator(this); 564 new MHTMLGenerator(this);
564 #if defined(OS_MACOSX) 565 #if defined(OS_MACOSX)
565 new TextInputClientObserver(this); 566 new TextInputClientObserver(this);
566 #endif // defined(OS_MACOSX) 567 #endif // defined(OS_MACOSX)
567 568
569 #if defined(OS_ANDROID)
570 media_player_manager_.reset(
571 new webkit_media::WebMediaPlayerManagerAndroid(routing_id_));
572 #endif
573
568 // The next group of objects all implement RenderViewObserver, so are deleted 574 // The next group of objects all implement RenderViewObserver, so are deleted
569 // along with the RenderView automatically. 575 // along with the RenderView automatically.
570 devtools_agent_ = new DevToolsAgent(this); 576 devtools_agent_ = new DevToolsAgent(this);
571 renderer_accessibility_ = new RendererAccessibility(this, accessibility_mode); 577 renderer_accessibility_ = new RendererAccessibility(this, accessibility_mode);
572 mouse_lock_dispatcher_ = new MouseLockDispatcher(this); 578 mouse_lock_dispatcher_ = new MouseLockDispatcher(this);
573 intents_host_ = new WebIntentsHost(this); 579 intents_host_ = new WebIntentsHost(this);
574 580
575 new IdleUserDetector(this); 581 new IdleUserDetector(this);
576 582
577 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 583 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
(...skipping 1622 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 routing_id_); 2206 routing_id_);
2201 } 2207 }
2202 } 2208 }
2203 2209
2204 WebMediaPlayer* RenderViewImpl::createMediaPlayer( 2210 WebMediaPlayer* RenderViewImpl::createMediaPlayer(
2205 WebFrame* frame, WebMediaPlayerClient* client) { 2211 WebFrame* frame, WebMediaPlayerClient* client) {
2206 FOR_EACH_OBSERVER( 2212 FOR_EACH_OBSERVER(
2207 RenderViewObserver, observers_, WillCreateMediaPlayer(frame, client)); 2213 RenderViewObserver, observers_, WillCreateMediaPlayer(frame, client));
2208 2214
2209 #if defined(OS_ANDROID) 2215 #if defined(OS_ANDROID)
2216 // TODO(qinmin): upstream the implementation of StreamTextureFactoryImpl
2217 // to replace the NULL param here.
2210 return new webkit_media::WebMediaPlayerAndroid( 2218 return new webkit_media::WebMediaPlayerAndroid(
2211 client, cookieJar(frame)); 2219 client, cookieJar(frame), media_player_manager_.get(), NULL);
2212 #endif 2220 #endif
2213 2221
2214 media::MessageLoopFactory* message_loop_factory = 2222 media::MessageLoopFactory* message_loop_factory =
2215 new media::MessageLoopFactory(); 2223 new media::MessageLoopFactory();
2216 media::FilterCollection* collection = new media::FilterCollection(); 2224 media::FilterCollection* collection = new media::FilterCollection();
2217 RenderMediaLog* render_media_log = new RenderMediaLog(); 2225 RenderMediaLog* render_media_log = new RenderMediaLog();
2218 2226
2219 RenderAudioSourceProvider* audio_source_provider = NULL; 2227 RenderAudioSourceProvider* audio_source_provider = NULL;
2220 2228
2221 // Add in any custom filter factories first. 2229 // Add in any custom filter factories first.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2306 GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))), 2314 GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))),
2307 GetReferrerPolicyFromRequest(frame, request)); 2315 GetReferrerPolicyFromRequest(frame, request));
2308 if (policy == WebKit::WebNavigationPolicyDownload) { 2316 if (policy == WebKit::WebNavigationPolicyDownload) {
2309 Send(new ViewHostMsg_DownloadUrl(routing_id_, request.url(), referrer, 2317 Send(new ViewHostMsg_DownloadUrl(routing_id_, request.url(), referrer,
2310 suggested_name)); 2318 suggested_name));
2311 } else { 2319 } else {
2312 OpenURL(frame, request.url(), referrer, policy); 2320 OpenURL(frame, request.url(), referrer, policy);
2313 } 2321 }
2314 } 2322 }
2315 2323
2324 #if defined(OS_ANDROID)
2325 webkit_media::WebMediaPlayerManagerAndroid*
2326 RenderViewImpl::GetWebMediaPlayerManager() {
2327 return media_player_manager_.get();
2328 }
2329 #endif
2330
2316 WebNavigationPolicy RenderViewImpl::decidePolicyForNavigation( 2331 WebNavigationPolicy RenderViewImpl::decidePolicyForNavigation(
2317 WebFrame* frame, const WebURLRequest& request, WebNavigationType type, 2332 WebFrame* frame, const WebURLRequest& request, WebNavigationType type,
2318 const WebNode&, WebNavigationPolicy default_policy, bool is_redirect) { 2333 const WebNode&, WebNavigationPolicy default_policy, bool is_redirect) {
2319 Referrer referrer( 2334 Referrer referrer(
2320 GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))), 2335 GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))),
2321 GetReferrerPolicyFromRequest(frame, request)); 2336 GetReferrerPolicyFromRequest(frame, request));
2322 2337
2323 if (is_swapped_out_) { 2338 if (is_swapped_out_) {
2324 if (request.url() != GURL(content::kSwappedOutURL)) { 2339 if (request.url() != GURL(content::kSwappedOutURL)) {
2325 // Targeted links may try to navigate a swapped out frame. Allow the 2340 // Targeted links may try to navigate a swapped out frame. Allow the
(...skipping 2564 matching lines...) Expand 10 before | Expand all | Expand 10 after
4890 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleMouseEvent(event)); 4905 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleMouseEvent(event));
4891 } 4906 }
4892 4907
4893 void RenderViewImpl::DidHandleTouchEvent(const WebTouchEvent& event) { 4908 void RenderViewImpl::DidHandleTouchEvent(const WebTouchEvent& event) {
4894 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleTouchEvent(event)); 4909 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleTouchEvent(event));
4895 } 4910 }
4896 4911
4897 void RenderViewImpl::OnWasHidden() { 4912 void RenderViewImpl::OnWasHidden() {
4898 RenderWidget::OnWasHidden(); 4913 RenderWidget::OnWasHidden();
4899 4914
4915 #if defined(OS_ANDROID)
4916 // Inform WebMediaPlayerManagerAndroid to release all media player resources.
4917 media_player_manager_->ReleaseMediaResources();
4918 #endif
4919
4900 if (webview()) { 4920 if (webview()) {
4901 webview()->settings()->setMinimumTimerInterval( 4921 webview()->settings()->setMinimumTimerInterval(
4902 webkit_glue::kBackgroundTabTimerInterval); 4922 webkit_glue::kBackgroundTabTimerInterval);
4903 webview()->setVisibilityState(visibilityState(), false); 4923 webview()->setVisibilityState(visibilityState(), false);
4904 } 4924 }
4905 4925
4906 // Inform PPAPI plugins that their page is no longer visible. 4926 // Inform PPAPI plugins that their page is no longer visible.
4907 pepper_delegate_.PageVisibilityChanged(false); 4927 pepper_delegate_.PageVisibilityChanged(false);
4908 4928
4909 #if defined(OS_MACOSX) 4929 #if defined(OS_MACOSX)
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
5390 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { 5410 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const {
5391 return !!RenderThreadImpl::current()->compositor_thread(); 5411 return !!RenderThreadImpl::current()->compositor_thread();
5392 } 5412 }
5393 5413
5394 void RenderViewImpl::OnJavaBridgeInit() { 5414 void RenderViewImpl::OnJavaBridgeInit() {
5395 DCHECK(!java_bridge_dispatcher_); 5415 DCHECK(!java_bridge_dispatcher_);
5396 #if defined(ENABLE_JAVA_BRIDGE) 5416 #if defined(ENABLE_JAVA_BRIDGE)
5397 java_bridge_dispatcher_ = new JavaBridgeDispatcher(this); 5417 java_bridge_dispatcher_ = new JavaBridgeDispatcher(this);
5398 #endif 5418 #endif
5399 } 5419 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698