Merge "[WebView] Set back button to exit fullscreen." into m39
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc
index bfb42f5..80bef32 100644
--- a/android_webview/browser/aw_browser_context.cc
+++ b/android_webview/browser/aw_browser_context.cc
@@ -28,6 +28,7 @@
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "net/cookies/cookie_store.h"
+#include "net/proxy/proxy_config_service_android.h"
#include "net/proxy/proxy_service.h"
using base::FilePath;
@@ -45,6 +46,16 @@
AwBrowserContext* g_browser_context = NULL;
+net::ProxyConfigService* CreateProxyConfigService() {
+ net::ProxyConfigServiceAndroid* config_service =
+ static_cast<net::ProxyConfigServiceAndroid*>(
+ net::ProxyService::CreateSystemProxyConfigService(
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
+ nullptr /* Ignored on Android */ ));
+ config_service->set_exclude_pac_url(true);
+ return config_service;
+}
+
} // namespace
// Data reduction proxy is disabled by default.
@@ -112,10 +123,7 @@
data_reduction_proxy_config_service(
new DataReductionProxyConfigService(
scoped_ptr<net::ProxyConfigService>(
- net::ProxyService::CreateSystemProxyConfigService(
- BrowserThread::GetMessageLoopProxyForThread(
- BrowserThread::IO),
- NULL /* Ignored on Android */)).Pass()));
+ CreateProxyConfigService()).Pass()));
if (data_reduction_proxy_settings_.get()) {
data_reduction_proxy_configurator_.reset(
new data_reduction_proxy::DataReductionProxyConfigTracker(
diff --git a/android_webview/browser/net/aw_url_request_context_getter.cc b/android_webview/browser/net/aw_url_request_context_getter.cc
index 44c081d..97ca0f0 100644
--- a/android_webview/browser/net/aw_url_request_context_getter.cc
+++ b/android_webview/browser/net/aw_url_request_context_getter.cc
@@ -197,17 +197,18 @@
#if !defined(DISABLE_FTP_SUPPORT)
builder.set_ftp_enabled(false); // Android WebView does not support ftp yet.
#endif
- if (data_reduction_proxy_config_service_.get()) {
- builder.set_proxy_config_service(
- data_reduction_proxy_config_service_.release());
- } else {
- builder.set_proxy_config_service(
- net::ProxyService::CreateSystemProxyConfigService(
- GetNetworkTaskRunner(), NULL /* Ignored on Android */ ));
- }
+ DCHECK(data_reduction_proxy_config_service_.get());
+ // Android provides a local HTTP proxy that handles all the proxying.
+ // Create the proxy without a resolver since we rely on this local HTTP proxy.
+ // TODO(sgurun) is this behavior guaranteed through SDK?
+ builder.set_proxy_service(
+ net::ProxyService::CreateWithoutProxyResolver(
+ data_reduction_proxy_config_service_.release(),
+ net_log_.get()));
builder.set_accept_language(net::HttpUtil::GenerateAcceptLanguageHeader(
AwContentBrowserClient::GetAcceptLangsImpl()));
builder.set_net_log(net_log_.get());
+ builder.set_channel_id_enabled(false);
ApplyCmdlineOverridesToURLRequestContextBuilder(&builder);
url_request_context_.reset(builder.Build());
diff --git a/android_webview/browser/scoped_app_gl_state_restore.cc b/android_webview/browser/scoped_app_gl_state_restore.cc
index a36e061..c0226d1 100644
--- a/android_webview/browser/scoped_app_gl_state_restore.cc
+++ b/android_webview/browser/scoped_app_gl_state_restore.cc
@@ -294,6 +294,9 @@
glGetVertexAttribfv(
i, GL_CURRENT_VERTEX_ATTRIB, vertex_attrib_[i].current_vertex_attrib);
}
+
+ // Android 5.0.0 specific qualcomm workaround. See crbug.com/434570.
+ glBindRenderbufferEXT(GL_RENDERBUFFER, 0);
DCHECK(ClearGLErrors(false, NULL));
}
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index e853d9b..676a072 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -812,6 +812,9 @@
if (workarounds_.disable_egl_khr_fence_sync) {
gfx::g_driver_egl.ext.b_EGL_KHR_fence_sync = false;
}
+ if (workarounds_.disable_egl_khr_wait_sync) {
+ gfx::g_driver_egl.ext.b_EGL_KHR_wait_sync = false;
+ }
#endif
if (workarounds_.disable_arb_sync)
gfx::g_driver_gl.ext.b_GL_ARB_sync = false;
diff --git a/gpu/config/gpu_driver_bug_list_json.cc b/gpu/config/gpu_driver_bug_list_json.cc
index bd7f0f7..82bd576 100644
--- a/gpu/config/gpu_driver_bug_list_json.cc
+++ b/gpu/config/gpu_driver_bug_list_json.cc
@@ -19,7 +19,7 @@
{
"name": "gpu driver bug list",
// Please update the version number whenever you change this file.
- "version": "7.7",
+ "version": "7.8",
"entries": [
{
"id": 1,
@@ -1057,6 +1057,27 @@
"features": [
"disable_async_readpixels"
]
+ },
+ {
+ "id": 94,
+ "description": "Disable EGL_KHR_wait_sync on NVIDIA with GLES 3.1",
+ "cr_bugs": [433057],
+ "os": {
+ "type": "android",
+ "version": {
+ "op": "<=",
+ "value": "5.0.1"
+ }
+ },
+ "gl_vendor": "NVIDIA.*",
+ "gl_type": "gles",
+ "gl_version": {
+ "op": "=",
+ "value": "3.1"
+ },
+ "features": [
+ "disable_egl_khr_wait_sync"
+ ]
}
]
}
diff --git a/gpu/config/gpu_driver_bug_workaround_type.h b/gpu/config/gpu_driver_bug_workaround_type.h
index 0d9f200..1c497ea 100644
--- a/gpu/config/gpu_driver_bug_workaround_type.h
+++ b/gpu/config/gpu_driver_bug_workaround_type.h
@@ -28,6 +28,8 @@
disable_depth_texture) \
GPU_OP(DISABLE_EGL_KHR_FENCE_SYNC, \
disable_egl_khr_fence_sync) \
+ GPU_OP(DISABLE_EGL_KHR_WAIT_SYNC, \
+ disable_egl_khr_wait_sync) \
GPU_OP(DISABLE_EXT_DISCARD_FRAMEBUFFER, \
disable_ext_discard_framebuffer) \
GPU_OP(DISABLE_EXT_DRAW_BUFFERS, \
diff --git a/net/proxy/proxy_config_service_android.cc b/net/proxy/proxy_config_service_android.cc
index 2dcffdc..3771a58 100644
--- a/net/proxy/proxy_config_service_android.cc
+++ b/net/proxy/proxy_config_service_android.cc
@@ -197,7 +197,8 @@
: jni_delegate_(this),
network_task_runner_(network_task_runner),
jni_task_runner_(jni_task_runner),
- get_property_callback_(get_property_callback) {
+ get_property_callback_(get_property_callback),
+ exclude_pac_url_(false) {
}
void SetupJNI() {
@@ -271,13 +272,22 @@
const std::vector<std::string>& exclusion_list) {
DCHECK(OnJNIThread());
ProxyConfig proxy_config;
- CreateStaticProxyConfig(host, port, pac_url, exclusion_list, &proxy_config);
+ if (exclude_pac_url_) {
+ CreateStaticProxyConfig(host, port, "", exclusion_list, &proxy_config);
+ } else {
+ CreateStaticProxyConfig(host, port, pac_url, exclusion_list,
+ &proxy_config);
+ }
network_task_runner_->PostTask(
FROM_HERE,
base::Bind(
&Delegate::SetNewConfigOnNetworkThread, this, proxy_config));
}
+ void set_exclude_pac_url(bool enabled) {
+ exclude_pac_url_ = enabled;
+ }
+
private:
friend class base::RefCountedThreadSafe<Delegate>;
@@ -344,6 +354,7 @@
scoped_refptr<base::SequencedTaskRunner> jni_task_runner_;
GetPropertyCallback get_property_callback_;
ProxyConfig proxy_config_;
+ bool exclude_pac_url_;
DISALLOW_COPY_AND_ASSIGN(Delegate);
};
@@ -366,6 +377,10 @@
return RegisterNativesImpl(env);
}
+void ProxyConfigServiceAndroid::set_exclude_pac_url(bool enabled) {
+ delegate_->set_exclude_pac_url(enabled);
+}
+
void ProxyConfigServiceAndroid::AddObserver(Observer* observer) {
delegate_->AddObserver(observer);
}
diff --git a/net/proxy/proxy_config_service_android.h b/net/proxy/proxy_config_service_android.h
index bb8b592..4f25696 100644
--- a/net/proxy/proxy_config_service_android.h
+++ b/net/proxy/proxy_config_service_android.h
@@ -64,6 +64,11 @@
// Register JNI bindings.
static bool Register(JNIEnv* env);
+ // Android provides a local HTTP proxy that does PAC resolution. When this
+ // setting is enabled, the proxy config service ignores the PAC URL and uses
+ // the local proxy for all proxy resolution.
+ void set_exclude_pac_url(bool enabled);
+
// ProxyConfigService:
// Called only on the network thread.
virtual void AddObserver(Observer* observer) OVERRIDE;
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
index a7f5a0b..f687699 100644
--- a/net/url_request/url_request_context_builder.cc
+++ b/net/url_request/url_request_context_builder.cc
@@ -218,7 +218,8 @@
ftp_enabled_(false),
#endif
http_cache_enabled_(true),
- throttling_enabled_(false) {
+ throttling_enabled_(false),
+ channel_id_enabled_(true) {
}
URLRequestContextBuilder::~URLRequestContextBuilder() {}
@@ -300,12 +301,14 @@
storage->set_http_auth_handler_factory(http_auth_handler_registry_factory);
storage->set_cookie_store(new CookieMonster(NULL, NULL));
- // TODO(mmenke): This always creates a file thread, even when it ends up
- // not being used. Consider lazily creating the thread.
- storage->set_channel_id_service(
- new ChannelIDService(
- new DefaultChannelIDStore(NULL),
- context->GetFileThread()->message_loop_proxy()));
+ if (channel_id_enabled_) {
+ // TODO(mmenke): This always creates a file thread, even when it ends up
+ // not being used. Consider lazily creating the thread.
+ storage->set_channel_id_service(
+ new ChannelIDService(
+ new DefaultChannelIDStore(NULL),
+ context->GetFileThread()->message_loop_proxy()));
+ }
storage->set_transport_security_state(new net::TransportSecurityState());
if (!transport_security_persister_path_.empty()) {
diff --git a/net/url_request/url_request_context_builder.h b/net/url_request/url_request_context_builder.h
index 9053372..233918c 100644
--- a/net/url_request/url_request_context_builder.h
+++ b/net/url_request/url_request_context_builder.h
@@ -166,6 +166,10 @@
throttling_enabled_ = throttling_enabled;
}
+ void set_channel_id_enabled(bool enable) {
+ channel_id_enabled_ = enable;
+ }
+
URLRequestContext* Build();
private:
@@ -192,6 +196,7 @@
#endif
bool http_cache_enabled_;
bool throttling_enabled_;
+ bool channel_id_enabled_;
HttpCacheParams http_cache_params_;
HttpNetworkSessionParams http_network_session_params_;
diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py
index 75f55c7..c8da16c 100755
--- a/ui/gl/generate_bindings.py
+++ b/ui/gl/generate_bindings.py
@@ -1079,7 +1079,7 @@
'EGLuint64CHROMIUM* sbc', },
{ 'return_type': 'EGLint',
'versions': [{ 'name': 'eglWaitSyncKHR',
- 'extensions': ['EGL_KHR_fence_sync'] }],
+ 'extensions': ['EGL_KHR_fence_sync', 'EGL_KHR_wait_sync'] }],
'arguments': 'EGLDisplay dpy, EGLSyncKHR sync, EGLint flags' }
]
diff --git a/ui/gl/gl_fence_egl.cc b/ui/gl/gl_fence_egl.cc
index ebc33bf..2ff18fc 100644
--- a/ui/gl/gl_fence_egl.cc
+++ b/ui/gl/gl_fence_egl.cc
@@ -42,6 +42,10 @@
}
void GLFenceEGL::ServerWait() {
+ if (!gfx::g_driver_egl.ext.b_EGL_KHR_wait_sync) {
+ ClientWait();
+ return;
+ }
if (!flush_event_.get() || flush_event_->IsSignaled()) {
EGLint flags = 0;
eglWaitSyncKHR(display_, sync_, flags);