mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update to Chromium revision fc6aaca4 (#406441)
This commit is contained in:
@@ -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));
|
||||
|
@@ -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_));
|
||||
}
|
||||
|
||||
|
@@ -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_);
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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.
|
||||
}
|
||||
|
@@ -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() {
|
||||
|
@@ -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));
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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());
|
||||
|
@@ -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 {
|
||||
|
@@ -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() {
|
||||
|
@@ -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_;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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()) {
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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,
|
||||
|
@@ -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));
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -73,6 +73,7 @@ class CefBrowserViewImpl :
|
||||
|
||||
// CefViewImpl methods:
|
||||
CefBrowserViewView* CreateRootView() override;
|
||||
void InitializeRootView() override;
|
||||
|
||||
std::unique_ptr<CefBrowserHostImpl::CreateParams> pending_browser_create_params_;
|
||||
|
||||
|
@@ -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));
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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));
|
||||
|
@@ -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 {
|
||||
|
@@ -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_;
|
||||
|
||||
|
@@ -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));
|
||||
|
@@ -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_);
|
||||
|
||||
|
@@ -114,6 +114,7 @@ class CefWindowImpl :
|
||||
|
||||
// CefViewImpl methods:
|
||||
CefWindowView* CreateRootView() override;
|
||||
void InitializeRootView() override;
|
||||
|
||||
// Initialize the Widget.
|
||||
void CreateWidget();
|
||||
|
Reference in New Issue
Block a user