Commit d7f7c61d authored by Marshall Greenblatt's avatar Marshall Greenblatt

Update to Chromium revision fea84635 (#321386)

- Use a separate utility process for V8 proxy resolution (see http://crbug.com/11746).
parent aaab7bdb
......@@ -7,5 +7,5 @@
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
{
'chromium_checkout': '47fb4821713cf85fce53c5bae575343e97041681',
'chromium_checkout': 'fea846358e7c2efe04bdeb4b01ecccee6efe7759',
}
......@@ -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',
......
......@@ -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.
......
......@@ -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();
......
......@@ -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;
......
......@@ -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);
}
}
......
......@@ -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,
......
......@@ -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"
......
......@@ -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) {
......
......@@ -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>;
......
......@@ -187,8 +187,7 @@ void PrintViewManagerBase::OnPrintingFailed(int cookie) {
void PrintViewManagerBase::OnShowInvalidPrinterSettingsError() {
}
void PrintViewManagerBase::DidStartLoading(
content::RenderViewHost* render_view_host) {
void PrintViewManagerBase::DidStartLoading() {
UpdateScriptedPrintingBlocked();
}
......
......@@ -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;
......
......@@ -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() {
......
......@@ -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"
......
......@@ -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) {
......
......@@ -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());
......
......@@ -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;
......
......@@ -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.
......
......@@ -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.
......
......@@ -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().
......
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;
......
diff --git common.gypi common.gypi
index 4fcd211..9bfa165 100644
index e32eae2..46c355a 100644
--- common.gypi
+++ common.gypi
@@ -9,6 +9,9 @@
......
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,
......
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_;
......
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;
}
......
diff --git resource_ids resource_ids
index efd5760..62dd7b0 100644
index a64ae83..b32c534 100644
--- resource_ids
+++ resource_ids
@@ -14,6 +14,12 @@
......
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)
......
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.)