Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index f06587d3fca12e18cef38ed4d0044236330bba09..f68099e0f818843a2854be3bb1805b3584321184 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -32,6 +32,7 @@ |
#include "base/strings/string_util.h" |
#include "base/strings/sys_string_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "base/sys_info.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "base/time/time.h" |
#include "base/trace_event/trace_event.h" |
@@ -175,6 +176,7 @@ |
#if defined(OS_ANDROID) |
#include <cpu-features.h> |
+#include "base/android/build_info.h" |
#include "content/renderer/android/address_detector.h" |
#include "content/renderer/android/content_detector.h" |
#include "content/renderer/android/disambiguation_popup_helper.h" |
@@ -1114,7 +1116,7 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, |
settings->setMediaPlaybackRequiresUserGesture( |
prefs.user_gesture_required_for_media_playback); |
settings->setDefaultVideoPosterURL( |
- base::ASCIIToUTF16(prefs.default_video_poster_url.spec())); |
+ base::ASCIIToUTF16(prefs.default_video_poster_url.spec())); |
settings->setSupportDeprecatedTargetDensityDPI( |
prefs.support_deprecated_target_density_dpi); |
settings->setUseLegacyBackgroundSizeShorthandBehavior( |
@@ -1142,8 +1144,17 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, |
static_cast<WebSettings::ProgressBarCompletion>( |
prefs.progress_bar_completion)); |
settings->setPreferHiddenVolumeControls(true); |
+ |
+ // Force preload=none and disable autoplay on older or low end Android |
+ // platforms because their media pipelines are not stable enough to handle |
+ // concurrent elements. See http://crbug.com/612909, http://crbug.com/622826. |
+ const bool is_low_end_device = |
+ base::android::BuildInfo::GetInstance()->sdk_int() <= |
+ base::android::SDK_VERSION_JELLY_BEAN_MR2 || |
+ base::SysInfo::IsLowEndDevice(); |
mlamouri (slow - plz ping)
2016/09/22 07:49:32
This ends up doing a Java call from the renderer/
|
+ settings->setForcePreloadNoneForMediaElements(is_low_end_device); |
WebRuntimeFeatures::enableAutoplayMutedVideos( |
- prefs.autoplay_muted_videos_enabled); |
+ prefs.autoplay_muted_videos_enabled && !is_low_end_device); |
#endif |
settings->setAutoplayExperimentMode( |