diff options
author | ycheo@chromium.org <ycheo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-17 06:52:19 +0000 |
---|---|---|
committer | ycheo@chromium.org <ycheo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-17 06:52:19 +0000 |
commit | 693f63ce16212bceba55cabe7730229f5c8282af (patch) | |
tree | 5f61e816ac3f1f2cbd4003637b585161076cfea8 | |
parent | 8d5ded694b0f65e5d47a16967709e1ab6aab42f5 (diff) | |
download | chromium_src-693f63ce16212bceba55cabe7730229f5c8282af.zip chromium_src-693f63ce16212bceba55cabe7730229f5c8282af.tar.gz chromium_src-693f63ce16212bceba55cabe7730229f5c8282af.tar.bz2 |
Remove Chrome for TV code.
BUG=334126
Review URL: https://codereview.chromium.org/136343002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245449 0039d316-1c4b-4281-b951-d872f2087c98
45 files changed, 25 insertions, 1535 deletions
diff --git a/base/android/base_jni_registrar.cc b/base/android/base_jni_registrar.cc index 9a87a25..c474375 100644 --- a/base/android/base_jni_registrar.cc +++ b/base/android/base_jni_registrar.cc @@ -24,10 +24,6 @@ #include "base/message_loop/message_pump_android.h" #include "base/power_monitor/power_monitor_device_source_android.h" -#if defined(GOOGLE_TV) -#include "base/android/context_types.h" -#endif - namespace base { namespace android { @@ -35,9 +31,6 @@ static RegistrationMethod kBaseRegisteredMethods[] = { { "ActivityStatus", base::android::ActivityStatus::RegisterBindings }, { "BuildInfo", base::android::BuildInfo::RegisterBindings }, { "CommandLine", base::android::RegisterCommandLine }, -#if defined(GOOGLE_TV) - { "ContextTypes", base::android::RegisterContextTypes }, -#endif { "ContentUriUtils", base::RegisterContentUriUtils }, { "CpuFeatures", base::android::RegisterCpuFeatures }, { "ImportantFileWriterAndroid", diff --git a/base/android/context_types.cc b/base/android/context_types.cc deleted file mode 100644 index 084b136..0000000 --- a/base/android/context_types.cc +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/android/context_types.h" - -#include "base/android/jni_android.h" -#include "base/android/scoped_java_ref.h" -#include "base/files/file_path.h" -#include "jni/ContextTypes_jni.h" - -namespace base { -namespace android { - -bool IsRunningInWebapp() { - JNIEnv* env = AttachCurrentThread(); - return static_cast<bool>( - Java_ContextTypes_isRunningInWebapp(env, GetApplicationContext())); -} - -bool RegisterContextTypes(JNIEnv* env) { - return RegisterNativesImpl(env); -} - -} // namespace android -} // namespace base diff --git a/base/android/context_types.h b/base/android/context_types.h deleted file mode 100644 index a132167..0000000 --- a/base/android/context_types.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef BASE_ANDROID_CONTEXT_TYPES_H_ -#define BASE_ANDROID_CONTEXT_TYPES_H_ - -#include <jni.h> - -#include "base/base_export.h" - -namespace base { -namespace android { - -BASE_EXPORT bool IsRunningInWebapp(); - -bool RegisterContextTypes(JNIEnv* env); - -} // namespace android -} // namespace base - -#endif // BASE_ANDROID_CONTEXT_TYPES_H_ diff --git a/base/android/java/src/org/chromium/base/ContextTypes.java b/base/android/java/src/org/chromium/base/ContextTypes.java deleted file mode 100644 index ab3750d8..0000000 --- a/base/android/java/src/org/chromium/base/ContextTypes.java +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.base; - -import android.content.Context; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Maintains the {@link Context}-to-"context type" mapping. The context type - * {@code MODE_APP} is chosen for the application context associated with - * the activity running in application mode, while {@code MODE_NORMAL} for main - * Chromium activity. - * - * <p>Used as singleton instance. - */ -public class ContextTypes { - - // Available context types. - public static final int CONTEXT_TYPE_NORMAL = 1; - public static final int CONTEXT_TYPE_WEBAPP = 2; - - private final Map<Context, Integer> mContextMap; - - private ContextTypes() { - mContextMap = new ConcurrentHashMap<Context, Integer>(); - } - - private static class ContextTypesHolder { - private static final ContextTypes INSTANCE = new ContextTypes(); - } - - public static ContextTypes getInstance() { - return ContextTypesHolder.INSTANCE; - } - - /** - * Adds the mapping for the given {@link Context}. - * - * @param context {@link Context} in interest - * @param type the type associated with the context - * @throws IllegalArgumentException if type is not a valid one. - */ - public void put(Context context, int type) throws IllegalArgumentException { - if (type != CONTEXT_TYPE_NORMAL && type != CONTEXT_TYPE_WEBAPP) { - throw new IllegalArgumentException("Wrong context type"); - } - mContextMap.put(context, type); - } - - /** - * Removes the mapping for the given context. - * - * @param context {@link Context} in interest - */ - public void remove(Context context) { - mContextMap.remove(context); - } - - /** - * Returns type of the given context. - * - * @param context {@link Context} in interest - * @return type associated with the context. Returns {@code MODE_NORMAL} by - * default if the mapping for the queried context is not present. - */ - public int getType(Context context) { - Integer contextType = mContextMap.get(context); - return contextType == null ? CONTEXT_TYPE_NORMAL : contextType; - } - - /** - * Returns whether activity is running in web app mode. - * - * @param appContext {@link Context} in interest - * @return {@code true} when activity is running in web app mode. - */ - @CalledByNative - public static boolean isRunningInWebapp(Context appContext) { - return ContextTypes.getInstance().getType(appContext) - == CONTEXT_TYPE_WEBAPP; - } - - /** - * Checks if the mapping exists for the given context. - * - * @param context {@link Context} in interest - * @return {@code true} if the mapping exists; otherwise {@code false} - */ - public boolean contains(Context context) { - return mContextMap.containsKey(context); - } -} diff --git a/base/android/java/src/org/chromium/base/PathUtils.java b/base/android/java/src/org/chromium/base/PathUtils.java index 2c1ed0e..b2c860f 100644 --- a/base/android/java/src/org/chromium/base/PathUtils.java +++ b/base/android/java/src/org/chromium/base/PathUtils.java @@ -8,16 +8,12 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.os.Environment; -import java.io.File; - /** * This class provides the path related methods for the native library. */ public abstract class PathUtils { private static String sDataDirectorySuffix; - private static String sWebappDirectorySuffix; - private static String sWebappCacheDirectory; // Prevent instantiation. private PathUtils() {} @@ -33,17 +29,6 @@ public abstract class PathUtils { } /** - * Sets the directory info used for chrome process running in application mode. - * - * @param webappSuffix The suffix of the directory used for storing webapp-specific profile - * @param cacheDir Cache directory name for web apps. - */ - public static void setWebappDirectoryInfo(String webappSuffix, String cacheDir) { - sWebappDirectorySuffix = webappSuffix; - sWebappCacheDirectory = cacheDir; - } - - /** * @return the private directory that is used to store application data. */ @CalledByNative @@ -70,15 +55,7 @@ public abstract class PathUtils { @SuppressWarnings("unused") @CalledByNative public static String getCacheDirectory(Context appContext) { - if (ContextTypes.getInstance().getType(appContext) == ContextTypes.CONTEXT_TYPE_NORMAL) { - return appContext.getCacheDir().getPath(); - } - if (sWebappDirectorySuffix == null || sWebappCacheDirectory == null) { - throw new IllegalStateException( - "setWebappDirectoryInfo must be called before getCacheDirectory"); - } - return new File(appContext.getDir(sWebappDirectorySuffix, appContext.MODE_PRIVATE), - sWebappCacheDirectory).getPath(); + return appContext.getCacheDir().getPath(); } /** diff --git a/base/android/javatests/src/org/chromium/base/ContextTypesTest.java b/base/android/javatests/src/org/chromium/base/ContextTypesTest.java deleted file mode 100644 index aefa4a6..0000000 --- a/base/android/javatests/src/org/chromium/base/ContextTypesTest.java +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.base; - -import static org.chromium.base.ContextTypes.CONTEXT_TYPE_NORMAL; -import static org.chromium.base.ContextTypes.CONTEXT_TYPE_WEBAPP; - -import android.content.Context; -import android.test.AndroidTestCase; -import android.test.mock.MockContext; -import android.test.suitebuilder.annotation.SmallTest; - -public class ContextTypesTest extends AndroidTestCase { - - @SmallTest - public void testReturnsExpectedType() { - ContextTypes contextTypes = ContextTypes.getInstance(); - Context normal = new MockContext(); - Context webapp = new MockContext(); - contextTypes.put(normal, CONTEXT_TYPE_NORMAL); - contextTypes.put(webapp, CONTEXT_TYPE_WEBAPP); - assertEquals(CONTEXT_TYPE_NORMAL, contextTypes.getType(normal)); - assertEquals(CONTEXT_TYPE_WEBAPP, contextTypes.getType(webapp)); - } - - @SmallTest - public void testAbsentContextReturnsNormalType() { - assertEquals(CONTEXT_TYPE_NORMAL, ContextTypes.getInstance().getType(new MockContext())); - } - - @SmallTest - public void testPutInvalidTypeThrowsException() { - boolean exceptionThrown = false; - try { - ContextTypes.getInstance().put(new MockContext(), -1); - } catch (IllegalArgumentException e) { - exceptionThrown = true; - } - assertTrue(exceptionThrown); - } -} diff --git a/base/base.gyp b/base/base.gyp index 5893754..591920f 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -1262,13 +1262,6 @@ 'android/java/src/org/chromium/base/ThreadUtils.java', 'android/java/src/org/chromium/base/TraceEvent.java', ], - 'conditions': [ - ['google_tv==1', { - 'sources': [ - 'android/java/src/org/chromium/base/ContextTypes.java', - ], - }], - ], 'variables': { 'jni_gen_package': 'base', 'jni_generator_ptr_type': 'long', diff --git a/base/base.gypi b/base/base.gypi index cb7c5c8..13b8260 100644 --- a/base/base.gypi +++ b/base/base.gypi @@ -713,12 +713,6 @@ 'x11/edid_parser_x11.h', ], }], - ['google_tv==1', { - 'sources': [ - 'android/context_types.cc', - 'android/context_types.h', - ], - }], ], 'defines': [ 'BASE_IMPLEMENTATION', diff --git a/build/common.gypi b/build/common.gypi index 98cd460..e7bcf63 100644 --- a/build/common.gypi +++ b/build/common.gypi @@ -148,9 +148,6 @@ # build system. 'android_webview_build%': 0, - # Sets whether chrome is built for google tv device. - 'google_tv%': 0, - # Set ARM architecture version. 'arm_version%': 7, @@ -254,7 +251,6 @@ 'enable_hidpi%': '<(enable_hidpi)', 'enable_touch_ui%': '<(enable_touch_ui)', 'android_webview_build%': '<(android_webview_build)', - 'google_tv%': '<(google_tv)', 'use_goma%': '<(use_goma)', 'gomadir%': '<(gomadir)', 'enable_app_list%': '<(enable_app_list)', @@ -698,7 +694,7 @@ 'enable_plugin_installation%': 1, }], - ['(OS=="android" and google_tv!=1) or OS=="ios" or embedded==1', { + ['OS=="android" or OS=="ios" or embedded==1', { 'enable_plugins%': 0, }, { 'enable_plugins%': 1, @@ -973,7 +969,6 @@ 'android_webview_build%': '<(android_webview_build)', 'gyp_managed_install%': 0, 'create_standalone_apk%': 1, - 'google_tv%': '<(google_tv)', 'enable_app_list%': '<(enable_app_list)', 'use_default_render_theme%': '<(use_default_render_theme)', 'enable_settings_app%': '<(enable_settings_app)', @@ -1621,7 +1616,7 @@ 'use_cups%': 0, }], - ['enable_plugins==1 and (OS=="linux" or OS=="mac" or OS=="win" or google_tv==1)', { + ['enable_plugins==1 and (OS=="linux" or OS=="mac" or OS=="win")', { 'enable_pepper_cdms%': 1, }, { 'enable_pepper_cdms%': 0, @@ -1719,11 +1714,6 @@ ['OS=="android"', { 'grit_defines': ['-t', 'android', '-E', 'ANDROID_JAVA_TAGGED_ONLY=true'], - 'conditions': [ - ['google_tv==1', { - 'grit_defines': ['-D', 'google_tv'], - }], - ], }], ['OS=="mac" or OS=="ios"', { 'grit_defines': ['-D', 'scale_factors=2x'], @@ -2179,12 +2169,6 @@ ['chromeos==1', { 'defines': ['OS_CHROMEOS=1'], }], - ['google_tv==1', { - 'defines': [ - 'GOOGLE_TV=1', - 'VIDEO_HOLE=1', - ], - }], ['use_xi2_mt!=0 and use_x11==1', { 'defines': ['USE_XI2_MT=<(use_xi2_mt)'], }], diff --git a/chrome/browser/android/chrome_startup_flags.cc b/chrome/browser/android/chrome_startup_flags.cc index e6edaa2..4f33191 100644 --- a/chrome/browser/android/chrome_startup_flags.cc +++ b/chrome/browser/android/chrome_startup_flags.cc @@ -45,7 +45,4 @@ void SetChromeSpecificCommandLineFlags() { switches::kPrerenderFromOmniboxSwitchValueEnabled); if (base::android::SysUtils::IsLowEndDevice()) SetCommandLineSwitch(switches::kDisableSyncFavicons); -#if defined(GOOGLE_TV) - SetCommandLineSwitch(switches::kPpapiInProcess); -#endif } diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd index e24bcdb16f..352d0e6 100644 --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd @@ -195,7 +195,7 @@ <include name="IDR_OMNIBOX_HTML" file="resources\omnibox\omnibox.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" /> <include name="IDR_OMNIBOX_CSS" file="resources\omnibox\omnibox.css" type="BINDATA" /> <include name="IDR_OMNIBOX_JS" file="resources\omnibox\omnibox.js" type="BINDATA" /> - <if expr="not is_android or pp_ifdef('google_tv')"> + <if expr="not is_android"> <include name="IDR_PLUGINS_HTML" file="resources\plugins.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" /> <include name="IDR_PLUGINS_JS" file="resources\plugins.js" type="BINDATA" /> </if> @@ -204,9 +204,6 @@ <if expr="pp_ifdef('enable_plugins')"> <include name="IDR_PDF_MANIFEST" file="resources\pdf\manifest.json" type="BINDATA" /> </if> - <if expr="is_android and pp_ifdef('google_tv')"> - <include name="IDR_PLUGIN_DB_JSON" file="resources\plugin_metadata\plugins_tv.json" type="BINDATA" /> - </if> <if expr="is_win"> <include name="IDR_PLUGIN_DB_JSON" file="resources\plugin_metadata\plugins_win.json" type="BINDATA" /> </if> diff --git a/chrome/browser/pepper_broker_infobar_delegate.cc b/chrome/browser/pepper_broker_infobar_delegate.cc index fa1824b..8cb250b 100644 --- a/chrome/browser/pepper_broker_infobar_delegate.cc +++ b/chrome/browser/pepper_broker_infobar_delegate.cc @@ -24,10 +24,6 @@ #include "net/base/net_util.h" #include "ui/base/l10n/l10n_util.h" -#if defined(GOOGLE_TV) -#include "base/android/context_types.h" -#endif - // static void PepperBrokerInfoBarDelegate::Create( @@ -46,29 +42,6 @@ void PepperBrokerInfoBarDelegate::Create( TabSpecificContentSettings* tab_content_settings = TabSpecificContentSettings::FromWebContents(web_contents); -#if defined(GOOGLE_TV) - // On GoogleTV, Netflix crypto/mdx plugin and DRM server adapter plugin can - // only come pre-installed with the OS, so we're willing to auto-grant access - // to them. PluginRootName should be matched with PEPPER_PLUGIN_ROOT - // in PepperPluginManager.java. - const char kPluginRootName[] = "/system/lib/pepperplugin"; - const char kNetflixCryptoPluginFileName[] = "libnrddpicrypto.so"; - const char kNetflixMdxPluginFileName[] = "libnrdmdx.so"; - const char kDrmServerAdapterPluginFileName[] = "libdrmserveradapter.so"; - base::FilePath::StringType plugin_dir_name = plugin_path.DirName().value(); - base::FilePath::StringType plugin_file_name = plugin_path.BaseName().value(); - if (base::android::IsRunningInWebapp() && - plugin_dir_name == FILE_PATH_LITERAL(kPluginRootName) && - (plugin_file_name == FILE_PATH_LITERAL(kNetflixCryptoPluginFileName) || - plugin_file_name == FILE_PATH_LITERAL(kNetflixMdxPluginFileName) || - plugin_file_name == - FILE_PATH_LITERAL(kDrmServerAdapterPluginFileName))) { - tab_content_settings->SetPepperBrokerAllowed(true); - callback.Run(true); - return; - } -#endif - HostContentSettingsMap* content_settings = profile->GetHostContentSettingsMap(); ContentSetting setting = diff --git a/chrome/browser/resources/plugin_metadata/plugins_tv.json b/chrome/browser/resources/plugin_metadata/plugins_tv.json deleted file mode 100644 index 23054f4..0000000 --- a/chrome/browser/resources/plugin_metadata/plugins_tv.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "netflix": { - "mime_types": [ - ], - "versions": [ - { - "version": "0", - "status": "up_to_date", - "comment": "'Netflix' is bundled with GoogleTV, so we don't define a minimum version." - } - ], - "name": "Netflix", - "group_name_matcher": "*Netflix*" - } -} diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi index d2c134b..1d5be6d 100644 --- a/chrome/chrome_renderer.gypi +++ b/chrome/chrome_renderer.gypi @@ -438,13 +438,6 @@ 'renderer/extensions/tabs_custom_bindings.cc', 'renderer/extensions/tts_custom_bindings.cc', ], - 'conditions' : [ - ['google_tv==1', { - 'sources!' : [ - 'renderer/media/chrome_key_systems.cc', - ] - }], - ], }], ['OS=="win"', { 'include_dirs': [ diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc index 77ce9d1..04cde98 100644 --- a/content/browser/media/android/browser_media_player_manager.cc +++ b/content/browser/media/android/browser_media_player_manager.cc @@ -64,7 +64,6 @@ ContentViewCoreImpl* BrowserMediaPlayerManager::GetContentViewCore() const { return ContentViewCoreImpl::FromWebContents(web_contents()); } -#if !defined(GOOGLE_TV) // static MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( MediaPlayerHostMsg_Initialize_Type type, @@ -112,7 +111,6 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer( NOTREACHED(); return NULL; } -#endif BrowserMediaPlayerManager::BrowserMediaPlayerManager( RenderViewHost* render_view_host) diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index cf63b96..3296794 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc @@ -1138,9 +1138,6 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kEnableWebRtcHWVp8Encoding, switches::kEnableWebRtcTcpServerSocket, #endif -#if defined(GOOGLE_TV) - switches::kUseExternalVideoSurfaceThresholdInPixels, -#endif #if defined(OS_ANDROID) switches::kDisableGestureRequirementForMediaPlayback, switches::kDisableLowEndDeviceMode, diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 5352e56..b907e90 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc @@ -19,14 +19,12 @@ namespace content { static void SetRuntimeFeatureDefaultsForPlatform() { #if defined(OS_ANDROID) -#if !defined(GOOGLE_TV) // MSE/EME implementation needs Android MediaCodec API. if (!media::MediaCodecBridge::IsAvailable()) { WebRuntimeFeatures::enableWebKitMediaSource(false); WebRuntimeFeatures::enableMediaSource(false); WebRuntimeFeatures::enablePrefixedEncryptedMedia(false); } -#endif // !defined(GOOGLE_TV) // WebAudio is enabled by default only on ARM and only when the // MediaCodec API is available. WebRuntimeFeatures::enableWebAudio( diff --git a/content/common/media/media_player_messages_android.h b/content/common/media/media_player_messages_android.h index 8d56526..145fc0b 100644 --- a/content/common/media/media_player_messages_android.h +++ b/content/common/media/media_player_messages_android.h @@ -42,9 +42,6 @@ IPC_STRUCT_TRAITS_BEGIN(media::DemuxerConfigs) IPC_STRUCT_TRAITS_MEMBER(video_extra_data) IPC_STRUCT_TRAITS_MEMBER(duration_ms) -#if defined(GOOGLE_TV) - IPC_STRUCT_TRAITS_MEMBER(key_system) -#endif // defined(GOOGLE_TV) IPC_STRUCT_TRAITS_END() IPC_STRUCT_TRAITS_BEGIN(media::DemuxerData) diff --git a/content/common/media/media_player_messages_enums_android.h b/content/common/media/media_player_messages_enums_android.h index fe45950..97818ff 100644 --- a/content/common/media/media_player_messages_enums_android.h +++ b/content/common/media/media_player_messages_enums_android.h @@ -9,9 +9,6 @@ enum MediaPlayerHostMsg_Initialize_Type { MEDIA_PLAYER_TYPE_URL, MEDIA_PLAYER_TYPE_MEDIA_SOURCE, -#if defined(GOOGLE_TV) - MEDIA_PLAYER_TYPE_MEDIA_STREAM, -#endif }; #endif // CONTENT_COMMON_MEDIA_MEDIA_PLAYER_MESSAGES_ENUMS_ANDROID_H_ diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi index 260ad05..c98e6ed 100644 --- a/content/content_renderer.gypi +++ b/content/content_renderer.gypi @@ -705,14 +705,6 @@ 'renderer/media/webrtc_logging.h', ], }], - ['enable_webrtc==1 and google_tv==1', { - 'sources': [ - 'renderer/media/rtc_video_decoder_bridge_tv.cc', - 'renderer/media/rtc_video_decoder_bridge_tv.h', - 'renderer/media/rtc_video_decoder_factory_tv.cc', - 'renderer/media/rtc_video_decoder_factory_tv.h', - ], - }], ['enable_plugins==1', { 'dependencies': [ '../ppapi/ppapi_internal.gyp:ppapi_host', diff --git a/content/content_tests.gypi b/content/content_tests.gypi index b02f7a7..6c4cf22 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi @@ -821,11 +821,6 @@ 'browser/renderer_host/input/tap_suppression_controller_unittest.cc', ], }], - ['enable_webrtc==1 and google_tv==1', { - 'sources': [ - 'renderer/media/rtc_video_decoder_factory_tv_unittest.cc', - ], - }], ['use_dbus==0', { 'sources!': [ 'browser/geolocation/wifi_data_provider_linux_unittest.cc', diff --git a/content/public/android/java/src/org/chromium/content/browser/DeviceUtils.java b/content/public/android/java/src/org/chromium/content/browser/DeviceUtils.java index 17c8235..f472dc9 100644 --- a/content/public/android/java/src/org/chromium/content/browser/DeviceUtils.java +++ b/content/public/android/java/src/org/chromium/content/browser/DeviceUtils.java @@ -5,7 +5,6 @@ package org.chromium.content.browser; import android.content.Context; -import android.content.pm.PackageManager; import org.chromium.base.CommandLine; import org.chromium.content.common.ContentSwitches; @@ -20,7 +19,6 @@ public class DeviceUtils { */ private static final int MINIMUM_TABLET_WIDTH_DP = 600; - private static Boolean sIsTv = null; private static Boolean sIsTablet = null; /** @@ -29,10 +27,6 @@ public class DeviceUtils { */ public static boolean isTablet(Context context) { if (sIsTablet == null) { - if (isTv(context)) { - sIsTablet = true; - return sIsTablet; - } int minimumScreenWidthDp = context.getResources().getConfiguration(). smallestScreenWidthDp; sIsTablet = minimumScreenWidthDp >= MINIMUM_TABLET_WIDTH_DP; @@ -41,26 +35,6 @@ public class DeviceUtils { } /** - * Checks if the device should be treated as TV. Note that this should be - * invoked before {@link #isTablet(Context)} to get the correct result - * since they are not orthogonal. - * - * @param context Android context - * @return {@code true} if the device should be treated as TV. - */ - public static boolean isTv(Context context) { - if (sIsTv == null) { - PackageManager manager = context.getPackageManager(); - if (manager != null) { - sIsTv = manager.hasSystemFeature(PackageManager.FEATURE_TELEVISION); - return sIsTv; - } - sIsTv = false; - } - return sIsTv; - } - - /** * Appends the switch specifying which user agent should be used for this device. * @param context The context for the caller activity. */ diff --git a/content/public/android/java/src/org/chromium/content/browser/PepperPluginManager.java b/content/public/android/java/src/org/chromium/content/browser/PepperPluginManager.java index 6d9271e..4db35fe 100644 --- a/content/public/android/java/src/org/chromium/content/browser/PepperPluginManager.java +++ b/content/public/android/java/src/org/chromium/content/browser/PepperPluginManager.java @@ -15,8 +15,6 @@ import android.content.pm.ServiceInfo; import android.os.Bundle; import android.util.Log; -import org.chromium.base.ContextTypes; - import java.util.List; /** @@ -90,11 +88,6 @@ public class PepperPluginManager { * @return Description string for plugins */ public static String getPlugins(final Context context) { - if (DeviceUtils.isTv(context) && - !ContextTypes.isRunningInWebapp(context)) { - // Chrome-for-tv enables plugins only on webapp mode. - return null; - } StringBuffer ret = new StringBuffer(); PackageManager pm = context.getPackageManager(); List<ResolveInfo> plugins = pm.queryIntentServices( diff --git a/content/renderer/media/android/media_source_delegate.cc b/content/renderer/media/android/media_source_delegate.cc index bd4cf1a..0476633 100644 --- a/content/renderer/media/android/media_source_delegate.cc +++ b/content/renderer/media/android/media_source_delegate.cc @@ -58,7 +58,6 @@ MediaSourceDelegate::MediaSourceDelegate( demuxer_client_(demuxer_client), demuxer_client_id_(demuxer_client_id), media_log_(media_log), - demuxer_(NULL), is_demuxer_ready_(false), audio_stream_(NULL), video_stream_(NULL), @@ -66,9 +65,6 @@ MediaSourceDelegate::MediaSourceDelegate( doing_browser_seek_(false), browser_seek_time_(media::kNoTimestamp()), expecting_regular_seek_(false), -#if defined(GOOGLE_TV) - key_added_(false), -#endif access_unit_size_(0) { DCHECK(main_loop_->BelongsToCurrentThread()); } @@ -77,7 +73,6 @@ MediaSourceDelegate::~MediaSourceDelegate() { DCHECK(main_loop_->BelongsToCurrentThread()); DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; DCHECK(!chunk_demuxer_); - DCHECK(!demuxer_); DCHECK(!demuxer_client_); DCHECK(!audio_decrypting_demuxer_stream_); DCHECK(!video_decrypting_demuxer_stream_); @@ -89,7 +84,7 @@ void MediaSourceDelegate::Destroy() { DCHECK(main_loop_->BelongsToCurrentThread()); DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; - if (!demuxer_) { + if (!chunk_demuxer_) { DCHECK(!demuxer_client_); delete this; return; @@ -102,8 +97,7 @@ void MediaSourceDelegate::Destroy() { main_weak_factory_.InvalidateWeakPtrs(); DCHECK(!main_weak_factory_.HasWeakPtrs()); - if (chunk_demuxer_) - chunk_demuxer_->Shutdown(); + chunk_demuxer_->Shutdown(); // |this| will be transferred to the callback StopDemuxer() and // OnDemuxerStopDone(). They own |this| and OnDemuxerStopDone() will delete @@ -115,7 +109,7 @@ void MediaSourceDelegate::Destroy() { void MediaSourceDelegate::StopDemuxer() { DCHECK(media_loop_->BelongsToCurrentThread()); - DCHECK(demuxer_); + DCHECK(chunk_demuxer_); demuxer_client_->RemoveDelegate(demuxer_client_id_); demuxer_client_ = NULL; @@ -132,8 +126,8 @@ void MediaSourceDelegate::StopDemuxer() { // The callback OnDemuxerStopDone() owns |this| and will delete it when // called. Hence using base::Unretained(this) is safe here. - demuxer_->Stop(base::Bind(&MediaSourceDelegate::OnDemuxerStopDone, - base::Unretained(this))); + chunk_demuxer_->Stop(base::Bind(&MediaSourceDelegate::OnDemuxerStopDone, + base::Unretained(this))); } void MediaSourceDelegate::InitializeMediaSource( @@ -157,7 +151,6 @@ void MediaSourceDelegate::InitializeMediaSource( media::BindToCurrentLoop(base::Bind( &MediaSourceDelegate::OnNeedKey, main_weak_this_)), base::Bind(&LogMediaSourceError, media_log_))); - demuxer_ = chunk_demuxer_.get(); // |this| will be retained until StopDemuxer() is posted, so Unretained() is // safe here. @@ -169,31 +162,12 @@ void MediaSourceDelegate::InitializeMediaSource( void MediaSourceDelegate::InitializeDemuxer() { DCHECK(media_loop_->BelongsToCurrentThread()); demuxer_client_->AddDelegate(demuxer_client_id_, this); - demuxer_->Initialize(this, base::Bind(&MediaSourceDelegate::OnDemuxerInitDone, + chunk_demuxer_->Initialize(this, + base::Bind(&MediaSourceDelegate::OnDemuxerInitDone, media_weak_factory_.GetWeakPtr()), - false); + false); } -#if defined(GOOGLE_TV) -void MediaSourceDelegate::InitializeMediaStream( - media::Demuxer* demuxer, - const UpdateNetworkStateCB& update_network_state_cb) { - DCHECK(main_loop_->BelongsToCurrentThread()); - DCHECK(demuxer); - demuxer_ = demuxer; - update_network_state_cb_ = media::BindToCurrentLoop(update_network_state_cb); - // When playing Media Stream, don't wait to accumulate multiple packets per - // IPC communication. - access_unit_size_ = 1; - - // |this| will be retained until StopDemuxer() is posted, so Unretained() is - // safe here. - media_loop_->PostTask(FROM_HERE, - base::Bind(&MediaSourceDelegate::InitializeDemuxer, - base::Unretained(this))); -} -#endif - const blink::WebTimeRanges& MediaSourceDelegate::Buffered() { buffered_web_time_ranges_ = ConvertToWebTimeRanges(buffered_time_ranges_); @@ -313,7 +287,7 @@ void MediaSourceDelegate::Seek( void MediaSourceDelegate::SeekInternal(const base::TimeDelta& seek_time) { DCHECK(media_loop_->BelongsToCurrentThread()); DCHECK(IsSeeking()); - demuxer_->Seek(seek_time, base::Bind( + chunk_demuxer_->Seek(seek_time, base::Bind( &MediaSourceDelegate::OnDemuxerSeekDone, media_weak_factory_.GetWeakPtr())); } @@ -388,7 +362,7 @@ void MediaSourceDelegate::OnBufferReady( << ((!buffer || buffer->end_of_stream()) ? -1 : buffer->timestamp().InMilliseconds()) << ") : " << demuxer_client_id_; - DCHECK(demuxer_); + DCHECK(chunk_demuxer_); // No new OnReadFromDemuxer() will be called during seeking. So this callback // must be from previous OnReadFromDemuxer() call and should be ignored. @@ -451,7 +425,6 @@ void MediaSourceDelegate::OnBufferReady( data->access_units[index].data.assign( buffer->data(), buffer->data() + buffer->data_size()); -#if !defined(GOOGLE_TV) // Vorbis needs 4 extra bytes padding on Android. Check // NuMediaExtractor.cpp in Android source code. if (is_audio && media::kCodecVorbis == @@ -460,7 +433,6 @@ void MediaSourceDelegate::OnBufferReady( data->access_units[index].data.end(), kVorbisPadding, kVorbisPadding + 4); } -#endif if (buffer->decrypt_config()) { data->access_units[index].key_id = std::vector<char>( buffer->decrypt_config()->key_id().begin(), @@ -508,15 +480,15 @@ void MediaSourceDelegate::RemoveTextStream( void MediaSourceDelegate::OnDemuxerInitDone(media::PipelineStatus status) { DCHECK(media_loop_->BelongsToCurrentThread()); DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_; - DCHECK(demuxer_); + DCHECK(chunk_demuxer_); if (status != media::PIPELINE_OK) { OnDemuxerError(status); return; } - audio_stream_ = demuxer_->GetStream(DemuxerStream::AUDIO); - video_stream_ = demuxer_->GetStream(DemuxerStream::VIDEO); + audio_stream_ = chunk_demuxer_->GetStream(DemuxerStream::AUDIO); + video_stream_ = chunk_demuxer_->GetStream(DemuxerStream::VIDEO); if (audio_stream_ && audio_stream_->audio_decoder_config().is_encrypted() && !set_decryptor_ready_cb_.is_null()) { @@ -568,7 +540,7 @@ void MediaSourceDelegate::OnAudioDecryptingDemuxerStreamInitDone( media::PipelineStatus status) { DCHECK(media_loop_->BelongsToCurrentThread()); DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_; - DCHECK(demuxer_); + DCHECK(chunk_demuxer_); if (status != media::PIPELINE_OK) audio_decrypting_demuxer_stream_.reset(); @@ -591,7 +563,7 @@ void MediaSourceDelegate::OnVideoDecryptingDemuxerStreamInitDone( media::PipelineStatus status) { DCHECK(media_loop_->BelongsToCurrentThread()); DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_; - DCHECK(demuxer_); + DCHECK(chunk_demuxer_); if (status != media::PIPELINE_OK) video_decrypting_demuxer_stream_.reset(); @@ -666,7 +638,6 @@ void MediaSourceDelegate::DeleteSelf() { DCHECK(main_loop_->BelongsToCurrentThread()); DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; chunk_demuxer_.reset(); - demuxer_ = NULL; delete this; } @@ -677,42 +648,9 @@ void MediaSourceDelegate::OnMediaConfigRequest() { NotifyDemuxerReady(); } -#if defined(GOOGLE_TV) -// TODO(kjyoun): Enhance logic to detect when to call NotifyDemuxerReady() -// For now, we call it when the first key is added. See http://crbug.com/255781 -void MediaSourceDelegate::NotifyKeyAdded(const std::string& key_system) { - if (!media_loop_->BelongsToCurrentThread()) { - media_loop_->PostTask(FROM_HERE, - base::Bind(&MediaSourceDelegate::NotifyKeyAdded, - base::Unretained(this), key_system)); - return; - } - DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; - if (key_added_) - return; - key_added_ = true; - key_system_ = key_system; - if (!CanNotifyDemuxerReady()) - return; - if (HasEncryptedStream()) - NotifyDemuxerReady(); -} -#endif // defined(GOOGLE_TV) - bool MediaSourceDelegate::CanNotifyDemuxerReady() { DCHECK(media_loop_->BelongsToCurrentThread()); - // This can happen when a key is added before the demuxer is initialized. - // See NotifyKeyAdded(). - // TODO(kjyoun): Remove NotifyDemxuerReady() call from NotifyKeyAdded() so - // that we can remove all is_demuxer_ready_/key_added_/key_system_ madness. - // See http://crbug.com/255781 - if (!is_demuxer_ready_) - return false; -#if defined(GOOGLE_TV) - if (HasEncryptedStream() && !key_added_) - return false; -#endif // defined(GOOGLE_TV) - return true; + return is_demuxer_ready_; } void MediaSourceDelegate::NotifyDemuxerReady() { @@ -741,10 +679,6 @@ void MediaSourceDelegate::NotifyDemuxerReady() { } configs->duration_ms = GetDurationMs(); -#if defined(GOOGLE_TV) - configs->key_system = HasEncryptedStream() ? key_system_ : ""; -#endif - if (demuxer_client_) demuxer_client_->DemuxerReady(demuxer_client_id_, *configs); } diff --git a/content/renderer/media/android/media_source_delegate.h b/content/renderer/media/android/media_source_delegate.h index e627a1f..c872efb 100644 --- a/content/renderer/media/android/media_source_delegate.h +++ b/content/renderer/media/android/media_source_delegate.h @@ -67,12 +67,6 @@ class MediaSourceDelegate : public media::DemuxerHost { const UpdateNetworkStateCB& update_network_state_cb, const DurationChangeCB& duration_change_cb); -#if defined(GOOGLE_TV) - void InitializeMediaStream( - media::Demuxer* demuxer, - const UpdateNetworkStateCB& update_network_state_cb); -#endif - const blink::WebTimeRanges& Buffered(); size_t DecodedFrameCount() const; size_t DroppedFrameCount() const; @@ -100,8 +94,6 @@ class MediaSourceDelegate : public media::DemuxerHost { // cached data since last keyframe. See http://crbug.com/304234. void Seek(const base::TimeDelta& seek_time, bool is_browser_seek); - void NotifyKeyAdded(const std::string& key_system); - // Called when DemuxerStreamPlayer needs to read data from ChunkDemuxer. void OnReadFromDemuxer(media::DemuxerStream::Type type); @@ -211,7 +203,6 @@ class MediaSourceDelegate : public media::DemuxerHost { DurationChangeCB duration_change_cb_; scoped_ptr<media::ChunkDemuxer> chunk_demuxer_; - media::Demuxer* demuxer_; bool is_demuxer_ready_; media::SetDecryptorReadyCB set_decryptor_ready_cb_; @@ -230,10 +221,6 @@ class MediaSourceDelegate : public media::DemuxerHost { MediaSourceOpenedCB media_source_opened_cb_; media::Demuxer::NeedKeyCB need_key_cb_; - // The currently selected key system. Empty string means that no key system - // has been selected. - blink::WebString current_key_system_; - // Temporary for EME v0.1. In the future the init data type should be passed // through GenerateKeyRequest() directly from WebKit. std::string init_data_type_; @@ -251,11 +238,6 @@ class MediaSourceDelegate : public media::DemuxerHost { base::TimeDelta browser_seek_time_; bool expecting_regular_seek_; -#if defined(GOOGLE_TV) - bool key_added_; - std::string key_system_; -#endif // defined(GOOGLE_TV) - size_t access_unit_size_; DISALLOW_COPY_AND_ASSIGN(MediaSourceDelegate); diff --git a/content/renderer/media/android/renderer_media_player_manager.h b/content/renderer/media/android/renderer_media_player_manager.h index 371ab40..b68f394 100644 --- a/content/renderer/media/android/renderer_media_player_manager.h +++ b/content/renderer/media/android/renderer_media_player_manager.h @@ -17,10 +17,6 @@ #include "media/base/media_keys.h" #include "url/gurl.h" -#if defined(GOOGLE_TV) -#include "ui/gfx/rect_f.h" -#endif - namespace blink { class WebFrame; } diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc index 6cef1cc..33af4ca 100644 --- a/content/renderer/media/android/webmediaplayer_android.cc +++ b/content/renderer/media/android/webmediaplayer_android.cc @@ -41,11 +41,6 @@ #include "ui/gfx/image/image.h" #include "webkit/renderer/compositor_bindings/web_layer_impl.h" -#if defined(GOOGLE_TV) -#include "content/renderer/media/media_stream_audio_renderer.h" -#include "content/renderer/media/media_stream_client.h" -#endif - static const uint32 kGLTextureExternalOES = 0x8D65; using blink::WebMediaPlayer; @@ -111,11 +106,6 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid( stream_texture_factory_(factory), needs_external_surface_(false), video_frame_provider_client_(NULL), -#if defined(GOOGLE_TV) - external_surface_threshold_(-1), - demuxer_(NULL), - media_stream_client_(NULL), -#endif // defined(GOOGLE_TV) pending_playback_(false), player_type_(MEDIA_PLAYER_TYPE_URL), current_time_(0), @@ -131,18 +121,6 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid( player_id_ = manager_->RegisterMediaPlayer(this); -#if defined(GOOGLE_TV) - if (CommandLine::ForCurrentProcess()->HasSwitch( - switches::kUseExternalVideoSurfaceThresholdInPixels)) { - if (!base::StringToInt( - CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - switches::kUseExternalVideoSurfaceThresholdInPixels), - &external_surface_threshold_)) { - external_surface_threshold_ = -1; - } - } -#endif // defined(GOOGLE_TV) - #if defined(VIDEO_HOLE) // Defer stream texture creation until we are sure it's necessary. needs_establish_peer_ = false; @@ -192,24 +170,6 @@ WebMediaPlayerAndroid::~WebMediaPlayerAndroid() { if (player_type_ == MEDIA_PLAYER_TYPE_MEDIA_SOURCE && delegate_) delegate_->PlayerGone(this); - -#if defined(GOOGLE_TV) - if (audio_renderer_) { - if (audio_renderer_->IsLocalRenderer()) { - audio_renderer_->Stop(); - } else if (!paused()) { - // The |audio_renderer_| can be shared by multiple remote streams, and - // it will be stopped when WebRtcAudioDeviceImpl goes away. So we simply - // pause the |audio_renderer_| here to avoid re-creating the - // |audio_renderer_|. - audio_renderer_->Pause(); - } - } - if (demuxer_ && !destroy_demuxer_cb_.is_null()) { - media_source_delegate_.reset(); - destroy_demuxer_cb_.Run(); - } -#endif } void WebMediaPlayerAndroid::load(LoadType load_type, @@ -225,14 +185,9 @@ void WebMediaPlayerAndroid::load(LoadType load_type, break; case LoadTypeMediaStream: -#if defined(GOOGLE_TV) - player_type_ = MEDIA_PLAYER_TYPE_MEDIA_STREAM; - break; -#else CHECK(false) << "WebMediaPlayerAndroid doesn't support MediaStream on " "this platform"; return; -#endif } has_media_metadata_ = false; @@ -267,19 +222,6 @@ void WebMediaPlayerAndroid::load(LoadType load_type, base::Bind(&WebMediaPlayerAndroid::OnDurationChanged, weak_factory_.GetWeakPtr())); } -#if defined(GOOGLE_TV) - // TODO(xhwang): Pass set_decryptor_ready_cb in InitializeMediaStream() to - // enable ClearKey support for Google TV. - if (player_type_ == MEDIA_PLAYER_TYPE_MEDIA_STREAM) { - media_source_delegate_->InitializeMediaStream( - demuxer_, - base::Bind(&WebMediaPlayerAndroid::UpdateNetworkState, - weak_factory_.GetWeakPtr())); - audio_renderer_ = media_stream_client_->GetAudioRenderer(url); - if (audio_renderer_) - audio_renderer_->Start(); - } -#endif } else { info_loader_.reset( new MediaInfoLoader( @@ -332,10 +274,6 @@ void WebMediaPlayerAndroid::play() { manager_->RequestExternalSurface(player_id_, last_computed_rect_); } #endif // defined(VIDEO_HOLE) -#if defined(GOOGLE_TV) - if (audio_renderer_ && paused()) - audio_renderer_->Play(); -#endif // defined(GOOGLE_TV) TryCreateStreamTextureProxyIfNeeded(); if (hasVideo() && needs_establish_peer_) @@ -731,14 +669,9 @@ void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) { return; #if defined(VIDEO_HOLE) - bool has_surface_size_restriction = false; -#if defined(GOOGLE_TV) - has_surface_size_restriction = external_surface_threshold_ >= 0 && - external_surface_threshold_ <= width * height; -#endif // defined(GOOGLE_TV) // Use H/W surface for MSE as the content might be protected. // TODO(qinmin): Change this so that only EME needs the H/W surface - if (media_source_delegate_ || has_surface_size_restriction) { + if (media_source_delegate_) { needs_external_surface_ = true; if (!paused() && !manager_->IsInFullscreen(frame_)) manager_->RequestExternalSurface(player_id_, last_computed_rect_); @@ -920,10 +853,6 @@ void WebMediaPlayerAndroid::Detach() { } void WebMediaPlayerAndroid::Pause(bool is_media_related_action) { -#if defined(GOOGLE_TV) - if (audio_renderer_ && !paused()) - audio_renderer_->Pause(); -#endif manager_->Pause(player_id_, is_media_related_action); UpdatePlayingState(false); } @@ -1366,11 +1295,6 @@ WebMediaPlayerAndroid::CancelKeyRequestInternal( void WebMediaPlayerAndroid::OnKeyAdded(const std::string& session_id) { EmeUMAHistogramCounts(current_key_system_, "KeyAdded", 1); -#if defined(GOOGLE_TV) - if (media_source_delegate_) - media_source_delegate_->NotifyKeyAdded(current_key_system_.utf8()); -#endif // defined(GOOGLE_TV) - client_->keyAdded(current_key_system_, WebString::fromUTF8(session_id)); } @@ -1429,19 +1353,6 @@ void WebMediaPlayerAndroid::OnNeedKey(const std::string& type, init_data.size()); } -#if defined(GOOGLE_TV) -bool WebMediaPlayerAndroid::InjectMediaStream( - MediaStreamClient* media_stream_client, - media::Demuxer* demuxer, - const base::Closure& destroy_demuxer_cb) { - DCHECK(!demuxer); - media_stream_client_ = media_stream_client; - demuxer_ = demuxer; - destroy_demuxer_cb_ = destroy_demuxer_cb; - return true; -} -#endif - void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture(uint32 sync_point) { DCHECK(main_thread_checker_.CalledOnValidThread()); DCHECK(remote_playback_texture_id_); diff --git a/content/renderer/media/android/webmediaplayer_android.h b/content/renderer/media/android/webmediaplayer_android.h index d2e9e51..3cdc6ac 100644 --- a/content/renderer/media/android/webmediaplayer_android.h +++ b/content/renderer/media/android/webmediaplayer_android.h @@ -32,7 +32,6 @@ #include "ui/gfx/rect_f.h" namespace media { -class Demuxer; class MediaLog; } @@ -48,11 +47,6 @@ namespace content { class WebMediaPlayerDelegate; class RendererMediaPlayerManager; -#if defined(GOOGLE_TV) -class MediaStreamAudioRenderer; -class MediaStreamClient; -#endif - // This class implements blink::WebMediaPlayer by keeping the android // media player in the browser process. It listens to all the status changes // sent from the browser process and sends playback controls to the media @@ -225,12 +219,6 @@ class WebMediaPlayerAndroid void OnNeedKey(const std::string& type, const std::vector<uint8>& init_data); -#if defined(GOOGLE_TV) - bool InjectMediaStream(MediaStreamClient* media_stream_client, - media::Demuxer* demuxer, - const base::Closure& destroy_demuxer_cb); -#endif - // Can be called on any thread. static void OnReleaseRemotePlaybackTexture( const scoped_refptr<base::MessageLoopProxy>& main_loop, @@ -402,18 +390,6 @@ class WebMediaPlayerAndroid gfx::RectF last_computed_rect_; #endif // defined(VIDEO_HOLE) -#if defined(GOOGLE_TV) - // Pixel threshold for external surface usage. Negative value means that the - // threshold is not defined, so that external surface is never used. - int external_surface_threshold_; - - // Media Stream related fields. - media::Demuxer* demuxer_; - base::Closure destroy_demuxer_cb_; - scoped_refptr<MediaStreamAudioRenderer> audio_renderer_; - MediaStreamClient* media_stream_client_; -#endif - scoped_ptr<MediaSourceDelegate, MediaSourceDelegate::Destroyer> media_source_delegate_; diff --git a/content/renderer/media/crypto/key_systems.cc b/content/renderer/media/crypto/key_systems.cc index 4102533..ac3f4aa 100644 --- a/content/renderer/media/crypto/key_systems.cc +++ b/content/renderer/media/crypto/key_systems.cc @@ -36,7 +36,6 @@ const char kMp4a[] = "mp4a"; const char kMp4aAvc1Avc3[] = "mp4a,avc1,avc3"; #endif // defined(USE_PROPRIETARY_CODECS) -#if !defined(GOOGLE_TV) inline std::string KeySystemNameForUMAInternal( const blink::WebString& key_system) { if (key_system == kClearKeyKeySystem) @@ -47,10 +46,6 @@ inline std::string KeySystemNameForUMAInternal( #endif // WIDEVINE_CDM_AVAILABLE return "Unknown"; } -#else -// Declares the function, which is defined in another file. -std::string KeySystemNameForUMAInternal(const blink::WebString& key_system); -#endif // !defined(GOOGLE_TV) // Convert a WebString to ASCII, falling back on an empty string in the case // of a non-ASCII string. diff --git a/content/renderer/media/crypto/ppapi_decryptor.cc b/content/renderer/media/crypto/ppapi_decryptor.cc index b60afaa..cf7808c 100644 --- a/content/renderer/media/crypto/ppapi_decryptor.cc +++ b/content/renderer/media/crypto/ppapi_decryptor.cc @@ -143,18 +143,7 @@ void PpapiDecryptor::ReleaseSession(uint32 session_id) { } media::Decryptor* PpapiDecryptor::GetDecryptor() { -#if defined(GOOGLE_TV) - // Google TV only uses PpapiDecrytor as a MediaKeys and does not need the - // Decryptor interface of the PpapiDecryptor. - // Details: If we don't do this GTV will be broken. The reason is that during - // initialization, MediaSourceDelegate tries to use DecryptingDemuxerStream - // to decrypt the stream in the renderer process (for ClearKey support). - // However, for GTV, PpapiDecryptor cannot do decryption at all. By returning - // NULL, DDS init will fail and we fallback to what GTV used to do. - return NULL; -#else return this; -#endif // defined(GOOGLE_TV) } void PpapiDecryptor::RegisterNewKeyCB(StreamType stream_type, diff --git a/content/renderer/media/media_stream_dependency_factory.cc b/content/renderer/media/media_stream_dependency_factory.cc index a55ed36..ab436ee 100644 --- a/content/renderer/media/media_stream_dependency_factory.cc +++ b/content/renderer/media/media_stream_dependency_factory.cc @@ -46,10 +46,6 @@ #include "net/socket/nss_ssl_util.h" #endif -#if defined(GOOGLE_TV) -#include "content/renderer/media/rtc_video_decoder_factory_tv.h" -#endif - #if defined(OS_ANDROID) #include "media/base/android/media_codec_bridge.h" #endif @@ -202,9 +198,6 @@ class SourceStateObserver : public webrtc::ObserverInterface, MediaStreamDependencyFactory::MediaStreamDependencyFactory( P2PSocketDispatcher* p2p_socket_dispatcher) : network_manager_(NULL), -#if defined(GOOGLE_TV) - decoder_factory_tv_(NULL), -#endif p2p_socket_dispatcher_(p2p_socket_dispatcher), signaling_thread_(NULL), worker_thread_(NULL), @@ -585,16 +578,10 @@ bool MediaStreamDependencyFactory::CreatePeerConnectionFactory() { const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); scoped_refptr<RendererGpuVideoAcceleratorFactories> gpu_factories = RenderThreadImpl::current()->GetGpuFactories(); -#if !defined(GOOGLE_TV) if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWDecoding)) { if (gpu_factories) decoder_factory.reset(new RTCVideoDecoderFactory(gpu_factories)); } -#else - // PeerConnectionFactory will hold the ownership of this - // VideoDecoderFactory. - decoder_factory.reset(decoder_factory_tv_ = new RTCVideoDecoderFactoryTv()); -#endif if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWEncoding)) { if (gpu_factories) diff --git a/content/renderer/media/media_stream_dependency_factory.h b/content/renderer/media/media_stream_dependency_factory.h index 22bbc54..13bfa3f 100644 --- a/content/renderer/media/media_stream_dependency_factory.h +++ b/content/renderer/media/media_stream_dependency_factory.h @@ -53,10 +53,6 @@ class WebRtcLoggingHandlerImpl; class WebRtcLoggingMessageFilter; struct StreamDeviceInfo; -#if defined(GOOGLE_TV) -class RTCVideoDecoderFactoryTv; -#endif - // Object factory for RTC MediaStreams and RTC PeerConnections. class CONTENT_EXPORT MediaStreamDependencyFactory : NON_EXPORTED_BASE(public base::NonThreadSafe), @@ -151,10 +147,6 @@ class CONTENT_EXPORT MediaStreamDependencyFactory WebRtcAudioDeviceImpl* GetWebRtcAudioDevice(); -#if defined(GOOGLE_TV) - RTCVideoDecoderFactoryTv* decoder_factory_tv() { return decoder_factory_tv_; } -#endif - static void AddNativeTrackToBlinkTrack( webrtc::MediaStreamTrackInterface* native_track, const blink::WebMediaStreamTrack& webkit_track, @@ -255,12 +247,6 @@ class CONTENT_EXPORT MediaStreamDependencyFactory scoped_refptr<webrtc::PeerConnectionFactoryInterface> pc_factory_; -#if defined(GOOGLE_TV) - // |pc_factory_| will hold the ownership of this object, and |pc_factory_| - // outlives this object. Thus weak pointer is sufficient. - RTCVideoDecoderFactoryTv* decoder_factory_tv_; -#endif - scoped_refptr<P2PSocketDispatcher> p2p_socket_dispatcher_; scoped_refptr<WebRtcAudioDeviceImpl> audio_device_; diff --git a/content/renderer/media/rtc_video_decoder_bridge_tv.cc b/content/renderer/media/rtc_video_decoder_bridge_tv.cc deleted file mode 100644 index 68a798a..0000000 --- a/content/renderer/media/rtc_video_decoder_bridge_tv.cc +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/renderer/media/rtc_video_decoder_bridge_tv.h" - -#include <queue> - -#include "base/bind.h" -#include "base/callback_helpers.h" -#include "base/location.h" -#include "base/logging.h" -#include "base/memory/ref_counted.h" -#include "base/memory/singleton.h" -#include "base/message_loop/message_loop_proxy.h" -#include "base/time/time.h" -#include "content/renderer/media/rtc_video_decoder_factory_tv.h" -#include "media/base/bind_to_current_loop.h" -#include "media/base/decoder_buffer.h" -#include "third_party/libjingle/source/talk/base/ratetracker.h" - -namespace content { - -RTCVideoDecoderBridgeTv::RTCVideoDecoderBridgeTv( - RTCVideoDecoderFactoryTv* factory) - : factory_(factory), - is_initialized_(false), - first_frame_(true) {} - -RTCVideoDecoderBridgeTv::~RTCVideoDecoderBridgeTv() {} - -int32_t RTCVideoDecoderBridgeTv::InitDecode( - const webrtc::VideoCodec* codec_settings, - int32_t number_of_cores) { - // We don't support non-VP8 codec, feedback mode, nor double-initialization - if (codec_settings->codecType != webrtc::kVideoCodecVP8 || - codec_settings->codecSpecific.VP8.feedbackModeOn || is_initialized_) - return WEBRTC_VIDEO_CODEC_ERROR; - size_ = gfx::Size(codec_settings->width, codec_settings->height); - - is_initialized_ = true; - first_frame_ = true; - factory_->InitializeStream(size_); - - return WEBRTC_VIDEO_CODEC_OK; -} - -int32_t RTCVideoDecoderBridgeTv::Decode( - const webrtc::EncodedImage& input_image, - bool missing_frames, - const webrtc::RTPFragmentationHeader* fragmentation, - const webrtc::CodecSpecificInfo* codec_specific_info, - int64_t render_time_ms) { - // Unlike the SW decoder in libvpx, hw decoder can not handle broken frames. - // Here, we return an error in order to request a key frame. - if (missing_frames || !input_image._completeFrame) - return WEBRTC_VIDEO_CODEC_ERROR; - - if (!is_initialized_) - return WEBRTC_VIDEO_CODEC_UNINITIALIZED; - - if (first_frame_) { - // If the first frame is not a key frame, return an error to request a key - // frame. - if (input_image._frameType != webrtc::kKeyFrame) - return WEBRTC_VIDEO_CODEC_ERROR; - - // Google TV expects timestamp from 0, so we store the initial timestamp as - // an offset and subtract the value from every timestamps to meet the - // expectation. - timestamp_offset_millis_ = render_time_ms; - } - first_frame_ = false; - gfx::Size new_size; - if (input_image._frameType == webrtc::kKeyFrame && - input_image._encodedWidth != 0 && input_image._encodedHeight != 0) { - // Only a key frame has a meaningful size. - new_size.SetSize(input_image._encodedWidth, input_image._encodedHeight); - if (size_ == new_size) - new_size = gfx::Size(); - else - size_ = new_size; - } - // |input_image_| may be destroyed after this call, so we make a copy of the - // buffer so that we can queue the buffer asynchronously. - scoped_refptr<media::DecoderBuffer> buffer = - media::DecoderBuffer::CopyFrom(input_image._buffer, input_image._length); - if (render_time_ms != -1) { - buffer->set_timestamp(base::TimeDelta::FromMilliseconds( - render_time_ms - timestamp_offset_millis_)); - } - - factory_->QueueBuffer(buffer, new_size); - - return WEBRTC_VIDEO_CODEC_OK; -} - -int32_t RTCVideoDecoderBridgeTv::RegisterDecodeCompleteCallback( - webrtc::DecodedImageCallback* callback) { - return WEBRTC_VIDEO_CODEC_OK; -} - -int32_t RTCVideoDecoderBridgeTv::Release() { - is_initialized_ = false; - return WEBRTC_VIDEO_CODEC_OK; -} - -int32_t RTCVideoDecoderBridgeTv::Reset() { - first_frame_ = true; - return WEBRTC_VIDEO_CODEC_OK; -} - -} // namespace content diff --git a/content/renderer/media/rtc_video_decoder_bridge_tv.h b/content/renderer/media/rtc_video_decoder_bridge_tv.h deleted file mode 100644 index 2ab6fde..0000000 --- a/content/renderer/media/rtc_video_decoder_bridge_tv.h +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_BRIDGE_TV_H_ -#define CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_BRIDGE_TV_H_ - -#include "base/basictypes.h" -#include "base/compiler_specific.h" -#include "content/common/content_export.h" -#include "third_party/webrtc/modules/video_coding/codecs/interface/video_codec_interface.h" -#include "ui/gfx/size.h" - -namespace content { - -class MediaStreamDependencyFactory; -class RTCVideoDecoderFactoryTv; - -// An object shared between WebMediaPlayerAndroid and WebRTC Video Engine. -// Note that this class provides the first remote stream. -class CONTENT_EXPORT RTCVideoDecoderBridgeTv - : NON_EXPORTED_BASE(public webrtc::VideoDecoder) { - public: - explicit RTCVideoDecoderBridgeTv(RTCVideoDecoderFactoryTv* factory); - virtual ~RTCVideoDecoderBridgeTv(); - - // webrtc::VideoDecoder implementation. - virtual int32_t InitDecode(const webrtc::VideoCodec* codec_settings, - int32_t number_of_cores) OVERRIDE; - virtual int32_t Decode( - const webrtc::EncodedImage& input_image, - bool missing_frames, - const webrtc::RTPFragmentationHeader* fragmentation, - const webrtc::CodecSpecificInfo* codec_specific_info, - int64_t render_time_ms) OVERRIDE; - virtual int32_t RegisterDecodeCompleteCallback( - webrtc::DecodedImageCallback* callback) OVERRIDE; - virtual int32_t Release() OVERRIDE; - virtual int32_t Reset() OVERRIDE; - - private: - // The factory outlives this object, so weak pointer is fine. - RTCVideoDecoderFactoryTv* factory_; - - gfx::Size size_; - bool is_initialized_; - bool first_frame_; - int64_t timestamp_offset_millis_; - - DISALLOW_COPY_AND_ASSIGN(RTCVideoDecoderBridgeTv); -}; - -} // namespace content - -#endif // CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_BRIDGE_TV_H_ diff --git a/content/renderer/media/rtc_video_decoder_factory_tv.cc b/content/renderer/media/rtc_video_decoder_factory_tv.cc deleted file mode 100644 index 5a9df70..0000000 --- a/content/renderer/media/rtc_video_decoder_factory_tv.cc +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/renderer/media/rtc_video_decoder_factory_tv.h" - -#include "base/callback_helpers.h" -#include "content/renderer/media/rtc_video_decoder_bridge_tv.h" -#include "media/base/audio_decoder_config.h" -#include "media/base/bind_to_current_loop.h" -#include "media/base/decoder_buffer.h" -#include "media/base/video_decoder_config.h" -#include "third_party/libjingle/source/talk/base/ratetracker.h" - -using media::DemuxerStream; - -namespace content { - -// RTCDemuxerStream ------------------------------------------------------------ - -class RTCDemuxerStream : public DemuxerStream { - public: - explicit RTCDemuxerStream(const gfx::Size& size); - virtual ~RTCDemuxerStream(); - - // DemuxerStream implementation. - virtual void Read(const ReadCB& read_cb) OVERRIDE; - virtual media::AudioDecoderConfig audio_decoder_config() OVERRIDE; - virtual media::VideoDecoderConfig video_decoder_config() OVERRIDE; - virtual Type type() OVERRIDE; - virtual void EnableBitstreamConverter() OVERRIDE; - - void QueueBuffer(scoped_refptr<media::DecoderBuffer> buffer, - const gfx::Size& new_size); - void Destroy(); - - private: - struct BufferEntry { - BufferEntry(const scoped_refptr<media::DecoderBuffer>& decoder_buffer_param, - const gfx::Size& new_size_param) - : decoder_buffer(decoder_buffer_param), - new_size(new_size_param) {} - - scoped_refptr<media::DecoderBuffer> decoder_buffer; - // When |!new_size.isEmpty()|, it means that config change with new size - // |new_size| happened. - gfx::Size new_size; - }; - - void RunReadCallback_Locked(); - - base::Lock lock_; - bool is_destroyed_; - std::queue<BufferEntry> buffer_queue_; - ReadCB read_cb_; - - media::AudioDecoderConfig dummy_audio_decoder_config_; - media::VideoDecoderConfig video_decoder_config_; - talk_base::RateTracker frame_rate_tracker_; -}; - -RTCDemuxerStream::RTCDemuxerStream(const gfx::Size& size) - : is_destroyed_(false), - video_decoder_config_(media::kCodecVP8, - media::VP8PROFILE_MAIN, - media::VideoFrame::NATIVE_TEXTURE, - size, - gfx::Rect(size), - size, - NULL, - 0, - false) {} - -RTCDemuxerStream::~RTCDemuxerStream() { DCHECK(is_destroyed_); } - -media::AudioDecoderConfig RTCDemuxerStream::audio_decoder_config() { - NOTIMPLEMENTED() << "Does not support audio."; - return dummy_audio_decoder_config_; -} - -media::VideoDecoderConfig RTCDemuxerStream::video_decoder_config() { - base::AutoLock lock(lock_); - return video_decoder_config_; -} - -DemuxerStream::Type RTCDemuxerStream::type() { return DemuxerStream::VIDEO; } - -void RTCDemuxerStream::EnableBitstreamConverter() { NOTREACHED(); } - -void RTCDemuxerStream::QueueBuffer(scoped_refptr<media::DecoderBuffer> buffer, - const gfx::Size& new_size) { - base::AutoLock lock(lock_); - if (is_destroyed_) - return; - buffer_queue_.push(BufferEntry(buffer, new_size)); - if (buffer) - frame_rate_tracker_.Update(1); - DVLOG(1) << "frame rate received : " << frame_rate_tracker_.units_second(); - RunReadCallback_Locked(); -} - -void RTCDemuxerStream::Read(const ReadCB& read_cb) { - base::AutoLock lock(lock_); - DCHECK(read_cb_.is_null()); - if (is_destroyed_) { - base::MessageLoopProxy::current()->PostTask(FROM_HERE, base::Bind( - read_cb, DemuxerStream::kAborted, NULL)); - return; - } - read_cb_ = media::BindToCurrentLoop(read_cb); - RunReadCallback_Locked(); -} - -void RTCDemuxerStream::Destroy() { - base::AutoLock lock(lock_); - DCHECK(!is_destroyed_); - is_destroyed_ = true; - if (!read_cb_.is_null()) - base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kAborted, NULL); - while (!buffer_queue_.empty()) - buffer_queue_.pop(); -} - -void RTCDemuxerStream::RunReadCallback_Locked() { - if (read_cb_.is_null() || buffer_queue_.empty()) - return; - - BufferEntry& front = buffer_queue_.front(); - if (!front.new_size.IsEmpty()) { - // No VideoFrame actually reaches GL renderer in Google TV case. We just - // make coded_size == visible_rect == natural_size here. - video_decoder_config_.Initialize(media::kCodecVP8, - media::VP8PROFILE_MAIN, - media::VideoFrame::NATIVE_TEXTURE, - front.new_size, - gfx::Rect(front.new_size), - front.new_size, - NULL, - 0, - false, - false); - base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kConfigChanged, NULL); - front.new_size.SetSize(0, 0); - return; - } - base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kOk, front.decoder_buffer); - buffer_queue_.pop(); -} - -// RTCVideoDecoderFactoryTv ---------------------------------------------------- - -RTCVideoDecoderFactoryTv::RTCVideoDecoderFactoryTv() : is_acquired_(false) {} -RTCVideoDecoderFactoryTv::~RTCVideoDecoderFactoryTv() {} - -webrtc::VideoDecoder* RTCVideoDecoderFactoryTv::CreateVideoDecoder( - webrtc::VideoCodecType type) { - base::AutoLock lock(lock_); - // One decoder at a time! - if (decoder_) - return NULL; - // Only VP8 is supported --- returning NULL will make WebRTC fall back to SW - // decoder. - if (type != webrtc::kVideoCodecVP8) - return NULL; - decoder_.reset(new RTCVideoDecoderBridgeTv(this)); - return decoder_.get(); -} - -void RTCVideoDecoderFactoryTv::DestroyVideoDecoder( - webrtc::VideoDecoder* decoder) { - base::AutoLock lock(lock_); - DCHECK_EQ(decoder_.get(), decoder); - decoder_.reset(); -} - -bool RTCVideoDecoderFactoryTv::AcquireDemuxer() { - base::AutoLock lock(lock_); - if (is_acquired_) - return false; - is_acquired_ = true; - return true; -} - -void RTCVideoDecoderFactoryTv::ReleaseDemuxer() { - base::AutoLock lock(lock_); - DCHECK(is_acquired_); - is_acquired_ = false; - // Clean up internal state as a demuxer. - init_cb_.Reset(); - if (stream_) { - stream_->Destroy(); - stream_.reset(); - } -} - -void RTCVideoDecoderFactoryTv::Initialize(media::DemuxerHost* /*host*/, - const media::PipelineStatusCB& cb, - bool /*enable_text_tracks*/) { - base::AutoLock lock(lock_); - init_cb_ = media::BindToCurrentLoop(cb); - if (stream_) - base::ResetAndReturn(&init_cb_).Run(media::PIPELINE_OK); -} - -void RTCVideoDecoderFactoryTv::Seek(base::TimeDelta time, - const media::PipelineStatusCB& status_cb) { - DCHECK(!status_cb.is_null()); - status_cb.Run(media::PIPELINE_OK); -} - -void RTCVideoDecoderFactoryTv::Stop(const base::Closure& callback) { - DCHECK(!callback.is_null()); - callback.Run(); -} - -void RTCVideoDecoderFactoryTv::OnAudioRendererDisabled() { -} - -DemuxerStream* RTCVideoDecoderFactoryTv::GetStream(DemuxerStream::Type type) { - base::AutoLock lock(lock_); - if (type == DemuxerStream::VIDEO) - return stream_.get(); - return NULL; -} - -base::TimeDelta RTCVideoDecoderFactoryTv::GetStartTime() const { - return base::TimeDelta(); -} - -void RTCVideoDecoderFactoryTv::InitializeStream(const gfx::Size& size) { - base::AutoLock lock(lock_); - DCHECK(!stream_); - stream_.reset(new RTCDemuxerStream(size)); - if (!init_cb_.is_null()) - base::ResetAndReturn(&init_cb_).Run(media::PIPELINE_OK); -} - -void RTCVideoDecoderFactoryTv::QueueBuffer( - scoped_refptr<media::DecoderBuffer> buffer, - const gfx::Size& new_size) { - base::AutoLock lock(lock_); - DCHECK(stream_); - stream_->QueueBuffer(buffer, new_size); -} - -} // namespace content diff --git a/content/renderer/media/rtc_video_decoder_factory_tv.h b/content/renderer/media/rtc_video_decoder_factory_tv.h deleted file mode 100644 index cd51cdc..0000000 --- a/content/renderer/media/rtc_video_decoder_factory_tv.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_FACTORY_TV_H_ -#define CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_FACTORY_TV_H_ - -#include "base/basictypes.h" -#include "base/compiler_specific.h" -#include "base/message_loop/message_loop.h" -#include "content/common/content_export.h" -#include "media/base/demuxer.h" -#include "third_party/libjingle/source/talk/media/webrtc/webrtcvideodecoderfactory.h" -#include "ui/gfx/size.h" - -namespace webrtc { -class VideoDecoder; -} - -namespace content { - -class MediaStreamDependencyFactory; -class RTCDemuxerStream; -class RTCVideoDecoderBridgeTv; - -// A factory object generating |RTCVideoDecoderBridgeTv| objects. This object -// also functions as a |media::Demuxer| object to receive encoded streams from -// the |RTCVideoDecoderBridgeTv| object (which inherits from -// |webrtc::VideoDecoder|). -class CONTENT_EXPORT RTCVideoDecoderFactoryTv - : NON_EXPORTED_BASE(public cricket::WebRtcVideoDecoderFactory), - public media::Demuxer { - public: - RTCVideoDecoderFactoryTv(); - virtual ~RTCVideoDecoderFactoryTv(); - - // cricket::WebRtcVideoDecoderFactory implementation. - virtual webrtc::VideoDecoder* CreateVideoDecoder( - webrtc::VideoCodecType type) OVERRIDE; - virtual void DestroyVideoDecoder(webrtc::VideoDecoder* decoder) OVERRIDE; - - // Acquires and releases the demuxer functionality of this object. Only one - // client object can access demuxer functionality at a time. No calls to - // |media::Demuxer| implementations should be made without acquiring it first. - bool AcquireDemuxer(); - void ReleaseDemuxer(); - - // media::Demuxer implementation. - virtual void Initialize(media::DemuxerHost* host, - const media::PipelineStatusCB& cb, - bool enable_text_tracks) OVERRIDE; - virtual void Seek(base::TimeDelta time, - const media::PipelineStatusCB& status_cb) OVERRIDE; - virtual void Stop(const base::Closure& callback) OVERRIDE; - virtual void OnAudioRendererDisabled() OVERRIDE; - virtual media::DemuxerStream* GetStream( - media::DemuxerStream::Type type) OVERRIDE; - virtual base::TimeDelta GetStartTime() const OVERRIDE; - - // For RTCVideoDecoderBridgeTv to talk to RTCDemuxerStream. - void InitializeStream(const gfx::Size& size); - void QueueBuffer(scoped_refptr<media::DecoderBuffer> buffer, - const gfx::Size& size); - - private: - // All private variables are lock protected. - base::Lock lock_; - scoped_ptr<RTCVideoDecoderBridgeTv> decoder_; - - media::PipelineStatusCB init_cb_; - scoped_ptr<RTCDemuxerStream> stream_; - - bool is_acquired_; - - DISALLOW_COPY_AND_ASSIGN(RTCVideoDecoderFactoryTv); -}; - -} // namespace content - -#endif // CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_FACTORY_TV_H_ diff --git a/content/renderer/media/rtc_video_decoder_factory_tv_unittest.cc b/content/renderer/media/rtc_video_decoder_factory_tv_unittest.cc deleted file mode 100644 index 31b3143..0000000 --- a/content/renderer/media/rtc_video_decoder_factory_tv_unittest.cc +++ /dev/null @@ -1,348 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/synchronization/waitable_event.h" -#include "base/task_runner_util.h" -#include "base/threading/thread.h" -#include "content/renderer/media/rtc_video_decoder_factory_tv.h" -#include "media/base/decoder_buffer.h" -#include "media/base/video_decoder_config.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/webrtc/modules/video_coding/codecs/interface/mock/mock_video_codec_interface.h" -#include "ui/gfx/rect.h" - -using ::testing::_; -using ::testing::Return; - -namespace content { - -class RTCVideoDecoderFactoryTvTest : public ::testing::Test { - public: - RTCVideoDecoderFactoryTvTest() - : factory_(new RTCVideoDecoderFactoryTv), - decoder_(NULL), - is_demuxer_acquired_(false), - video_stream_(NULL), - size_(1280, 720), - input_image_(&data_, sizeof(data_), sizeof(data_)), - data_('a'), - read_event_(false, false), - decoder_thread_("Test decoder thread"), - decoder_thread_event_(false, false) { - memset(&codec_, 0, sizeof(codec_)); - message_loop_proxy_ = base::MessageLoopProxy::current(); - input_image_._frameType = webrtc::kKeyFrame; - input_image_._encodedWidth = size_.width(); - input_image_._encodedHeight = size_.height(); - input_image_._completeFrame = true; - decoder_thread_.Start(); - } - - virtual ~RTCVideoDecoderFactoryTvTest() { - if (is_demuxer_acquired_) { - factory_->ReleaseDemuxer(); - is_demuxer_acquired_ = false; - } - if (decoder_) { - factory_->DestroyVideoDecoder(decoder_); - decoder_ = NULL; - } - - decoder_thread_.Stop(); - } - - void ReadCallback(media::DemuxerStream::Status status, - const scoped_refptr<media::DecoderBuffer>& decoder_buffer) { - switch (status) { - case media::DemuxerStream::kOk: - EXPECT_TRUE(decoder_buffer); - break; - case media::DemuxerStream::kConfigChanged: - case media::DemuxerStream::kAborted: - EXPECT_FALSE(decoder_buffer); - break; - } - last_decoder_buffer_ = decoder_buffer; - read_event_.Signal(); - } - - void ExpectEqualsAndSignal(int32_t expected, int32_t actual) { - EXPECT_EQ(expected, actual); - decoder_thread_event_.Signal(); - } - - void ExpectNotEqualsAndSignal(int32_t unexpected, int32_t actual) { - EXPECT_NE(unexpected, actual); - decoder_thread_event_.Signal(); - } - - protected: - base::Callback<void(int32_t)> BindExpectEquals(int32_t expected) { - return base::Bind(&RTCVideoDecoderFactoryTvTest::ExpectEqualsAndSignal, - base::Unretained(this), - expected); - } - - base::Callback<void(int32_t)> BindExpectNotEquals(int32_t unexpected) { - return base::Bind(&RTCVideoDecoderFactoryTvTest::ExpectNotEqualsAndSignal, - base::Unretained(this), - unexpected); - } - - base::Callback<int32_t(void)> BindInitDecode(const webrtc::VideoCodec* codec, - int32_t num_cores) { - return base::Bind(&webrtc::VideoDecoder::InitDecode, - base::Unretained(decoder_), - codec, - num_cores); - } - - base::Callback<int32_t(void)> BindDecode( - const webrtc::EncodedImage& input_image, - bool missing_frames, - const webrtc::RTPFragmentationHeader* fragmentation, - const webrtc::CodecSpecificInfo* info, - int64_t render_time_ms) { - return base::Bind(&webrtc::VideoDecoder::Decode, - base::Unretained(decoder_), - input_image, - missing_frames, - fragmentation, - info, - render_time_ms); - } - - void CreateDecoderAndAcquireDemuxer() { - decoder_ = factory_->CreateVideoDecoder(webrtc::kVideoCodecVP8); - ASSERT_TRUE(decoder_); - ASSERT_TRUE(factory_->AcquireDemuxer()); - is_demuxer_acquired_ = true; - } - - void InitDecode() { - codec_.codecType = webrtc::kVideoCodecVP8; - codec_.width = size_.width(); - codec_.height = size_.height(); - base::PostTaskAndReplyWithResult(decoder_thread_.message_loop_proxy(), - FROM_HERE, - BindInitDecode(&codec_, 1), - BindExpectEquals(WEBRTC_VIDEO_CODEC_OK)); - decoder_thread_event_.Wait(); - base::PostTaskAndReplyWithResult( - decoder_thread_.message_loop_proxy(), - FROM_HERE, - base::Bind(&webrtc::VideoDecoder::RegisterDecodeCompleteCallback, - base::Unretained(decoder_), - &decode_complete_callback_), - BindExpectEquals(WEBRTC_VIDEO_CODEC_OK)); - decoder_thread_event_.Wait(); - } - - void GetVideoStream() { - video_stream_ = factory_->GetStream(media::DemuxerStream::VIDEO); - ASSERT_TRUE(video_stream_); - EXPECT_EQ(media::kCodecVP8, video_stream_->video_decoder_config().codec()); - EXPECT_EQ(size_, video_stream_->video_decoder_config().coded_size()); - EXPECT_EQ(gfx::Rect(size_), - video_stream_->video_decoder_config().visible_rect()); - EXPECT_EQ(size_, video_stream_->video_decoder_config().natural_size()); - } - - void PostDecodeAndWait(int32_t expected, - const webrtc::EncodedImage& input_image, - bool missing_frames, - const webrtc::RTPFragmentationHeader* fragmentation, - const webrtc::CodecSpecificInfo* info, - int64_t render_time_ms) { - base::PostTaskAndReplyWithResult( - decoder_thread_.message_loop_proxy(), - FROM_HERE, - BindDecode( - input_image, missing_frames, fragmentation, info, render_time_ms), - BindExpectEquals(expected)); - decoder_thread_event_.Wait(); - } - - RTCVideoDecoderFactoryTv* factory_; - webrtc::VideoDecoder* decoder_; - bool is_demuxer_acquired_; - base::MessageLoopProxy* message_loop_proxy_; - media::DemuxerStream* video_stream_; - webrtc::VideoCodec codec_; - gfx::Size size_; - webrtc::EncodedImage input_image_; - unsigned char data_; - webrtc::MockDecodedImageCallback decode_complete_callback_; - base::WaitableEvent read_event_; - base::Thread decoder_thread_; - base::WaitableEvent decoder_thread_event_; - scoped_refptr<media::DecoderBuffer> last_decoder_buffer_; -}; - -TEST_F(RTCVideoDecoderFactoryTvTest, CreateAndDestroyDecoder) { - // Only VP8 decoder is supported. - ASSERT_FALSE(factory_->CreateVideoDecoder(webrtc::kVideoCodecI420)); - decoder_ = factory_->CreateVideoDecoder(webrtc::kVideoCodecVP8); - ASSERT_TRUE(decoder_); - // Only one decoder at a time will be created. - ASSERT_FALSE(factory_->CreateVideoDecoder(webrtc::kVideoCodecVP8)); - factory_->DestroyVideoDecoder(decoder_); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, AcquireDemuxerAfterCreateDecoder) { - decoder_ = factory_->CreateVideoDecoder(webrtc::kVideoCodecVP8); - ASSERT_TRUE(decoder_); - ASSERT_TRUE(factory_->AcquireDemuxer()); - is_demuxer_acquired_ = true; - // Demuxer can be acquired only once. - ASSERT_FALSE(factory_->AcquireDemuxer()); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, AcquireDemuxerBeforeCreateDecoder) { - ASSERT_TRUE(factory_->AcquireDemuxer()); - is_demuxer_acquired_ = true; - decoder_ = factory_->CreateVideoDecoder(webrtc::kVideoCodecVP8); - ASSERT_TRUE(decoder_); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, InitDecodeReturnsErrorOnNonVP8Codec) { - CreateDecoderAndAcquireDemuxer(); - codec_.codecType = webrtc::kVideoCodecI420; - base::PostTaskAndReplyWithResult(decoder_thread_.message_loop_proxy(), - FROM_HERE, - BindInitDecode(&codec_, 1), - BindExpectNotEquals(WEBRTC_VIDEO_CODEC_OK)); - decoder_thread_event_.Wait(); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, InitDecodeReturnsErrorOnFeedbackMode) { - CreateDecoderAndAcquireDemuxer(); - codec_.codecType = webrtc::kVideoCodecVP8; - codec_.codecSpecific.VP8.feedbackModeOn = true; - base::PostTaskAndReplyWithResult(decoder_thread_.message_loop_proxy(), - FROM_HERE, - BindInitDecode(&codec_, 1), - BindExpectNotEquals(WEBRTC_VIDEO_CODEC_OK)); - decoder_thread_event_.Wait(); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, DecodeReturnsErrorBeforeInitDecode) { - CreateDecoderAndAcquireDemuxer(); - PostDecodeAndWait( - WEBRTC_VIDEO_CODEC_UNINITIALIZED, input_image_, false, NULL, NULL, 0); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, DecodeReturnsErrorOnDamagedBitstream) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - input_image_._completeFrame = false; - PostDecodeAndWait( - WEBRTC_VIDEO_CODEC_ERROR, input_image_, false, NULL, NULL, 0); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, DecodeReturnsErrorOnMissingFrames) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - PostDecodeAndWait( - WEBRTC_VIDEO_CODEC_ERROR, input_image_, true, NULL, NULL, 0); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, GetNonVideoStreamFails) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - EXPECT_FALSE(factory_->GetStream(media::DemuxerStream::AUDIO)); - EXPECT_FALSE(factory_->GetStream(media::DemuxerStream::UNKNOWN)); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, GetVideoStreamSucceeds) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - GetVideoStream(); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, DecodeReturnsErrorOnNonKeyFrameAtFirst) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - GetVideoStream(); - input_image_._frameType = webrtc::kDeltaFrame; - PostDecodeAndWait( - WEBRTC_VIDEO_CODEC_ERROR, input_image_, false, NULL, NULL, 0); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, DecodeUpdatesVideoSizeOnKeyFrame) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - GetVideoStream(); - gfx::Size new_size(320, 240); - input_image_._encodedWidth = new_size.width(); - input_image_._encodedHeight = new_size.height(); - PostDecodeAndWait(WEBRTC_VIDEO_CODEC_OK, input_image_, false, NULL, NULL, 0); - EXPECT_EQ(new_size, video_stream_->video_decoder_config().coded_size()); - EXPECT_EQ(gfx::Rect(new_size), - video_stream_->video_decoder_config().visible_rect()); - EXPECT_EQ(new_size, video_stream_->video_decoder_config().natural_size()); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, DecodeAdjustsTimestampFromZero) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - GetVideoStream(); - PostDecodeAndWait( - WEBRTC_VIDEO_CODEC_OK, input_image_, false, NULL, NULL, 10000); - video_stream_->Read(base::Bind(&RTCVideoDecoderFactoryTvTest::ReadCallback, - base::Unretained(this))); - read_event_.Wait(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(0), - last_decoder_buffer_->GetTimestamp()); - PostDecodeAndWait( - WEBRTC_VIDEO_CODEC_OK, input_image_, false, NULL, NULL, 10033); - video_stream_->Read(base::Bind(&RTCVideoDecoderFactoryTvTest::ReadCallback, - base::Unretained(this))); - read_event_.Wait(); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(33), - last_decoder_buffer_->GetTimestamp()); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, DecodePassesDataCorrectly) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - GetVideoStream(); - video_stream_->Read(base::Bind(&RTCVideoDecoderFactoryTvTest::ReadCallback, - base::Unretained(this))); - PostDecodeAndWait(WEBRTC_VIDEO_CODEC_OK, input_image_, false, NULL, NULL, 0); - read_event_.Wait(); - EXPECT_EQ(static_cast<int>(sizeof(data_)), - last_decoder_buffer_->GetDataSize()); - EXPECT_EQ(data_, last_decoder_buffer_->GetData()[0]); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, NextReadTriggersDecodeCompleteCallback) { - EXPECT_CALL(decode_complete_callback_, Decoded(_)) - .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); - - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - GetVideoStream(); - video_stream_->Read(base::Bind(&RTCVideoDecoderFactoryTvTest::ReadCallback, - base::Unretained(this))); - PostDecodeAndWait(WEBRTC_VIDEO_CODEC_OK, input_image_, false, NULL, NULL, 0); - read_event_.Wait(); - video_stream_->Read(base::Bind(&RTCVideoDecoderFactoryTvTest::ReadCallback, - base::Unretained(this))); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, ResetReturnsOk) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, decoder_->Reset()); -} - -TEST_F(RTCVideoDecoderFactoryTvTest, ReleaseReturnsOk) { - CreateDecoderAndAcquireDemuxer(); - InitDecode(); - EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, decoder_->Release()); -} - -} // content diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index 5485e88..bfc7e99a 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -223,11 +223,6 @@ #include "third_party/WebKit/public/web/WebHitTestResult.h" #include "ui/gfx/rect_f.h" -#if defined(GOOGLE_TV) -#include "content/renderer/media/rtc_video_decoder_bridge_tv.h" -#include "content/renderer/media/rtc_video_decoder_factory_tv.h" -#endif - #elif defined(OS_WIN) // TODO(port): these files are currently Windows only because they concern: // * theming @@ -5889,7 +5884,6 @@ WebMediaPlayer* RenderViewImpl::CreateWebMediaPlayerForMediaStream( LOG(ERROR) << "Failed to initialize MediaStreamClient"; return NULL; } -#if !defined(GOOGLE_TV) if (media_stream_client_->IsMediaStream(url)) { #if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL) bool found_neon = @@ -5899,7 +5893,6 @@ WebMediaPlayer* RenderViewImpl::CreateWebMediaPlayerForMediaStream( return new WebMediaPlayerMS(frame, client, AsWeakPtr(), media_stream_client_, new RenderMediaLog()); } -#endif // !defined(GOOGLE_TV) #endif // defined(ENABLE_WEBRTC) return NULL; } @@ -5997,33 +5990,14 @@ WebMediaPlayer* RenderViewImpl::CreateAndroidWebMediaPlayer( context_provider, gpu_channel_host, routing_id_)); } - scoped_ptr<WebMediaPlayerAndroid> web_media_player_android( - new WebMediaPlayerAndroid( + return new WebMediaPlayerAndroid( frame, client, AsWeakPtr(), media_player_manager_, stream_texture_factory.release(), RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy(), - new RenderMediaLog())); -#if defined(ENABLE_WEBRTC) && defined(GOOGLE_TV) - if (media_stream_client_ && media_stream_client_->IsMediaStream(url)) { - RTCVideoDecoderFactoryTv* factory = RenderThreadImpl::current() - ->GetMediaStreamDependencyFactory()->decoder_factory_tv(); - // |media_stream_client| and |factory| outlives |web_media_player_android|. - if (!factory->AcquireDemuxer() || - !web_media_player_android->InjectMediaStream( - media_stream_client_, - factory, - base::Bind( - base::IgnoreResult(&RTCVideoDecoderFactoryTv::ReleaseDemuxer), - base::Unretained(factory)))) { - LOG(ERROR) << "Failed to inject media stream."; - return NULL; - } - } -#endif // defined(ENABLE_WEBRTC) && defined(GOOGLE_TV) - return web_media_player_android.release(); + new RenderMediaLog()); } #endif // defined(OS_ANDROID) diff --git a/media/base/android/demuxer_stream_player_params.h b/media/base/android/demuxer_stream_player_params.h index 4a3a04d..3407420 100644 --- a/media/base/android/demuxer_stream_player_params.h +++ b/media/base/android/demuxer_stream_player_params.h @@ -5,9 +5,6 @@ #ifndef MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_ #define MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_ -#if defined(GOOGLE_TV) -#include <string> -#endif // defined(GOOGLE_TV) #include <vector> #include "media/base/audio_decoder_config.h" @@ -35,10 +32,6 @@ struct MEDIA_EXPORT DemuxerConfigs { std::vector<uint8> video_extra_data; int duration_ms; - -#if defined(GOOGLE_TV) - std::string key_system; -#endif // defined(GOOGLE_TV) }; struct MEDIA_EXPORT AccessUnit { diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc index 3a8fb33..7656c06 100644 --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc @@ -34,15 +34,6 @@ const char kDisableInfobarForProtectedMediaIdentifier[] = const char kMediaDrmEnableNonCompositing[] = "mediadrm-enable-non-compositing"; #endif -#if defined(GOOGLE_TV) -// Use external video surface for video with more than or equal pixels to -// specified value. For example, value of 0 will enable external video surface -// for all videos, and value of 921600 (=1280*720) will enable external video -// surface for 720p video and larger. -const char kUseExternalVideoSurfaceThresholdInPixels[] = - "use-external-video-surface-threshold-in-pixels"; -#endif - #if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_SOLARIS) // The Alsa device to use when opening an audio input stream. const char kAlsaInputDevice[] = "alsa-input-device"; diff --git a/media/base/media_switches.h b/media/base/media_switches.h index 0c7fa24..9a974b4 100644 --- a/media/base/media_switches.h +++ b/media/base/media_switches.h @@ -29,10 +29,6 @@ MEDIA_EXPORT extern const char kDisableInfobarForProtectedMediaIdentifier[]; MEDIA_EXPORT extern const char kMediaDrmEnableNonCompositing[]; #endif -#if defined(GOOGLE_TV) -MEDIA_EXPORT extern const char kUseExternalVideoSurfaceThresholdInPixels[]; -#endif - #if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_SOLARIS) MEDIA_EXPORT extern const char kAlsaInputDevice[]; MEDIA_EXPORT extern const char kAlsaOutputDevice[]; diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc index 6be1420..585d6af 100644 --- a/media/filters/source_buffer_stream.cc +++ b/media/filters/source_buffer_stream.cc @@ -322,19 +322,10 @@ static base::TimeDelta kSeekToStartFudgeRoom() { return base::TimeDelta::FromMilliseconds(1000); } // The maximum amount of data in bytes the stream will keep in memory. -#if defined(GOOGLE_TV) -// In Google TV, set the size of the buffer to 1 min because of -// the limited memory of the embedded system. -// 2MB: approximately 1 minutes of 256Kbps content. -// 30MB: approximately 1 minutes of 4Mbps content. -static int kDefaultAudioMemoryLimit = 2 * 1024 * 1024; -static int kDefaultVideoMemoryLimit = 30 * 1024 * 1024; -#else // 12MB: approximately 5 minutes of 320Kbps content. // 150MB: approximately 5 minutes of 4Mbps content. static int kDefaultAudioMemoryLimit = 12 * 1024 * 1024; static int kDefaultVideoMemoryLimit = 150 * 1024 * 1024; -#endif namespace media { diff --git a/media/media.gyp b/media/media.gyp index 7618cb6..a983499 100644 --- a/media/media.gyp +++ b/media/media.gyp @@ -879,11 +879,6 @@ 'base/simd/convert_yuv_to_rgb_x86.cc', ], }], - ['google_tv==1', { - 'defines': [ - 'ENABLE_EAC3_PLAYBACK', - ], - }], ['OS!="linux" and OS!="win"', { 'sources!': [ 'base/keyboard_event_counter.cc', diff --git a/third_party/widevine/cdm/widevine_cdm.gyp b/third_party/widevine/cdm/widevine_cdm.gyp index ab8b295..d094958 100644 --- a/third_party/widevine/cdm/widevine_cdm.gyp +++ b/third_party/widevine/cdm/widevine_cdm.gyp @@ -40,7 +40,7 @@ }], ], }], - [ 'OS == "android" and google_tv != 1', { + [ 'OS == "android"', { 'widevine_cdm_version_h_file%': 'android/widevine_cdm_version.h', }], diff --git a/webkit/common/user_agent/user_agent_util.cc b/webkit/common/user_agent/user_agent_util.cc index 7655d69..35e2016 100644 --- a/webkit/common/user_agent/user_agent_util.cc +++ b/webkit/common/user_agent/user_agent_util.cc @@ -35,11 +35,7 @@ std::string GetWebKitRevision() { #if defined(OS_ANDROID) std::string GetAndroidDeviceName() { - std::string android_device_name = base::SysInfo::GetDeviceName(); -#if defined(GOOGLE_TV) - android_device_name += " TV"; -#endif - return android_device_name; + return base::SysInfo::GetDeviceName(); } #endif |