Update to Chromium revision fc6aaca4 (#406441)

This commit is contained in:
Marshall Greenblatt
2016-07-21 17:21:32 -04:00
parent d92bc1d200
commit 98f59f47fd
79 changed files with 478 additions and 402 deletions

View File

@@ -424,8 +424,8 @@ net::URLRequestContextGetter* CefBrowserContextImpl::CreateRequestContext(
url_request_getter_ = new CefURLRequestContextGetterImpl(
settings_,
GetPrefs(),
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE),
protocol_handlers,
std::move(proxy_config_service),
std::move(request_interceptors));

View File

@@ -396,7 +396,7 @@ void CefURLFetcherDelegate::OnURLFetchComplete(
const net::URLFetcher* source) {
// Complete asynchronously so as not to delete the URLFetcher while it's still
// in the call stack.
base::MessageLoop::current()->PostTask(FROM_HERE,
base::MessageLoop::current()->task_runner()->PostTask(FROM_HERE,
base::Bind(&CefBrowserURLRequest::Context::OnComplete, context_));
}

View File

@@ -124,7 +124,7 @@ class CefGeolocationDelegate : public content::GeolocationDelegate {
explicit CefGeolocationDelegate(net::URLRequestContextGetter* system_context)
: system_context_(system_context) {}
content::AccessTokenStore* CreateAccessTokenStore() override {
scoped_refptr<content::AccessTokenStore> CreateAccessTokenStore() override {
return new CefAccessTokenStore(system_context_);
}

View File

@@ -140,7 +140,7 @@ void CefCookieManagerImpl::Initialize(
if (request_context.get()) {
request_context_ = request_context;
request_context_->GetRequestContextImpl(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefCookieManagerImpl::InitWithContext, this, callback));
} else {
SetStoragePath(path, persist_session_cookies, callback);
@@ -226,7 +226,7 @@ void CefCookieManagerImpl::SetSupportedSchemes(
bool CefCookieManagerImpl::VisitAllCookies(
CefRefPtr<CefCookieVisitor> visitor) {
GetCookieStore(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefCookieManagerImpl::VisitAllCookiesInternal, this,
visitor));
return true;
@@ -237,7 +237,7 @@ bool CefCookieManagerImpl::VisitUrlCookies(
bool includeHttpOnly,
CefRefPtr<CefCookieVisitor> visitor) {
GetCookieStore(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefCookieManagerImpl::VisitUrlCookiesInternal, this, url,
includeHttpOnly, visitor));
return true;
@@ -252,7 +252,7 @@ bool CefCookieManagerImpl::SetCookie(
return false;
GetCookieStore(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefCookieManagerImpl::SetCookieInternal, this, gurl, cookie,
callback));
return true;
@@ -268,7 +268,7 @@ bool CefCookieManagerImpl::DeleteCookies(
return false;
GetCookieStore(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefCookieManagerImpl::DeleteCookiesInternal, this, gurl,
cookie_name, callback));
return true;
@@ -314,8 +314,8 @@ bool CefCookieManagerImpl::SetStoragePath(
persistent_store =
new net::SQLitePersistentCookieStore(
cookie_path,
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::DB),
persist_session_cookies,
NULL);
} else {
@@ -341,7 +341,7 @@ bool CefCookieManagerImpl::SetStoragePath(
bool CefCookieManagerImpl::FlushStore(
CefRefPtr<CefCompletionCallback> callback) {
GetCookieStore(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefCookieManagerImpl::FlushStoreInternal, this, callback));
return true;
}
@@ -427,7 +427,7 @@ void CefCookieManagerImpl::RunMethodWithContext(
} else if (request_context_.get()) {
// Try again after the request context is initialized.
request_context_->GetRequestContextImpl(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
method);
} else {
NOTREACHED();

View File

@@ -132,6 +132,9 @@ CefDevToolsManagerDelegate::~CefDevToolsManagerDelegate() {
base::DictionaryValue* CefDevToolsManagerDelegate::HandleCommand(
content::DevToolsAgentHost* agent_host,
base::DictionaryValue* command) {
return NULL;
base::DictionaryValue* command_dict) {
std::unique_ptr<base::DictionaryValue> result =
devtools_discovery::DevToolsDiscoveryManager::GetInstance()
->HandleNewTargetCommand(command_dict);
return result.release(); // Caller takes ownership.
}

View File

@@ -147,7 +147,7 @@ void CefDevToolsFrontend::InspectElementAt(int x, int y) {
if (inspect_element_at_.x != x || inspect_element_at_.y != y)
inspect_element_at_.Set(x, y);
if (agent_host_)
agent_host_->InspectElement(x, y);
agent_host_->InspectElement(this, x, y);
}
void CefDevToolsFrontend::Close() {

View File

@@ -664,7 +664,7 @@ void CefMenuModelImpl::MenuClosed() {
// Due to how menus work on the different platforms, ActivatedAt will be
// called after this. It's more convenient for the delegate to be called
// afterwards, though, so post a task.
base::MessageLoop::current()->PostTask(
base::MessageLoop::current()->task_runner()->PostTask(
FROM_HERE,
base::Bind(&CefMenuModelImpl::OnMenuClosed, this));
}

View File

@@ -287,8 +287,6 @@ void CefBrowserPlatformDelegateNativeLinux::TranslateKeyEvent(
result.text[0] = key_event.character;
result.unmodifiedText[0] = key_event.unmodified_character;
result.setKeyIdentifierFromWindowsKeyCode();
result.modifiers |= TranslateModifiers(key_event.modifiers);
}

View File

@@ -406,8 +406,6 @@ void CefBrowserPlatformDelegateNativeWin::TranslateKeyEvent(
result.text[0] = result.windowsKeyCode;
result.unmodifiedText[0] = result.windowsKeyCode;
}
if (result.type != blink::WebInputEvent::Char)
result.setKeyIdentifierFromWindowsKeyCode();
result.modifiers |= TranslateModifiers(key_event.modifiers);
}

View File

@@ -350,10 +350,7 @@ class Delegate : public InternalHandlerDelegate {
CHROME_VERSION_BUILD,
CHROME_VERSION_PATCH));
parser.Add("OS", GetOSType());
parser.Add("WEBKIT",
base::StringPrintf("%d.%d",
content::GetWebKitMajorVersion(),
content::GetWebKitMinorVersion()));
parser.Add("WEBKIT", content::GetWebKitVersion());
parser.Add("JAVASCRIPT", v8::V8::GetVersion());
parser.Add("FLASH", std::string()); // Value populated asynchronously.
parser.Add("USERAGENT", CefContentClient::Get()->GetUserAgent());

View File

@@ -124,7 +124,7 @@ CefURLRequestContextGetterImpl::CefURLRequestContextGetterImpl(
std::swap(protocol_handlers_, *protocol_handlers);
auto io_thread_proxy =
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO);
quick_check_enabled_.Init(prefs::kQuickCheckEnabled, pref_service);
quick_check_enabled_.MoveToThread(io_thread_proxy);
@@ -256,7 +256,7 @@ net::URLRequestContext* CefURLRequestContextGetterImpl::GetURLRequestContext() {
net::CACHE_BACKEND_DEFAULT,
http_cache_path,
0,
BrowserThread::GetMessageLoopProxyForThread(
BrowserThread::GetTaskRunnerForThread(
BrowserThread::CACHE)));
net::HttpNetworkSession::Params network_session_params;
@@ -340,7 +340,7 @@ net::URLRequestContext* CefURLRequestContextGetterImpl::GetURLRequestContext() {
scoped_refptr<base::SingleThreadTaskRunner>
CefURLRequestContextGetterImpl::GetNetworkTaskRunner() const {
return BrowserThread::GetMessageLoopProxyForThread(CEF_IOT);
return BrowserThread::GetTaskRunnerForThread(CEF_IOT);
}
net::HostResolver* CefURLRequestContextGetterImpl::GetHostResolver() const {
@@ -370,8 +370,8 @@ void CefURLRequestContextGetterImpl::SetCookieStoragePath(
persistent_store =
new net::SQLitePersistentCookieStore(
cookie_path,
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::DB),
persist_session_cookies,
NULL);
} else {

View File

@@ -45,12 +45,6 @@ const float kDefaultScaleFactor = 1.0;
// The maximum number of retry counts if frame capture fails.
const int kFrameRetryLimit = 2;
// When accelerated compositing is enabled and a widget resize is pending,
// we delay further resizes of the UI. The following constant is the maximum
// length of time that we should delay further UI resizes while waiting for a
// resized frame from a renderer.
const int kResizeLockTimeoutMs = 67;
static blink::WebScreenInfo webScreenInfoFrom(const CefScreenInfo& src) {
blink::WebScreenInfo webScreenInfo;
webScreenInfo.deviceScaleFactor = src.device_scale_factor;
@@ -67,6 +61,14 @@ static blink::WebScreenInfo webScreenInfoFrom(const CefScreenInfo& src) {
return webScreenInfo;
}
#if !defined(OS_MACOSX)
// When accelerated compositing is enabled and a widget resize is pending,
// we delay further resizes of the UI. The following constant is the maximum
// length of time that we should delay further UI resizes while waiting for a
// resized frame from a renderer.
const int kResizeLockTimeoutMs = 67;
// Used to prevent further resizes while a resize is pending.
class CefResizeLock : public content::ResizeLock {
public:
@@ -124,6 +126,8 @@ class CefResizeLock : public content::ResizeLock {
DISALLOW_COPY_AND_ASSIGN(CefResizeLock);
};
#endif // !defined(OS_MACOSX)
} // namespace
// Used for managing copy requests when GPU compositing is enabled. Based on
@@ -202,8 +206,7 @@ class CefCopyFrameGenerator {
damage_rect));
request->set_area(gfx::Rect(view_->GetPhysicalBackingSize()));
view_->DelegatedFrameHostGetLayer()->RequestCopyOfOutput(
std::move(request));
view_->GetRootLayer()->RequestCopyOfOutput(std::move(request));
}
void CopyFromCompositingSurfaceHasResult(
@@ -410,7 +413,7 @@ class CefBeginFrameTimer : public cc::DelayBasedTimeSourceClient {
const base::Closure& callback)
: callback_(callback) {
time_source_.reset(new cc::DelayBasedTimeSource(
content::BrowserThread::GetMessageLoopProxyForThread(CEF_UIT).get()));
content::BrowserThread::GetTaskRunnerForThread(CEF_UIT).get()));
time_source_->SetTimebaseAndInterval(
base::TimeTicks(),
base::TimeDelta::FromMilliseconds(frame_rate_threshold_ms));
@@ -1035,10 +1038,7 @@ CefRenderWidgetHostViewOSR::CreateSoftwareOutputDevice(
return base::WrapUnique(software_output_device_);
}
int CefRenderWidgetHostViewOSR::DelegatedFrameHostGetGpuMemoryBufferClientId()
const {
return render_widget_host_->GetProcess()->GetID();
}
#if !defined(OS_MACOSX)
ui::Layer* CefRenderWidgetHostViewOSR::DelegatedFrameHostGetLayer() const {
return GetRootLayer();
@@ -1084,21 +1084,14 @@ void CefRenderWidgetHostViewOSR::DelegatedFrameHostResizeLockWasReleased() {
return render_widget_host_->WasResized();
}
void CefRenderWidgetHostViewOSR::DelegatedFrameHostSendCompositorSwapAck(
int output_surface_id,
const cc::CompositorFrameAck& ack) {
render_widget_host_->Send(new ViewMsg_SwapCompositorFrameAck(
render_widget_host_->GetRoutingID(),
output_surface_id, ack));
}
void
CefRenderWidgetHostViewOSR::DelegatedFrameHostSendReclaimCompositorResources(
int output_surface_id,
const cc::CompositorFrameAck& ack) {
bool is_swap_ack,
const cc::ReturnedResourceArray& resources) {
render_widget_host_->Send(new ViewMsg_ReclaimCompositorResources(
render_widget_host_->GetRoutingID(),
output_surface_id, ack));
render_widget_host_->GetRoutingID(), output_surface_id, is_swap_ack,
resources));
}
void CefRenderWidgetHostViewOSR::DelegatedFrameHostOnLostCompositorResources() {
@@ -1118,6 +1111,12 @@ void CefRenderWidgetHostViewOSR::SetBeginFrameSource(
// See https://codereview.chromium.org/1841083007.
}
bool CefRenderWidgetHostViewOSR::IsAutoResizeEnabled() const {
return render_widget_host_->auto_resize_enabled();
}
#endif // !defined(OS_MACOSX)
bool CefRenderWidgetHostViewOSR::InstallTransparency() {
if (transparent_) {
SetBackgroundColor(SkColor());
@@ -1332,18 +1331,20 @@ void CefRenderWidgetHostViewOSR::RemoveGuestHostView(
}
#if !defined(OS_MACOSX)
ui::Compositor* CefRenderWidgetHostViewOSR::GetCompositor() const {
return compositor_.get();
}
ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const {
return root_layer_.get();
}
content::DelegatedFrameHost* CefRenderWidgetHostViewOSR::GetDelegatedFrameHost()
const {
return delegated_frame_host_.get();
}
ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const {
return root_layer_.get();
}
#endif // !defined(OS_MACOSX)
void CefRenderWidgetHostViewOSR::SetFrameRate() {

View File

@@ -76,13 +76,16 @@ class CefWindowX11;
///////////////////////////////////////////////////////////////////////////////
#if defined(OS_MACOSX)
class AcceleratedWidgetMacNSViewHelper;
class MacHelper;
#endif
class CefRenderWidgetHostViewOSR
: public content::RenderWidgetHostViewBase,
public ui::CompositorDelegate,
public content::DelegatedFrameHostClient {
public ui::CompositorDelegate
#if !defined(OS_MACOSX)
, public content::DelegatedFrameHostClient
#endif
{
public:
CefRenderWidgetHostViewOSR(const bool transparent,
content::RenderWidgetHost* widget,
@@ -190,8 +193,8 @@ class CefRenderWidgetHostViewOSR
std::unique_ptr<cc::SoftwareOutputDevice> CreateSoftwareOutputDevice(
ui::Compositor* compositor) override;
#if !defined(OS_MACOSX)
// DelegatedFrameHostClient implementation.
virtual int DelegatedFrameHostGetGpuMemoryBufferClientId() const override;
ui::Layer* DelegatedFrameHostGetLayer() const override;
bool DelegatedFrameHostIsVisible() const override;
SkColor DelegatedFrameHostGetGutterColor(SkColor color) const override;
@@ -200,17 +203,17 @@ class CefRenderWidgetHostViewOSR
std::unique_ptr<content::ResizeLock> DelegatedFrameHostCreateResizeLock(
bool defer_compositor_lock) override;
void DelegatedFrameHostResizeLockWasReleased() override;
void DelegatedFrameHostSendCompositorSwapAck(
int output_surface_id,
const cc::CompositorFrameAck& ack) override;
void DelegatedFrameHostSendReclaimCompositorResources(
int output_surface_id,
const cc::CompositorFrameAck& ack) override;
bool is_swap_ack,
const cc::ReturnedResourceArray& resources) override;
void DelegatedFrameHostOnLostCompositorResources() override;
void DelegatedFrameHostUpdateVSyncParameters(
const base::TimeTicks& timebase,
const base::TimeDelta& interval) override;
void SetBeginFrameSource(cc::BeginFrameSource* source) override;
bool IsAutoResizeEnabled() const override;
#endif // !defined(OS_MACOSX)
bool InstallTransparency();
@@ -267,10 +270,10 @@ class CefRenderWidgetHostViewOSR
ui::Compositor* GetCompositor() const;
content::RenderWidgetHostImpl* render_widget_host() const
{ return render_widget_host_; }
ui::Layer* GetRootLayer() const;
private:
content::DelegatedFrameHost* GetDelegatedFrameHost() const;
ui::Layer* GetRootLayer() const;
void SetFrameRate();
void SetDeviceScaleFactor();
@@ -286,7 +289,7 @@ class CefRenderWidgetHostViewOSR
void OnScrollOffsetChanged();
#if defined(OS_MACOSX)
friend class AcceleratedWidgetMacNSViewHelper;
friend class MacHelper;
// Returns composition character boundary rectangle. The |range| is
// composition based range. Also stores |actual_range| which is corresponding
@@ -334,7 +337,7 @@ class CefRenderWidgetHostViewOSR
NSWindow* window_;
CALayer* background_layer_;
std::unique_ptr<content::BrowserCompositorMac> browser_compositor_;
AcceleratedWidgetMacNSViewHelper* accelerated_widget_helper_;
MacHelper* mac_helper_;
#elif defined(USE_X11)
CefWindowX11* window_;
std::unique_ptr<ui::XScopedCursor> invisible_cursor_;

View File

@@ -32,12 +32,62 @@ CefTextInputClientOSRMac* GetInputClientFromContext(
} // namespace
class AcceleratedWidgetMacNSViewHelper : public ui::AcceleratedWidgetMacNSView {
class MacHelper :
public content::BrowserCompositorMacClient,
public ui::AcceleratedWidgetMacNSView {
public:
explicit AcceleratedWidgetMacNSViewHelper(CefRenderWidgetHostViewOSR* view)
explicit MacHelper(CefRenderWidgetHostViewOSR* view)
: view_(view) {
}
virtual ~AcceleratedWidgetMacNSViewHelper() {}
virtual ~MacHelper() {}
// BrowserCompositorMacClient methods:
NSView* BrowserCompositorMacGetNSView() const override {
// Intentionally return nil so that
// BrowserCompositorMac::DelegatedFrameHostDesiredSizeInDIP uses the layer
// size instead of the NSView size.
return nil;
}
SkColor BrowserCompositorMacGetGutterColor(SkColor color) const override {
// When making an element on the page fullscreen the element's background
// may not match the page's, so use black as the gutter color to avoid
// flashes of brighter colors during the transition.
if (view_->render_widget_host()->delegate() &&
view_->render_widget_host()->delegate()->IsFullscreenForCurrentTab()) {
return SK_ColorBLACK;
}
return color;
}
void BrowserCompositorMacSendReclaimCompositorResources(
int output_surface_id,
bool is_swap_ack,
const cc::ReturnedResourceArray& resources) override {
view_->render_widget_host()->Send(new ViewMsg_ReclaimCompositorResources(
view_->render_widget_host()->GetRoutingID(), output_surface_id,
is_swap_ack, resources));
}
void BrowserCompositorMacOnLostCompositorResources() override {
view_->render_widget_host()->ScheduleComposite();
}
void BrowserCompositorMacUpdateVSyncParameters(
const base::TimeTicks& timebase,
const base::TimeDelta& interval) override {
view_->render_widget_host()->UpdateVSyncParameters(timebase, interval);
}
void BrowserCompositorMacSendBeginFrame(
const cc::BeginFrameArgs& args) override {
view_->render_widget_host()->Send(
new ViewMsg_BeginFrame(view_->render_widget_host()->GetRoutingID(),
args));
}
// AcceleratedWidgetMacNSView methods:
NSView* AcceleratedWidgetGetNSView() const override {
return [view_->window_ contentView];
@@ -56,7 +106,7 @@ class AcceleratedWidgetMacNSViewHelper : public ui::AcceleratedWidgetMacNSView {
// Guaranteed to outlive this object.
CefRenderWidgetHostViewOSR* view_;
DISALLOW_COPY_AND_ASSIGN(AcceleratedWidgetMacNSViewHelper);
DISALLOW_COPY_AND_ASSIGN(MacHelper);
};
@@ -311,15 +361,15 @@ ui::Compositor* CefRenderWidgetHostViewOSR::GetCompositor() const {
return browser_compositor_->GetCompositor();
}
ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const {
return browser_compositor_->GetRootLayer();
}
content::DelegatedFrameHost* CefRenderWidgetHostViewOSR::GetDelegatedFrameHost()
const {
return browser_compositor_->GetDelegatedFrameHost();
}
ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const {
return browser_compositor_->GetRootLayer();
}
void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() {
// Create a borderless non-visible 1x1 window.
window_ = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1, 1)
@@ -334,17 +384,14 @@ void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() {
[content_view setLayer:background_layer_];
[content_view setWantsLayer:YES];
accelerated_widget_helper_ = new AcceleratedWidgetMacNSViewHelper(this);
mac_helper_ = new MacHelper(this);
browser_compositor_.reset(new content::BrowserCompositorMac(
accelerated_widget_helper_, this, render_widget_host_->is_hidden(),
true));
mac_helper_, mac_helper_, render_widget_host_->is_hidden(), true));
}
void CefRenderWidgetHostViewOSR::PlatformDestroyCompositorWidget() {
DCHECK(window_);
browser_compositor_->Destroy();
[window_ close];
window_ = nil;
[background_layer_ release];
@@ -352,6 +399,6 @@ void CefRenderWidgetHostViewOSR::PlatformDestroyCompositorWidget() {
browser_compositor_.reset();
delete accelerated_widget_helper_;
accelerated_widget_helper_ = nullptr;
delete mac_helper_;
mac_helper_ = nullptr;
}

View File

@@ -75,7 +75,7 @@ PepperIsolatedFileSystemMessageFilter::OverrideTaskRunnerForMessage(
const IPC::Message& msg) {
// In order to reach ExtensionSystem, we need to get ProfileManager first.
// ProfileManager lives in UI thread, so we need to do this in UI thread.
return content::BrowserThread::GetMessageLoopProxyForThread(
return content::BrowserThread::GetTaskRunnerForThread(
content::BrowserThread::UI);
}

View File

@@ -175,11 +175,13 @@ int CefPermissionManager::RequestPermission(
PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::Callback<void(PermissionStatus)>& callback) {
return RequestPermissions(
std::vector<PermissionType>(1, permission),
render_frame_host,
requesting_origin,
user_gesture,
base::Bind(&PermissionRequestResponseCallbackWrapper, callback));
}
@@ -187,6 +189,7 @@ int CefPermissionManager::RequestPermissions(
const std::vector<PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::Callback<void(
const std::vector<PermissionStatus>&)>& callback) {
if (permissions.empty()) {

View File

@@ -36,12 +36,14 @@ class CefPermissionManager : public KeyedService,
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::Callback<void(blink::mojom::PermissionStatus)>& callback)
override;
int RequestPermissions(
const std::vector<content::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::Callback<void(
const std::vector<blink::mojom::PermissionStatus>&)>& callback)
override;

View File

@@ -146,12 +146,12 @@ CefPluginInfoMessageFilter::Context::Context(
allow_outdated_plugins_.Init(prefs::kPluginsAllowOutdated,
profile->GetPrefs());
allow_outdated_plugins_.MoveToThread(
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::GetTaskRunnerForThread(
content::BrowserThread::IO));
always_authorize_plugins_.Init(prefs::kPluginsAlwaysAuthorize,
profile->GetPrefs());
always_authorize_plugins_.MoveToThread(
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::GetTaskRunnerForThread(
content::BrowserThread::IO));
}
@@ -475,13 +475,9 @@ void CefPluginInfoMessageFilter::Context::GetPluginContentSetting(
// If there is a plugin-specific setting, we use it, unless the general
// setting was set by policy, in which case it takes precedence.
// TODO(tommycli): Remove once we deprecate the plugin ASK policy.
bool legacy_ask_user = content_settings::ValueToContentSetting(
general_setting.get()) == CONTENT_SETTING_ASK;
bool use_policy =
general_info.source == content_settings::SETTING_SOURCE_POLICY &&
!legacy_ask_user;
uses_plugin_specific_setting = specific_setting && !use_policy;
uses_plugin_specific_setting =
specific_setting &&
general_info.source != content_settings::SETTING_SOURCE_POLICY;
if (uses_plugin_specific_setting) {
value = std::move(specific_setting);
info = specific_info;

View File

@@ -327,7 +327,7 @@ void CefPrintDialogLinux::OnPrintCancel() {
void CefPrintDialogLinux::OnJobCompleted() {
base::FileUtilProxy::DeleteFile(
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::GetTaskRunnerForThread(
BrowserThread::FILE).get(),
path_to_pdf_,
false,

View File

@@ -239,7 +239,7 @@ void CefRequestContextImpl::GetRequestContextImpl(
} else {
// Need to initialize the browser context first.
GetBrowserContextOnUIThread(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefRequestContextImpl::GetRequestContextImplOnIOThread,
this, task_runner, callback));
}
@@ -325,7 +325,7 @@ bool CefRequestContextImpl::RegisterSchemeHandlerFactory(
const CefString& domain_name,
CefRefPtr<CefSchemeHandlerFactory> factory) {
GetRequestContextImpl(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefRequestContextImpl::RegisterSchemeHandlerFactoryInternal,
this, scheme_name, domain_name, factory));
return true;
@@ -333,7 +333,7 @@ bool CefRequestContextImpl::RegisterSchemeHandlerFactory(
bool CefRequestContextImpl::ClearSchemeHandlerFactories() {
GetRequestContextImpl(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefRequestContextImpl::ClearSchemeHandlerFactoriesInternal,
this));
return true;
@@ -341,7 +341,7 @@ bool CefRequestContextImpl::ClearSchemeHandlerFactories() {
void CefRequestContextImpl::PurgePluginListCache(bool reload_pages) {
GetBrowserContext(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
base::Bind(&CefRequestContextImpl::PurgePluginListCacheInternal,
this, reload_pages));
}
@@ -474,7 +474,7 @@ bool CefRequestContextImpl::SetPreference(const CefString& name,
void CefRequestContextImpl::ClearCertificateExceptions(
CefRefPtr<CefCompletionCallback> callback) {
GetBrowserContext(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
base::Bind(&CefRequestContextImpl::ClearCertificateExceptionsInternal,
this, callback));
}
@@ -482,7 +482,7 @@ void CefRequestContextImpl::ClearCertificateExceptions(
void CefRequestContextImpl::CloseAllConnections(
CefRefPtr<CefCompletionCallback> callback) {
GetRequestContextImpl(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefRequestContextImpl::CloseAllConnectionsInternal, this,
callback));
}
@@ -491,7 +491,7 @@ void CefRequestContextImpl::ResolveHost(
const CefString& origin,
CefRefPtr<CefResolveCallback> callback) {
GetRequestContextImpl(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
base::Bind(&CefRequestContextImpl::ResolveHostInternal, this, origin,
callback));
}

View File

@@ -37,3 +37,7 @@ CefBasicLabelButtonImpl::CefBasicLabelButtonImpl(CefRefPtr<CefButtonDelegate> de
views::LabelButton* CefBasicLabelButtonImpl::CreateRootView() {
return new CefBasicLabelButtonView(delegate());
}
void CefBasicLabelButtonImpl::InitializeRootView() {
static_cast<CefBasicLabelButtonView*>(root_view())->Initialize();
}

View File

@@ -37,6 +37,7 @@ class CefBasicLabelButtonImpl :
// CefViewImpl methods:
views::LabelButton* CreateRootView() override;
void InitializeRootView() override;
IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefBasicLabelButtonImpl);
DISALLOW_COPY_AND_ASSIGN(CefBasicLabelButtonImpl);

View File

@@ -28,3 +28,7 @@ CefBasicPanelImpl::CefBasicPanelImpl(CefRefPtr<CefPanelDelegate> delegate)
views::View* CefBasicPanelImpl::CreateRootView() {
return new CefBasicPanelView(delegate());
}
void CefBasicPanelImpl::InitializeRootView() {
static_cast<CefBasicPanelView*>(root_view())->Initialize();
}

View File

@@ -33,6 +33,7 @@ class CefBasicPanelImpl :
// CefViewImpl methods:
views::View* CreateRootView() override;
void InitializeRootView() override;
IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefBasicPanelImpl);
DISALLOW_COPY_AND_ASSIGN(CefBasicPanelImpl);

View File

@@ -163,3 +163,7 @@ void CefBrowserViewImpl::SetDefaults(const CefBrowserSettings& settings) {
CefBrowserViewView* CefBrowserViewImpl::CreateRootView() {
return new CefBrowserViewView(delegate(), this);
}
void CefBrowserViewImpl::InitializeRootView() {
static_cast<CefBrowserViewView*>(root_view())->Initialize();
}

View File

@@ -73,6 +73,7 @@ class CefBrowserViewImpl :
// CefViewImpl methods:
CefBrowserViewView* CreateRootView() override;
void InitializeRootView() override;
std::unique_ptr<CefBrowserHostImpl::CreateParams> pending_browser_create_params_;

View File

@@ -27,6 +27,11 @@ CEF_LABEL_BUTTON_VIEW_T class CefLabelButtonView : public CEF_BUTTON_VIEW_D {
// |cef_delegate| may be nullptr.
explicit CefLabelButtonView(CefViewDelegateClass* cef_delegate)
: ParentClass(cef_delegate) {
}
void Initialize() override {
ParentClass::Initialize();
// Use our defaults instead of the Views framework defaults.
ParentClass::SetFontList(gfx::FontList(view_util::kDefaultFontList));
}

View File

@@ -58,3 +58,7 @@ CefMenuButtonImpl::CefMenuButtonImpl(CefRefPtr<CefMenuButtonDelegate> delegate)
views::MenuButton* CefMenuButtonImpl::CreateRootView() {
return new CefMenuButtonView(delegate());
}
void CefMenuButtonImpl::InitializeRootView() {
static_cast<CefMenuButtonView*>(root_view())->Initialize();
}

View File

@@ -47,6 +47,7 @@ class CefMenuButtonImpl :
// CefViewImpl methods:
views::MenuButton* CreateRootView() override;
void InitializeRootView() override;
IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefMenuButtonImpl);
DISALLOW_COPY_AND_ASSIGN(CefMenuButtonImpl);

View File

@@ -86,3 +86,7 @@ CefScrollViewImpl::CefScrollViewImpl(CefRefPtr<CefViewDelegate> delegate)
CefScrollViewView* CefScrollViewImpl::CreateRootView() {
return new CefScrollViewView(delegate());
}
void CefScrollViewImpl::InitializeRootView() {
static_cast<CefScrollViewView*>(root_view())->Initialize();
}

View File

@@ -45,6 +45,7 @@ class CefScrollViewImpl :
// CefViewImpl methods:
CefScrollViewView* CreateRootView() override;
void InitializeRootView() override;
IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefScrollViewImpl);
DISALLOW_COPY_AND_ASSIGN(CefScrollViewImpl);

View File

@@ -212,3 +212,7 @@ CefTextfieldImpl::CefTextfieldImpl(CefRefPtr<CefTextfieldDelegate> delegate)
CefTextfieldView* CefTextfieldImpl::CreateRootView() {
return new CefTextfieldView(delegate());
}
void CefTextfieldImpl::InitializeRootView() {
static_cast<CefTextfieldView*>(root_view())->Initialize();
}

View File

@@ -75,6 +75,7 @@ class CefTextfieldImpl :
// CefViewImpl methods:
CefTextfieldView* CreateRootView() override;
void InitializeRootView() override;
IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefTextfieldImpl);
DISALLOW_COPY_AND_ASSIGN(CefTextfieldImpl);

View File

@@ -9,6 +9,10 @@
CefTextfieldView::CefTextfieldView(CefTextfieldDelegate* cef_delegate)
: ParentClass(cef_delegate) {
set_controller(this);
}
void CefTextfieldView::Initialize() {
ParentClass::Initialize();
// Use our defaults instead of the Views framework defaults.
SetFontList(gfx::FontList(view_util::kDefaultFontList));

View File

@@ -23,6 +23,8 @@ class CefTextfieldView :
// |cef_delegate| may be nullptr.
explicit CefTextfieldView(CefTextfieldDelegate* cef_delegate);
void Initialize() override;
// Returns the CefTextfield associated with this view. See comments on
// CefViewView::GetCefView.
CefRefPtr<CefTextfield> GetCefTextfield() const {

View File

@@ -427,11 +427,16 @@ CEF_VIEW_IMPL_T class CefViewImpl : public CefViewAdapter,
DCHECK(root_view_.get());
root_view_ref_ = root_view_.get();
view_util::Register(this);
InitializeRootView();
}
// Create the root views::View object.
virtual ViewsViewClass* CreateRootView() = 0;
// Perform required initialization of the root_view() object created by
// CreateRootView(). Called after this object has been registered.
virtual void InitializeRootView() = 0;
private:
CefRefPtr<CefViewDelegateClass> delegate_;

View File

@@ -31,9 +31,19 @@ CEF_VIEW_VIEW_T class CefViewView : public ViewsViewClass {
public:
typedef ViewsViewClass ParentClass;
// |cef_delegate| may be nullptr.
// Should be created from CreateRootView() in a CefViewImpl-derived class.
// Do not call complex views::View-derived methods from a CefViewView-derived
// constructor as they may attempt to call back into CefViewImpl before
// registration has been performed. |cef_delegate| may be nullptr.
explicit CefViewView(CefViewDelegateClass* cef_delegate)
: cef_delegate_(cef_delegate) {
}
// Should be called from InitializeRootView() in the CefViewImpl-derived
// class that created this object. This method will be called after
// CefViewImpl registration has completed so it is safe to call complex
// views::View-derived methods here.
virtual void Initialize() {
// Use our defaults instead of the Views framework defaults.
ParentClass::set_background(views::Background::CreateSolidBackground(
view_util::kDefaultBackgroundColor));

View File

@@ -484,6 +484,10 @@ CefWindowView* CefWindowImpl::CreateRootView() {
return new CefWindowView(delegate(), this);
}
void CefWindowImpl::InitializeRootView() {
static_cast<CefWindowView*>(root_view())->Initialize();
}
void CefWindowImpl::CreateWidget() {
DCHECK(!widget_);

View File

@@ -114,6 +114,7 @@ class CefWindowImpl :
// CefViewImpl methods:
CefWindowView* CreateRootView() override;
void InitializeRootView() override;
// Initialize the Widget.
void CreateWidget();