Update to Chromium revision fea84635 (#321386)

- Use a separate utility process for V8 proxy resolution (see http://crbug.com/11746).
This commit is contained in:
Marshall Greenblatt 2015-03-19 18:06:16 -04:00
parent aaab7bdb35
commit d7f7c61ddd
34 changed files with 137 additions and 266 deletions

View File

@ -7,5 +7,5 @@
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
{
'chromium_checkout': '47fb4821713cf85fce53c5bae575343e97041681',
'chromium_checkout': 'fea846358e7c2efe04bdeb4b01ecccee6efe7759',
}

View File

@ -860,7 +860,7 @@
'<(DEPTH)/base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
'<(DEPTH)/cc/blink/cc_blink.gyp:cc_blink',
'<(DEPTH)/cc/cc.gyp:cc',
'<(DEPTH)/components/components.gyp:crash_component',
'<(DEPTH)/components/components.gyp:crash_component_breakpad_mac_to_be_deleted',
'<(DEPTH)/components/components.gyp:keyed_service_content',
'<(DEPTH)/components/components.gyp:keyed_service_core',
'<(DEPTH)/components/components.gyp:navigation_interception',
@ -883,6 +883,7 @@
'<(DEPTH)/media/blink/media_blink.gyp:media_blink',
'<(DEPTH)/media/media.gyp:media',
'<(DEPTH)/net/net.gyp:net',
'<(DEPTH)/net/net.gyp:net_browser_services',
'<(DEPTH)/net/net.gyp:net_with_v8',
'<(DEPTH)/skia/skia.gyp:skia',
'<(DEPTH)/storage/storage_browser.gyp:storage',
@ -1121,6 +1122,8 @@
'<(DEPTH)/chrome/browser/net/pref_proxy_config_tracker_impl.h',
'<(DEPTH)/chrome/browser/net/proxy_service_factory.cc',
'<(DEPTH)/chrome/browser/net/proxy_service_factory.h',
'<(DEPTH)/chrome/browser/net/utility_process_mojo_proxy_resolver_factory.cc',
'<(DEPTH)/chrome/browser/net/utility_process_mojo_proxy_resolver_factory.h',
'<(DEPTH)/chrome/browser/prefs/command_line_pref_store.cc',
'<(DEPTH)/chrome/browser/prefs/command_line_pref_store.h',
'<(DEPTH)/chrome/browser/prefs/proxy_config_dictionary.cc',

View File

@ -62,7 +62,7 @@ void WriteTempFileAndView(scoped_refptr<base::RefCountedString> str) {
int write_ct = base::WriteFile(tmp_file, data.c_str(), data.size());
DCHECK_EQ(static_cast<int>(data.size()), write_ct);
ui::win::OpenItemViaShell(tmp_file);
ui::win::OpenFileViaShell(tmp_file);
}
// From ui/base/dialogs/select_file_dialog_win.cc.

View File

@ -72,6 +72,11 @@ chrome_variations::VariationsService*
return NULL;
}
PromoResourceService* ChromeBrowserProcessStub::promo_resource_service() {
NOTIMPLEMENTED();
return NULL;
}
BrowserProcessPlatformPart* ChromeBrowserProcessStub::platform_part() {
NOTIMPLEMENTED();
return NULL;
@ -217,11 +222,6 @@ ChromeNetLog* ChromeBrowserProcessStub::net_log() {
return NULL;
}
prerender::PrerenderTracker* ChromeBrowserProcessStub::prerender_tracker() {
NOTIMPLEMENTED();
return NULL;
}
component_updater::ComponentUpdateService*
ChromeBrowserProcessStub::component_updater() {
NOTIMPLEMENTED();

View File

@ -40,6 +40,7 @@ class ChromeBrowserProcessStub : public BrowserProcess {
PrefService* local_state() override;
net::URLRequestContextGetter* system_request_context() override;
chrome_variations::VariationsService* variations_service() override;
PromoResourceService* promo_resource_service() override;
BrowserProcessPlatformPart* platform_part() override;
extensions::EventRouterForwarder*
extension_event_router_forwarder() override;
@ -80,7 +81,6 @@ class ChromeBrowserProcessStub : public BrowserProcess {
#endif
ChromeNetLog* net_log() override;
prerender::PrerenderTracker* prerender_tracker() override;
component_updater::ComponentUpdateService*
component_updater() override;
CRLSetFetcher* crl_set_fetcher() override;

View File

@ -184,8 +184,7 @@ class CefAllowCertificateErrorCallbackImpl
class CefGeolocationCallbackImpl : public CefGeolocationCallback {
public:
typedef base::Callback<void(bool)> // NOLINT(readability/function)
CallbackType;
typedef base::Callback<void(content::PermissionStatus)> CallbackType;
explicit CefGeolocationCallbackImpl(const CallbackType& callback)
: callback_(callback) {}
@ -198,7 +197,8 @@ class CefGeolocationCallbackImpl : public CefGeolocationCallback {
UserDidOptIntoLocationServices();
}
callback_.Run(allow);
callback_.Run(allow ? content::PERMISSION_STATUS_GRANTED :
content::PERMISSION_STATUS_DENIED);
callback_.Reset();
}
} else {
@ -212,9 +212,10 @@ class CefGeolocationCallbackImpl : public CefGeolocationCallback {
}
private:
static void Run(const CallbackType& callback, bool allow) {
static void Run(const CallbackType& callback,
content::PermissionStatus status) {
CEF_REQUIRE_UIT();
callback.Run(allow);
callback.Run(status);
}
CallbackType callback_;
@ -767,11 +768,11 @@ void CefContentBrowserClient::RequestPermission(
int bridge_id,
const GURL& requesting_frame,
bool user_gesture,
const base::Callback<void(bool)>& result_callback) {
const base::Callback<void(content::PermissionStatus)>& result_callback) {
CEF_REQUIRE_UIT();
if (permission != content::PermissionType::PERMISSION_GEOLOCATION) {
result_callback.Run(false);
result_callback.Run(content::PERMISSION_STATUS_DENIED);
return;
}
@ -800,7 +801,7 @@ void CefContentBrowserClient::RequestPermission(
if (!proceed) {
// Disallow geolocation access by default.
result_callback.Run(false);
result_callback.Run(content::PERMISSION_STATUS_DENIED);
}
}

View File

@ -112,11 +112,12 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
int bridge_id,
const GURL& requesting_frame,
bool user_gesture,
const base::Callback<void(bool)>& result_callback) override;
const base::Callback<void(content::PermissionStatus)>& result_callback)
override;
void CancelPermissionRequest(content::PermissionType permission,
content::WebContents* web_contents,
int bridge_id,
const GURL& requesting_frame) override;
content::WebContents* web_contents,
int bridge_id,
const GURL& requesting_frame) override;
bool CanCreateWindow(const GURL& opener_url,
const GURL& opener_top_level_frame_url,
const GURL& source_origin,

View File

@ -19,7 +19,6 @@
#include "base/logging.h"
#include "base/threading/thread_restrictions.h"
#include "content/browser/net/sqlite_persistent_cookie_store.h"
#include "content/public/browser/cookie_crypto_delegate.h"
#include "net/cookies/cookie_util.h"
#include "net/cookies/parsed_cookie.h"
#include "net/url_request/url_request_context.h"

View File

@ -112,17 +112,19 @@ CefDevToolsFrontend* CefDevToolsFrontend::Show(
inspected_browser->GetWindowHandle(), true,
inspected_browser->GetRequestContext());
scoped_refptr<content::DevToolsAgentHost> agent_host =
content::DevToolsAgentHost::GetOrCreateFor(
inspected_browser->GetWebContents());
if (!inspect_element_at.IsEmpty())
content::WebContents* inspected_contents =
inspected_browser->GetWebContents();
if (!inspect_element_at.IsEmpty()) {
scoped_refptr<content::DevToolsAgentHost> agent_host =
content::DevToolsAgentHost::GetOrCreateFor(inspected_contents);
agent_host->InspectElement(inspect_element_at.x, inspect_element_at.y);
}
// CefDevToolsFrontend will delete itself when the frontend WebContents is
// destroyed.
CefDevToolsFrontend* devtools_frontend = new CefDevToolsFrontend(
static_cast<CefBrowserHostImpl*>(frontend_browser.get()),
agent_host.get());
inspected_contents);
// Need to load the URL after creating the DevTools objects.
CefDevToolsDelegate* delegate =
@ -163,10 +165,10 @@ void CefDevToolsFrontend::DisconnectFromTarget() {
CefDevToolsFrontend::CefDevToolsFrontend(
CefRefPtr<CefBrowserHostImpl> frontend_browser,
content::DevToolsAgentHost* agent_host)
content::WebContents* inspected_contents)
: WebContentsObserver(frontend_browser->GetWebContents()),
frontend_browser_(frontend_browser),
agent_host_(agent_host),
inspected_contents_(inspected_contents),
weak_factory_(this) {
}
@ -184,11 +186,10 @@ void CefDevToolsFrontend::RenderViewCreated(
}
}
void CefDevToolsFrontend::DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) {
if (agent_host_)
agent_host_->AttachClient(this);
void CefDevToolsFrontend::DocumentAvailableInMainFrame() {
agent_host_ =
content::DevToolsAgentHost::GetOrCreateFor(inspected_contents_);
agent_host_->AttachClient(this);
}
void CefDevToolsFrontend::WebContentsDestroyed() {
@ -340,11 +341,6 @@ void CefDevToolsFrontend::SendMessageAck(int request_id,
&id_value, arg, nullptr);
}
void CefDevToolsFrontend::AttachTo(content::WebContents* inspected_contents) {
DisconnectFromTarget();
agent_host_ = content::DevToolsAgentHost::GetOrCreateFor(inspected_contents);
}
void CefDevToolsFrontend::AgentHostClosed(
content::DevToolsAgentHost* agent_host,
bool replaced) {

View File

@ -56,7 +56,7 @@ class CefDevToolsFrontend : public content::WebContentsObserver,
private:
CefDevToolsFrontend(CefRefPtr<CefBrowserHostImpl> frontend_browser,
content::DevToolsAgentHost* agent_host);
content::WebContents* inspected_contents);
~CefDevToolsFrontend() override;
// content::DevToolsAgentHostClient implementation.
@ -64,13 +64,10 @@ class CefDevToolsFrontend : public content::WebContentsObserver,
bool replaced) override;
void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host,
const std::string& message) override;
void AttachTo(content::WebContents* inspected_contents);
// WebContentsObserver overrides
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
void DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) override;
void DocumentAvailableInMainFrame() override;
void WebContentsDestroyed() override;
// content::DevToolsFrontendHost::Delegate implementation.
@ -85,6 +82,7 @@ class CefDevToolsFrontend : public content::WebContentsObserver,
const base::Value* arg1);
CefRefPtr<CefBrowserHostImpl> frontend_browser_;
content::WebContents* inspected_contents_;
scoped_refptr<content::DevToolsAgentHost> agent_host_;
scoped_ptr<content::DevToolsFrontendHost> frontend_host_;
using PendingRequestsMap = std::map<const net::URLFetcher*, int>;

View File

@ -187,8 +187,7 @@ void PrintViewManagerBase::OnPrintingFailed(int cookie) {
void PrintViewManagerBase::OnShowInvalidPrinterSettingsError() {
}
void PrintViewManagerBase::DidStartLoading(
content::RenderViewHost* render_view_host) {
void PrintViewManagerBase::DidStartLoading() {
UpdateScriptedPrintingBlocked();
}

View File

@ -70,8 +70,7 @@ class PrintViewManagerBase : public content::NotificationObserver,
const content::NotificationDetails& details) override;
// content::WebContentsObserver implementation.
void DidStartLoading(
content::RenderViewHost* render_view_host) override;
void DidStartLoading() override;
// Cancels the print job.
void NavigationStopped() override;

View File

@ -294,12 +294,17 @@ void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() {
[content_view setWantsLayer:YES];
browser_compositor_ = content::BrowserCompositorMac::Create();
compositor_.reset(browser_compositor_->compositor());
compositor_->SetRootLayer(root_layer_.get());
browser_compositor_->accelerated_widget_mac()->SetNSView(this);
browser_compositor_->compositor()->SetVisible(true);
DCHECK(compositor_);
// CEF needs the browser compositor to remain responsive whereas normal
// rendering on OS X does not. This effectively reverts the changes from
// https://crbug.com/463988#c6
compositor_->SetLocksWillTimeOut(true);
browser_compositor_->Unsuspend();
}
void CefRenderWidgetHostViewOSR::PlatformDestroyCompositorWidget() {

View File

@ -27,7 +27,6 @@
#include "chrome/browser/net/proxy_service_factory.h"
#include "content/browser/net/sqlite_persistent_cookie_store.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/cookie_crypto_delegate.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/url_constants.h"

View File

@ -24,6 +24,7 @@
#include "content/public/renderer/document_state.h"
#include "content/public/renderer/navigation_state.h"
#include "content/public/renderer/render_view.h"
#include "content/renderer/navigation_state_impl.h"
#include "content/renderer/render_view_impl.h"
#include "net/http/http_util.h"
#include "third_party/WebKit/public/platform/WebString.h"
@ -582,8 +583,10 @@ void CefBrowserImpl::DidCreateDataSource(blink::WebLocalFrame* frame,
content::DocumentState* document_state =
content::DocumentState::FromDataSource(ds);
document_state->set_navigation_state(
content::NavigationState::CreateBrowserInitiated(-1, -1, false,
ui::PAGE_TRANSITION_LINK));
content::NavigationStateImpl::CreateBrowserInitiated(
content::CommonNavigationParams(),
content::StartNavigationParams(),
content::HistoryNavigationParams()));
}
if (frame->parent() == 0) {

View File

@ -624,8 +624,10 @@ bool CefContentRendererClient::HandleNavigation(
}
void CefContentRendererClient::DidCreateScriptContext(
blink::WebFrame* frame, v8::Handle<v8::Context> context,
int extension_group, int world_id) {
blink::WebLocalFrame* frame,
v8::Handle<v8::Context> context,
int extension_group,
int world_id) {
CefRefPtr<CefBrowserImpl> browserPtr =
CefBrowserImpl::GetBrowserForMainFrame(frame->top());
DCHECK(browserPtr.get());

View File

@ -94,7 +94,7 @@ class CefContentRendererClient : public content::ContentRendererClient,
blink::WebNavigationType type,
blink::WebNavigationPolicy default_policy,
bool is_redirect) override;
void DidCreateScriptContext(blink::WebFrame* frame,
void DidCreateScriptContext(blink::WebLocalFrame* frame,
v8::Handle<v8::Context> context,
int extension_group,
int world_id) override;

View File

@ -7,7 +7,9 @@
#include "chrome/common/chrome_utility_messages.h"
#include "chrome/utility/utility_message_handler.h"
#include "content/public/common/service_registry.h"
#include "content/public/utility/utility_thread.h"
#include "net/proxy/mojo_proxy_resolver_factory_impl.h"
#if defined(OS_WIN)
#include "libcef/utility/printing_handler.h"
@ -19,6 +21,15 @@ bool Send(IPC::Message* message) {
return content::UtilityThread::Get()->Send(message);
}
void CreateProxyResolverFactory(
mojo::InterfaceRequest<net::interfaces::ProxyResolverFactory> request) {
// MojoProxyResolverFactoryImpl is strongly bound to the Mojo message pipe it
// is connected to. When that message pipe is closed, either explicitly on the
// other end (in the browser process), or by a connection error, this object
// will be destroyed.
new net::MojoProxyResolverFactoryImpl(request.Pass());
}
} // namespace
CefContentUtilityClient::CefContentUtilityClient() {
@ -47,6 +58,12 @@ bool CefContentUtilityClient::OnMessageReceived(
return handled;
}
void CefContentUtilityClient::RegisterMojoServices(
content::ServiceRegistry* registry) {
registry->AddService<net::interfaces::ProxyResolverFactory>(
base::Bind(CreateProxyResolverFactory));
}
void CefContentUtilityClient::OnStartupPing() {
Send(new ChromeUtilityHostMsg_ProcessStarted);
// Don't release the process, we assume further messages are on the way.

View File

@ -17,6 +17,7 @@ class CefContentUtilityClient : public content::ContentUtilityClient {
~CefContentUtilityClient() override;
bool OnMessageReceived(const IPC::Message& message) override;
void RegisterMojoServices(content::ServiceRegistry* registry) override;
private:
// IPC message handlers.

View File

@ -129,13 +129,6 @@ patches = [
'name': 'base_atomicops_455263',
'path': '../base/allocator/',
},
{
# Fix assertion on Linux when ProxyConfigServiceLinux is deleted on the IO
# thread.
# https://code.google.com/p/chromium/issues/detail?id=462624
'name': 'net_proxy_462624',
'path': '../net/proxy/',
},
{
# Make URLRequest::set_is_pending() public so that it can be called from
# CefRequestInterceptor::MaybeInterceptResponse().

View File

@ -1,8 +1,8 @@
diff --git web_contents_impl.cc web_contents_impl.cc
index ede1642..9a7d93b 100644
index 8dd4307..e3a6baa 100644
--- web_contents_impl.cc
+++ web_contents_impl.cc
@@ -1212,22 +1212,29 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
@@ -1269,22 +1269,29 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
params.browser_context, params.site_instance, params.routing_id,
params.main_frame_routing_id);
@ -48,7 +48,7 @@ index ede1642..9a7d93b 100644
}
CHECK(render_view_host_delegate_view_);
CHECK(view_.get());
@@ -1576,6 +1583,9 @@ void WebContentsImpl::CreateNewWindow(
@@ -1640,6 +1647,9 @@ void WebContentsImpl::CreateNewWindow(
static_cast<SessionStorageNamespaceImpl*>(session_storage_namespace);
CHECK(session_storage_namespace_impl->IsFromContext(dom_storage_context));
@ -58,7 +58,7 @@ index ede1642..9a7d93b 100644
if (delegate_ &&
!delegate_->ShouldCreateWebContents(this,
route_id,
@@ -1584,7 +1594,9 @@ void WebContentsImpl::CreateNewWindow(
@@ -1648,7 +1658,9 @@ void WebContentsImpl::CreateNewWindow(
params.frame_name,
params.target_url,
partition_id,
@ -69,7 +69,7 @@ index ede1642..9a7d93b 100644
if (route_id != MSG_ROUTING_NONE &&
!RenderViewHost::FromID(render_process_id, route_id)) {
// If the embedder didn't create a WebContents for this route, we need to
@@ -1604,6 +1616,8 @@ void WebContentsImpl::CreateNewWindow(
@@ -1668,6 +1680,8 @@ void WebContentsImpl::CreateNewWindow(
create_params.main_frame_routing_id = main_frame_route_id;
create_params.opener = this;
create_params.opener_suppressed = params.opener_suppressed;

View File

@ -1,5 +1,5 @@
diff --git common.gypi common.gypi
index 4fcd211..9bfa165 100644
index e32eae2..46c355a 100644
--- common.gypi
+++ common.gypi
@@ -9,6 +9,9 @@

View File

@ -1,8 +1,8 @@
diff --git ui/browser.cc ui/browser.cc
index 53dfccd..771bd25 100644
index 21e292e..074b41e 100644
--- ui/browser.cc
+++ ui/browser.cc
@@ -1578,7 +1578,9 @@ bool Browser::ShouldCreateWebContents(
@@ -1596,7 +1596,9 @@ bool Browser::ShouldCreateWebContents(
const base::string16& frame_name,
const GURL& target_url,
const std::string& partition_id,

View File

@ -1,8 +1,8 @@
diff --git content/browser/compositor/gpu_process_transport_factory.cc content/browser/compositor/gpu_process_transport_factory.cc
index 3658c25..74acc61 100644
index dfb1041..4a4b14d 100644
--- content/browser/compositor/gpu_process_transport_factory.cc
+++ content/browser/compositor/gpu_process_transport_factory.cc
@@ -98,6 +98,13 @@ GpuProcessTransportFactory::CreateOffscreenCommandBufferContext() {
@@ -100,6 +100,13 @@ GpuProcessTransportFactory::CreateOffscreenCommandBufferContext() {
scoped_ptr<cc::SoftwareOutputDevice> CreateSoftwareOutputDevice(
ui::Compositor* compositor) {
@ -17,7 +17,7 @@ index 3658c25..74acc61 100644
return scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareOutputDeviceWin(
compositor));
diff --git ui/compositor/compositor.h ui/compositor/compositor.h
index 47d4cd0..793bbe3 100644
index 3a3e4cc..9fed916 100644
--- ui/compositor/compositor.h
+++ ui/compositor/compositor.h
@@ -13,6 +13,7 @@
@ -28,7 +28,7 @@ index 47d4cd0..793bbe3 100644
#include "cc/surfaces/surface_sequence.h"
#include "cc/trees/layer_tree_host_client.h"
#include "cc/trees/layer_tree_host_single_thread_client.h"
@@ -131,6 +132,17 @@ class COMPOSITOR_EXPORT CompositorLock
@@ -132,6 +133,17 @@ class COMPOSITOR_EXPORT CompositorLock
DISALLOW_COPY_AND_ASSIGN(CompositorLock);
};
@ -46,7 +46,7 @@ index 47d4cd0..793bbe3 100644
// Compositor object to take care of GPU painting.
// A Browser compositor object is responsible for generating the final
// displayable form of pixels comprising a single widget's contents. It draws an
@@ -152,6 +164,9 @@ class COMPOSITOR_EXPORT Compositor
@@ -153,6 +165,9 @@ class COMPOSITOR_EXPORT Compositor
// Schedules a redraw of the layer tree associated with this compositor.
void ScheduleDraw();
@ -56,7 +56,7 @@ index 47d4cd0..793bbe3 100644
// Sets the root of the layer tree drawn by this Compositor. The root layer
// must have no parent. The compositor's root layer is reset if the root layer
// is destroyed. NULL can be passed to reset the root layer, in which case the
@@ -297,6 +312,8 @@ class COMPOSITOR_EXPORT Compositor
@@ -305,6 +320,8 @@ class COMPOSITOR_EXPORT Compositor
ui::ContextFactory* context_factory_;

View File

@ -1,5 +1,5 @@
diff --git public/renderer/content_renderer_client.cc public/renderer/content_renderer_client.cc
index b56613e..b384eac 100644
index 6e66fe3..32957fc 100644
--- public/renderer/content_renderer_client.cc
+++ public/renderer/content_renderer_client.cc
@@ -99,7 +99,6 @@ bool ContentRendererClient::AllowPopup() {
@ -19,7 +19,7 @@ index b56613e..b384eac 100644
bool ContentRendererClient::ShouldFork(blink::WebFrame* frame,
const GURL& url,
diff --git public/renderer/content_renderer_client.h public/renderer/content_renderer_client.h
index 7889016..21307b6 100644
index 45176ab..07de846 100644
--- public/renderer/content_renderer_client.h
+++ public/renderer/content_renderer_client.h
@@ -193,7 +193,6 @@ class CONTENT_EXPORT ContentRendererClient {
@ -39,10 +39,10 @@ index 7889016..21307b6 100644
// Returns true if we should fork a new process for the given navigation.
// If |send_referrer| is set to false (which is the default), no referrer
diff --git renderer/render_frame_impl.cc renderer/render_frame_impl.cc
index 1e3667f..87b2ec4 100644
index 88c7bd4..70122f8 100644
--- renderer/render_frame_impl.cc
+++ renderer/render_frame_impl.cc
@@ -3906,7 +3906,6 @@ void RenderFrameImpl::OnCommitNavigation(
@@ -4006,7 +4006,6 @@ void RenderFrameImpl::OnCommitNavigation(
WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
RenderFrame* render_frame,
const NavigationPolicyInfo& info) {
@ -50,7 +50,7 @@ index 1e3667f..87b2ec4 100644
// The handlenavigation API is deprecated and will be removed once
// crbug.com/325351 is resolved.
if (info.urlRequest.url() != GURL(kSwappedOutURL) &&
@@ -3921,7 +3920,6 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
@@ -4021,7 +4020,6 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
info.isRedirect)) {
return blink::WebNavigationPolicyIgnore;
}

View File

@ -1,5 +1,5 @@
diff --git resource_ids resource_ids
index efd5760..62dd7b0 100644
index a64ae83..b32c534 100644
--- resource_ids
+++ resource_ids
@@ -14,6 +14,12 @@

View File

@ -1,8 +1,8 @@
diff --git gyp/generator/ninja.py gyp/generator/ninja.py
index 587bf32..c9868db 100644
index 09df83f..f2f7cd1 100644
--- gyp/generator/ninja.py
+++ gyp/generator/ninja.py
@@ -748,7 +748,16 @@ class NinjaWriter(object):
@@ -738,7 +738,16 @@ class NinjaWriter(object):
for path in copy['files']:
# Normalize the path so trailing slashes don't confuse us.
path = os.path.normpath(path)

View File

@ -1,130 +0,0 @@
diff --git proxy_config_service_linux.cc proxy_config_service_linux.cc
index e0a9372..be8068d 100644
--- proxy_config_service_linux.cc
+++ proxy_config_service_linux.cc
@@ -202,8 +202,11 @@ const int kDebounceTimeoutMilliseconds = 250;
class SettingGetterImplGConf : public ProxyConfigServiceLinux::SettingGetter {
public:
SettingGetterImplGConf()
- : client_(NULL), system_proxy_id_(0), system_http_proxy_id_(0),
- notify_delegate_(NULL) {
+ : client_(NULL),
+ system_proxy_id_(0),
+ system_http_proxy_id_(0),
+ notify_delegate_(NULL),
+ debounce_timer_(new base::OneShotTimer<SettingGetterImplGConf>()) {
}
~SettingGetterImplGConf() override {
@@ -287,6 +290,7 @@ class SettingGetterImplGConf : public ProxyConfigServiceLinux::SettingGetter {
client_ = NULL;
task_runner_ = NULL;
}
+ debounce_timer_.reset();
}
bool SetUpNotifications(
@@ -475,8 +479,8 @@ class SettingGetterImplGConf : public ProxyConfigServiceLinux::SettingGetter {
void OnChangeNotification() {
// We don't use Reset() because the timer may not yet be running.
// (In that case Stop() is a no-op.)
- debounce_timer_.Stop();
- debounce_timer_.Start(FROM_HERE,
+ debounce_timer_->Stop();
+ debounce_timer_->Start(FROM_HERE,
base::TimeDelta::FromMilliseconds(kDebounceTimeoutMilliseconds),
this, &SettingGetterImplGConf::OnDebouncedNotification);
}
@@ -499,7 +503,7 @@ class SettingGetterImplGConf : public ProxyConfigServiceLinux::SettingGetter {
guint system_http_proxy_id_;
ProxyConfigServiceLinux::Delegate* notify_delegate_;
- base::OneShotTimer<SettingGetterImplGConf> debounce_timer_;
+ scoped_ptr<base::OneShotTimer<SettingGetterImplGConf> > debounce_timer_;
// Task runner for the thread that we make gconf calls on. It should
// be the UI thread and all our methods should be called on this
@@ -523,7 +527,8 @@ class SettingGetterImplGSettings
https_client_(NULL),
ftp_client_(NULL),
socks_client_(NULL),
- notify_delegate_(NULL) {
+ notify_delegate_(NULL),
+ debounce_timer_(new base::OneShotTimer<SettingGetterImplGSettings>()) {
}
~SettingGetterImplGSettings() override {
@@ -598,6 +603,7 @@ class SettingGetterImplGSettings
client_ = NULL;
task_runner_ = NULL;
}
+ debounce_timer_.reset();
}
bool SetUpNotifications(
@@ -746,8 +752,8 @@ class SettingGetterImplGSettings
void OnChangeNotification() {
// We don't use Reset() because the timer may not yet be running.
// (In that case Stop() is a no-op.)
- debounce_timer_.Stop();
- debounce_timer_.Start(FROM_HERE,
+ debounce_timer_->Stop();
+ debounce_timer_->Start(FROM_HERE,
base::TimeDelta::FromMilliseconds(kDebounceTimeoutMilliseconds),
this, &SettingGetterImplGSettings::OnDebouncedNotification);
}
@@ -768,7 +774,7 @@ class SettingGetterImplGSettings
GSettings* ftp_client_;
GSettings* socks_client_;
ProxyConfigServiceLinux::Delegate* notify_delegate_;
- base::OneShotTimer<SettingGetterImplGSettings> debounce_timer_;
+ scoped_ptr<base::OneShotTimer<SettingGetterImplGSettings> > debounce_timer_;
// Task runner for the thread that we make gsettings calls on. It should
// be the UI thread and all our methods should be called on this
@@ -852,9 +858,14 @@ class SettingGetterImplKDE : public ProxyConfigServiceLinux::SettingGetter,
public base::MessagePumpLibevent::Watcher {
public:
explicit SettingGetterImplKDE(base::Environment* env_var_getter)
- : inotify_fd_(-1), notify_delegate_(NULL), indirect_manual_(false),
- auto_no_pac_(false), reversed_bypass_list_(false),
- env_var_getter_(env_var_getter), file_task_runner_(NULL) {
+ : inotify_fd_(-1),
+ notify_delegate_(NULL),
+ debounce_timer_(new base::OneShotTimer<SettingGetterImplKDE>()),
+ indirect_manual_(false),
+ auto_no_pac_(false),
+ reversed_bypass_list_(false),
+ env_var_getter_(env_var_getter),
+ file_task_runner_(NULL) {
// This has to be called on the UI thread (http://crbug.com/69057).
base::ThreadRestrictions::ScopedAllowIO allow_io;
@@ -956,6 +967,7 @@ class SettingGetterImplKDE : public ProxyConfigServiceLinux::SettingGetter,
close(inotify_fd_);
inotify_fd_ = -1;
}
+ debounce_timer_.reset();
}
bool SetUpNotifications(
@@ -1305,8 +1317,8 @@ class SettingGetterImplKDE : public ProxyConfigServiceLinux::SettingGetter,
if (kioslaverc_touched) {
// We don't use Reset() because the timer may not yet be running.
// (In that case Stop() is a no-op.)
- debounce_timer_.Stop();
- debounce_timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(
+ debounce_timer_->Stop();
+ debounce_timer_->Start(FROM_HERE, base::TimeDelta::FromMilliseconds(
kDebounceTimeoutMilliseconds), this,
&SettingGetterImplKDE::OnDebouncedNotification);
}
@@ -1319,7 +1331,7 @@ class SettingGetterImplKDE : public ProxyConfigServiceLinux::SettingGetter,
int inotify_fd_;
base::MessagePumpLibevent::FileDescriptorWatcher inotify_watcher_;
ProxyConfigServiceLinux::Delegate* notify_delegate_;
- base::OneShotTimer<SettingGetterImplKDE> debounce_timer_;
+ scoped_ptr<base::OneShotTimer<SettingGetterImplKDE> > debounce_timer_;
base::FilePath kde_config_dir_;
bool indirect_manual_;
bool auto_no_pac_;

View File

@ -1,5 +1,5 @@
diff --git public/common/common_param_traits_macros.h public/common/common_param_traits_macros.h
index df89031..82d9293 100644
index 53f1128..46bbcf8 100644
--- public/common/common_param_traits_macros.h
+++ public/common/common_param_traits_macros.h
@@ -194,6 +194,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences)
@ -11,11 +11,11 @@ index df89031..82d9293 100644
IPC_STRUCT_TRAITS_MEMBER(navigate_on_drag_drop)
IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled)
diff --git public/common/web_preferences.cc public/common/web_preferences.cc
index 97b464e..98e7b4e 100644
index b61e1dc..5b55207 100644
--- public/common/web_preferences.cc
+++ public/common/web_preferences.cc
@@ -185,6 +185,7 @@ WebPreferences::WebPreferences()
rubber_banding_on_compositor_thread(false),
@@ -189,6 +189,7 @@ WebPreferences::WebPreferences()
pinch_overlay_scrollbar_thickness(0),
use_solid_color_scrollbars(false),
navigate_on_drag_drop(true),
+ base_background_color(0xFFFFFFFF), // Color::white
@ -23,11 +23,11 @@ index 97b464e..98e7b4e 100644
slimming_paint_enabled(false),
cookie_enabled(true),
diff --git public/common/web_preferences.h public/common/web_preferences.h
index 250b546..b679e26 100644
index 8d25487..23b25ae 100644
--- public/common/web_preferences.h
+++ public/common/web_preferences.h
@@ -181,6 +181,7 @@ struct CONTENT_EXPORT WebPreferences {
bool rubber_banding_on_compositor_thread;
int pinch_overlay_scrollbar_thickness;
bool use_solid_color_scrollbars;
bool navigate_on_drag_drop;
+ uint32_t base_background_color;
@ -35,10 +35,10 @@ index 250b546..b679e26 100644
bool slimming_paint_enabled;
diff --git renderer/render_view_impl.cc renderer/render_view_impl.cc
index 6519f37..27b6699 100644
index 3f0f76f..bf84bdb 100644
--- renderer/render_view_impl.cc
+++ renderer/render_view_impl.cc
@@ -954,6 +954,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs,
@@ -940,6 +940,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs,
settings->setJavaEnabled(prefs.java_enabled);

View File

@ -25,7 +25,7 @@ index aece7c6..63da2c9 100644
WebContents::CreateParams::~CreateParams() {
}
diff --git web_contents.h web_contents.h
index 493abd8..eface7b 100644
index 4380412..a67739d 100644
--- web_contents.h
+++ web_contents.h
@@ -52,9 +52,11 @@ class PageState;

View File

@ -1,8 +1,8 @@
diff --git render_process_host_impl.cc render_process_host_impl.cc
index 6564c438..7d58b7e 100644
index 4152ce2..9e235d3 100644
--- render_process_host_impl.cc
+++ render_process_host_impl.cc
@@ -2057,6 +2057,8 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead,
@@ -2084,6 +2084,8 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead,
#endif
RemoveUserData(kSessionStorageHolderKey);
@ -11,7 +11,7 @@ index 6564c438..7d58b7e 100644
IDMap<IPC::Listener>::iterator iter(&listeners_);
while (!iter.IsAtEnd()) {
iter.GetCurrentValue()->OnMessageReceived(
@@ -2066,8 +2068,6 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead,
@@ -2093,8 +2095,6 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead,
iter.Advance();
}

View File

@ -1,18 +1,3 @@
diff --git core/frame/FrameView.cpp core/frame/FrameView.cpp
index 06ced1c..a638814 100644
--- core/frame/FrameView.cpp
+++ core/frame/FrameView.cpp
@@ -146,8 +146,10 @@ FrameView::FrameView(LocalFrame* frame)
if (!m_frame->isMainFrame())
return;
+#if 0
ScrollableArea::setVerticalScrollElasticity(ScrollElasticityAllowed);
ScrollableArea::setHorizontalScrollElasticity(ScrollElasticityAllowed);
+#endif
}
PassRefPtrWillBeRawPtr<FrameView> FrameView::create(LocalFrame* frame)
diff --git platform/scroll/ScrollbarThemeMacCommon.mm platform/scroll/ScrollbarThemeMacCommon.mm
index 90abb7c..6bb16c6 100644
--- platform/scroll/ScrollbarThemeMacCommon.mm

View File

@ -43,11 +43,11 @@ index b54a643..5a589e5 100644
if (input_method)
input_method->OnBlur();
diff --git desktop_aura/desktop_window_tree_host_x11.cc desktop_aura/desktop_window_tree_host_x11.cc
index c6fc3d7..40b9b10 100644
index 1316b8b..588e591 100644
--- desktop_aura/desktop_window_tree_host_x11.cc
+++ desktop_aura/desktop_window_tree_host_x11.cc
@@ -154,7 +154,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
window_shape_(NULL),
@@ -153,7 +153,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
window_parent_(NULL),
custom_window_shape_(false),
urgency_hint_set_(false),
- close_widget_factory_(this) {
@ -56,7 +56,7 @@ index c6fc3d7..40b9b10 100644
}
DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() {
@@ -356,7 +357,8 @@ void DesktopWindowTreeHostX11::CloseNow() {
@@ -353,7 +354,8 @@ void DesktopWindowTreeHostX11::CloseNow() {
// Actually free our native resources.
if (ui::PlatformEventSource::GetInstance())
ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
@ -66,7 +66,7 @@ index c6fc3d7..40b9b10 100644
xwindow_ = None;
desktop_native_widget_aura_->OnHostClosed();
@@ -455,6 +457,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement(
@@ -452,6 +454,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement(
}
gfx::Rect DesktopWindowTreeHostX11::GetWindowBoundsInScreen() const {
@ -75,7 +75,7 @@ index c6fc3d7..40b9b10 100644
return ToDIPRect(bounds_in_pixels_);
}
@@ -887,6 +891,8 @@ void DesktopWindowTreeHostX11::Hide() {
@@ -894,6 +898,8 @@ void DesktopWindowTreeHostX11::Hide() {
}
gfx::Rect DesktopWindowTreeHostX11::GetBounds() const {
@ -84,7 +84,7 @@ index c6fc3d7..40b9b10 100644
return bounds_in_pixels_;
}
@@ -943,6 +949,8 @@ void DesktopWindowTreeHostX11::SetBounds(
@@ -950,6 +956,8 @@ void DesktopWindowTreeHostX11::SetBounds(
}
gfx::Point DesktopWindowTreeHostX11::GetLocationOnNativeScreen() const {
@ -93,7 +93,7 @@ index c6fc3d7..40b9b10 100644
return bounds_in_pixels_.origin();
}
@@ -1063,9 +1071,13 @@ void DesktopWindowTreeHostX11::InitX11Window(
@@ -1070,9 +1078,13 @@ void DesktopWindowTreeHostX11::InitX11Window(
}
}
@ -108,7 +108,7 @@ index c6fc3d7..40b9b10 100644
bounds_in_pixels_.y(), bounds_in_pixels_.width(),
bounds_in_pixels_.height(),
0, // border width
@@ -1718,6 +1730,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
@@ -1717,6 +1729,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
}
break;
}
@ -120,10 +120,10 @@ index c6fc3d7..40b9b10 100644
if (xev->xfocus.mode != NotifyGrab) {
ReleaseCapture();
diff --git desktop_aura/desktop_window_tree_host_x11.h desktop_aura/desktop_window_tree_host_x11.h
index 8f00d3c..a465bed 100644
index 94d4b1b..2609f46 100644
--- desktop_aura/desktop_window_tree_host_x11.h
+++ desktop_aura/desktop_window_tree_host_x11.h
@@ -85,6 +85,8 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
@@ -86,6 +86,8 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
// Deallocates the internal list of open windows.
static void CleanUpWindowList();
@ -132,7 +132,7 @@ index 8f00d3c..a465bed 100644
protected:
// Overridden from DesktopWindowTreeHost:
void Init(aura::Window* content_window,
@@ -264,6 +266,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
@@ -265,6 +267,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
// The bounds of |xwindow_|.
gfx::Rect bounds_in_pixels_;
@ -142,7 +142,7 @@ index 8f00d3c..a465bed 100644
// Whenever the bounds are set, we keep the previous set of bounds around so
// we can have a better chance of getting the real
// |restored_bounds_in_pixels_|. Window managers tend to send a Configure
@@ -349,6 +354,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
@@ -351,6 +356,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
base::WeakPtrFactory<DesktopWindowTreeHostX11> close_widget_factory_;
@ -153,7 +153,7 @@ index 8f00d3c..a465bed 100644
};
diff --git widget.cc widget.cc
index 7d237c8..8778686 100644
index 15b810a..2f01d9e 100644
--- widget.cc
+++ widget.cc
@@ -110,6 +110,7 @@ Widget::InitParams::InitParams()
@ -196,7 +196,7 @@ index 7d237c8..8778686 100644
// This must come after SetContentsView() or it might not be able to find
// the correct NativeTheme (on Linux). See http://crbug.com/384492
diff --git widget.h widget.h
index 06bd491..ed3893e 100644
index 2f6030b..fdf4172 100644
--- widget.h
+++ widget.h
@@ -235,6 +235,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,

View File

@ -1,5 +1,5 @@
diff --git Source/web/ChromeClientImpl.cpp Source/web/ChromeClientImpl.cpp
index 16f5b8f..6d457f1 100644
index 2565230..31a838f 100644
--- Source/web/ChromeClientImpl.cpp
+++ Source/web/ChromeClientImpl.cpp
@@ -735,7 +735,7 @@ bool ChromeClientImpl::hasOpenedPopup() const
@ -12,10 +12,10 @@ index 16f5b8f..6d457f1 100644
if (RuntimeEnabledFeatures::htmlPopupMenuEnabled() && RuntimeEnabledFeatures::pagePopupEnabled())
diff --git Source/web/WebViewImpl.cpp Source/web/WebViewImpl.cpp
index 5312dcd..87b87fd 100644
index 14c0dbf..0943bf2 100644
--- Source/web/WebViewImpl.cpp
+++ Source/web/WebViewImpl.cpp
@@ -408,6 +408,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
@@ -395,6 +395,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
, m_fakePageScaleAnimationPageScaleFactor(0)
, m_fakePageScaleAnimationUseAnchor(false)
, m_contextMenuAllowed(false)
@ -23,8 +23,8 @@ index 5312dcd..87b87fd 100644
, m_doingDragAndDrop(false)
, m_ignoreInputEvents(false)
, m_compositorDeviceScaleFactorOverride(0)
@@ -4127,9 +4128,14 @@ void WebViewImpl::pageScaleFactorChanged()
m_page->inspectorController().pageScaleFactorChanged();
@@ -4140,9 +4141,14 @@ void WebViewImpl::pageScaleFactorChanged()
m_client->pageScaleFactorChanged();
}
+void WebViewImpl::setUseExternalPopupMenusThisInstance(bool useExternalPopupMenus)
@ -40,10 +40,10 @@ index 5312dcd..87b87fd 100644
void WebViewImpl::startDragging(LocalFrame* frame,
diff --git Source/web/WebViewImpl.h Source/web/WebViewImpl.h
index 6048f2b..3cbdefd 100644
index 4c6e0a3..47b934b 100644
--- Source/web/WebViewImpl.h
+++ Source/web/WebViewImpl.h
@@ -389,7 +389,8 @@ public:
@@ -401,7 +401,8 @@ public:
// Returns true if popup menus should be rendered by the browser, false if
// they should be rendered by WebKit (which is the default).
@ -53,7 +53,7 @@ index 6048f2b..3cbdefd 100644
bool contextMenuAllowed() const
{
@@ -690,6 +691,8 @@ private:
@@ -704,6 +705,8 @@ private:
bool m_contextMenuAllowed;
@ -63,10 +63,10 @@ index 6048f2b..3cbdefd 100644
bool m_ignoreInputEvents;
diff --git public/web/WebView.h public/web/WebView.h
index 774d117..9cd6546 100644
index 20aeff9..0eeda6e 100644
--- public/web/WebView.h
+++ public/web/WebView.h
@@ -409,6 +409,7 @@ public:
@@ -402,6 +402,7 @@ public:
// Sets whether select popup menus should be rendered by the browser.
BLINK_EXPORT static void setUseExternalPopupMenus(bool);