Update to Chromium revision 12bfc336 (#338390).

- The ffmpeg library is now statically linked (see https://codereview.chromium.org/1141703002).
- Off-screen rendering of the PDF viewer does not work in combination with surfaces. Pass the
  `--disable-surfaces` command-line flag if GPU is enabled (see https://codereview.chromium.org/1169983006).
This commit is contained in:
Marshall Greenblatt 2015-07-23 20:06:56 -04:00
parent 50a9343cec
commit 8da8a4fbf1
69 changed files with 413 additions and 402 deletions

View File

@ -7,5 +7,5 @@
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
{
'chromium_checkout': '14bd12d63019fbdd6f9d6c16b986a5f64a21264b',
'chromium_checkout': '12bfc3360892ec53cd00fc239a47e5298beb063b',
}

View File

@ -278,7 +278,6 @@ if(OS_LINUX)
# List of CEF binary files.
set(CEF_BINARY_FILES
chrome-sandbox
libffmpegsumo.so
libcef.so
natives_blob.bin
snapshot_blob.bin
@ -438,7 +437,6 @@ if(OS_WINDOWS)
set(CEF_BINARY_FILES
d3dcompiler_43.dll
d3dcompiler_47.dll
ffmpegsumo.dll
libcef.dll
libEGL.dll
libGLESv2.dll

12
cef.gyp
View File

@ -949,6 +949,7 @@
'<(DEPTH)/components/components.gyp:pref_registry',
'<(DEPTH)/components/components.gyp:printing_common',
'<(DEPTH)/components/components.gyp:printing_renderer',
'<(DEPTH)/components/components.gyp:proxy_config',
'<(DEPTH)/components/components.gyp:update_client',
'<(DEPTH)/components/components.gyp:user_prefs',
'<(DEPTH)/components/components.gyp:web_cache_renderer',
@ -1276,10 +1277,6 @@
'<(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',
'<(DEPTH)/chrome/browser/prefs/proxy_config_dictionary.h',
'<(DEPTH)/chrome/browser/prefs/proxy_prefs.cc',
'<(DEPTH)/chrome/browser/prefs/proxy_prefs.h',
'<(DEPTH)/chrome/common/pref_names.cc',
'<(DEPTH)/chrome/common/pref_names.h',
'<(DEPTH)/components/data_reduction_proxy/core/common/data_reduction_proxy_switches.cc',
@ -1546,13 +1543,6 @@
},
],
'copies': [
{
# Copy binaries for HTML5 audio/video support.
'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries',
'files': [
'<(PRODUCT_DIR)/ffmpegsumo.so',
],
},
{
# Copy binaries for breakpad support.
'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Resources',

View File

@ -37,6 +37,10 @@
#include "include/base/cef_string16.h"
#include "include/internal/cef_string_types.h"
#if defined(BUILDING_CEF_SHARED)
#include "base/files/file_path.h"
#endif
///
// Traits implementation for wide character strings.
///
@ -692,6 +696,17 @@ class CefStringBase {
return *this;
}
#endif // WCHAR_T_IS_UTF32
#if defined(BUILDING_CEF_SHARED)
// The base::FilePath constructor is marked as explicit so provide the
// conversion here for convenience.
operator base::FilePath() const {
#if defined(OS_WIN)
return base::FilePath(ToWString());
#else
return base::FilePath(ToString());
#endif
}
#endif // BUILDING_CEF_SHARED
private:
// Allocate the string structure if it doesn't already exist.

View File

@ -886,8 +886,7 @@ void CefBrowserHostImpl::StartDownload(const CefString& url) {
if (!manager)
return;
scoped_ptr<content::DownloadUrlParameters> params;
params.reset(
scoped_ptr<content::DownloadUrlParameters> params(
content::DownloadUrlParameters::FromWebContents(web_contents(), gurl));
manager->DownloadUrl(params.Pass());
}
@ -1393,6 +1392,13 @@ bool CefBrowserHostImpl::CanGoBack() {
void CefBrowserHostImpl::GoBack() {
if (CEF_CURRENTLY_ON_UIT()) {
if (frame_destruction_pending_) {
// Try again after frame destruction has completed.
CEF_POST_TASK(CEF_UIT,
base::Bind(&CefBrowserHostImpl::GoBack, this));
return;
}
if (web_contents_.get() && web_contents_->GetController().CanGoBack())
web_contents_->GetController().GoBack();
} else {
@ -1408,6 +1414,13 @@ bool CefBrowserHostImpl::CanGoForward() {
void CefBrowserHostImpl::GoForward() {
if (CEF_CURRENTLY_ON_UIT()) {
if (frame_destruction_pending_) {
// Try again after frame destruction has completed.
CEF_POST_TASK(CEF_UIT,
base::Bind(&CefBrowserHostImpl::GoForward, this));
return;
}
if (web_contents_.get() && web_contents_->GetController().CanGoForward())
web_contents_->GetController().GoForward();
} else {
@ -1423,6 +1436,13 @@ bool CefBrowserHostImpl::IsLoading() {
void CefBrowserHostImpl::Reload() {
if (CEF_CURRENTLY_ON_UIT()) {
if (frame_destruction_pending_) {
// Try again after frame destruction has completed.
CEF_POST_TASK(CEF_UIT,
base::Bind(&CefBrowserHostImpl::Reload, this));
return;
}
if (web_contents_.get())
web_contents_->GetController().Reload(true);
} else {
@ -1433,6 +1453,13 @@ void CefBrowserHostImpl::Reload() {
void CefBrowserHostImpl::ReloadIgnoreCache() {
if (CEF_CURRENTLY_ON_UIT()) {
if (frame_destruction_pending_) {
// Try again after frame destruction has completed.
CEF_POST_TASK(CEF_UIT,
base::Bind(&CefBrowserHostImpl::ReloadIgnoreCache, this));
return;
}
if (web_contents_.get())
web_contents_->GetController().ReloadIgnoringCache(true);
} else {
@ -1443,6 +1470,13 @@ void CefBrowserHostImpl::ReloadIgnoreCache() {
void CefBrowserHostImpl::StopLoad() {
if (CEF_CURRENTLY_ON_UIT()) {
if (frame_destruction_pending_) {
// Try again after frame destruction has completed.
CEF_POST_TASK(CEF_UIT,
base::Bind(&CefBrowserHostImpl::StopLoad, this));
return;
}
if (web_contents_.get())
web_contents_->Stop();
} else {
@ -1719,6 +1753,14 @@ void CefBrowserHostImpl::LoadURL(
if (frame_id == CefFrameHostImpl::kMainFrameId) {
// Go through the navigation controller.
if (CEF_CURRENTLY_ON_UIT()) {
if (frame_destruction_pending_) {
// Try again after frame destruction has completed.
CEF_POST_TASK(CEF_UIT,
base::Bind(&CefBrowserHostImpl::LoadURL, this, frame_id, url,
referrer, transition, extra_headers));
return;
}
if (web_contents_.get()) {
GURL gurl = GURL(url);
@ -2407,7 +2449,7 @@ bool CefBrowserHostImpl::ShouldCreateWebContents(
int route_id,
int main_frame_route_id,
WindowContainerType window_container_type,
const base::string16& frame_name,
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
content::SessionStorageNamespace* session_storage_namespace,
@ -2433,7 +2475,7 @@ bool CefBrowserHostImpl::ShouldCreateWebContents(
void CefBrowserHostImpl::WebContentsCreated(
content::WebContents* source_contents,
int opener_render_frame_id,
const base::string16& frame_name,
const std::string& frame_name,
const GURL& target_url,
content::WebContents* new_contents) {
DCHECK(new_contents);
@ -2675,8 +2717,11 @@ void CefBrowserHostImpl::RenderProcessGone(base::TerminationStatus status) {
if (client_.get()) {
CefRefPtr<CefRequestHandler> handler = client_->GetRequestHandler();
if (handler.get())
if (handler.get()) {
frame_destruction_pending_ = true;
handler->OnRenderProcessTerminated(this, ts);
frame_destruction_pending_ = false;
}
}
}
@ -2700,7 +2745,8 @@ void CefBrowserHostImpl::DidFailProvisionalLoad(
content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
int error_code,
const base::string16& error_description) {
const base::string16& error_description,
bool was_ignored_by_handler) {
const bool is_main_frame = !render_frame_host->GetParent();
CefRefPtr<CefFrame> frame = GetOrCreateFrame(
render_frame_host->GetRoutingID(),
@ -2720,7 +2766,8 @@ void CefBrowserHostImpl::DidFailLoad(
content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
int error_code,
const base::string16& error_description) {
const base::string16& error_description,
bool was_ignored_by_handler) {
const bool is_main_frame = !render_frame_host->GetParent();
CefRefPtr<CefFrame> frame = GetOrCreateFrame(
render_frame_host->GetRoutingID(),
@ -2968,6 +3015,7 @@ CefBrowserHostImpl::CefBrowserHostImpl(
main_frame_id_(CefFrameHostImpl::kInvalidFrameId),
focused_frame_id_(CefFrameHostImpl::kInvalidFrameId),
destruction_state_(DESTRUCTION_STATE_NONE),
frame_destruction_pending_(false),
window_destroyed_(false),
is_in_onsetfocus_(false),
focus_on_editable_field_(false),
@ -3147,11 +3195,13 @@ void CefBrowserHostImpl::OnLoadError(CefRefPtr<CefFrame> frame,
if (client_.get()) {
CefRefPtr<CefLoadHandler> handler = client_->GetLoadHandler();
if (handler.get()) {
frame_destruction_pending_ = true;
// Notify the handler that loading has failed.
handler->OnLoadError(this, frame,
static_cast<cef_errorcode_t>(error_code),
CefString(error_description),
url.spec());
frame_destruction_pending_ = false;
}
}
}

View File

@ -397,7 +397,7 @@ class CefBrowserHostImpl : public CefBrowserHost,
int route_id,
int main_frame_route_id,
WindowContainerType window_container_type,
const base::string16& frame_name,
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
content::SessionStorageNamespace* session_storage_namespace,
@ -405,7 +405,7 @@ class CefBrowserHostImpl : public CefBrowserHost,
content::RenderViewHostDelegateView** delegate_view) override;
void WebContentsCreated(content::WebContents* source_contents,
int opener_render_frame_id,
const base::string16& frame_name,
const std::string& frame_name,
const GURL& target_url,
content::WebContents* new_contents) override;
void DidNavigateMainFramePostCommit(
@ -461,12 +461,14 @@ class CefBrowserHostImpl : public CefBrowserHost,
content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
int error_code,
const base::string16& error_description) override;
const base::string16& error_description,
bool was_ignored_by_handler) override;
void DocumentAvailableInMainFrame() override;
void DidFailLoad(content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
int error_code,
const base::string16& error_description) override;
const base::string16& error_description,
bool was_ignored_by_handler) override;
void FrameDeleted(
content::RenderFrameHost* render_frame_host) override;
void PluginCrashed(const base::FilePath& plugin_path,
@ -662,6 +664,10 @@ class CefBrowserHostImpl : public CefBrowserHost,
// thread.
DestructionState destruction_state_;
// True if frame destruction is currently pending. Navigation should not occur
// while this flag is true.
bool frame_destruction_pending_;
// True if the OS window hosting the browser has been destroyed. Only accessed
// on the UI thread.
bool window_destroyed_;

View File

@ -82,7 +82,6 @@ void CefBrowserMainParts::ToolkitInitialized() {
#if defined(USE_AURA)
CHECK(aura::Env::GetInstance());
DCHECK(!views::ViewsDelegate::views_delegate);
new views::DesktopTestViewsDelegate;
#if defined(OS_WIN)
@ -193,7 +192,9 @@ void CefBrowserMainParts::PostMainMessageLoopRun() {
void CefBrowserMainParts::PostDestroyThreads() {
#if defined(USE_AURA)
aura::Env::DeleteInstance();
delete views::ViewsDelegate::views_delegate;
// Delete the DesktopTestViewsDelegate.
delete views::ViewsDelegate::GetInstance();
#endif
#ifndef NDEBUG

View File

@ -15,10 +15,10 @@
#include "base/values.h"
#include "chrome/browser/net/pref_proxy_config_tracker_impl.h"
#include "chrome/browser/prefs/command_line_pref_store.h"
#include "chrome/browser/prefs/proxy_config_dictionary.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/proxy_config/proxy_config_dictionary.h"
#include "extensions/browser/extension_prefs.h"
#include "grit/cef_strings.h"
#include "ui/base/l10n/l10n_util.h"

View File

@ -58,9 +58,9 @@ class NET_EXPORT CefURLFetcherResponseWriter :
public:
CefURLFetcherResponseWriter(
CefRefPtr<CefBrowserURLRequest> url_request,
scoped_refptr<base::MessageLoopProxy> message_loop_proxy)
scoped_refptr<base::SequencedTaskRunner> task_runner)
: url_request_(url_request),
message_loop_proxy_(message_loop_proxy) {
task_runner_(task_runner) {
}
// net::URLFetcherResponseWriter methods.
@ -72,11 +72,11 @@ class NET_EXPORT CefURLFetcherResponseWriter :
int num_bytes,
const net::CompletionCallback& callback) override {
if (url_request_.get()) {
message_loop_proxy_->PostTask(FROM_HERE,
task_runner_->PostTask(FROM_HERE,
base::Bind(&CefURLFetcherResponseWriter::WriteOnClientThread,
url_request_, scoped_refptr<net::IOBuffer>(buffer),
num_bytes, callback,
base::MessageLoop::current()->message_loop_proxy()));
base::MessageLoop::current()->task_runner()));
return net::ERR_IO_PENDING;
}
return num_bytes;
@ -94,7 +94,7 @@ class NET_EXPORT CefURLFetcherResponseWriter :
scoped_refptr<net::IOBuffer> buffer,
int num_bytes,
const net::CompletionCallback& callback,
scoped_refptr<base::MessageLoopProxy> source_message_loop_proxy) {
scoped_refptr<base::SequencedTaskRunner> source_message_loop_proxy) {
CefRefPtr<CefURLRequestClient> client = url_request->GetClient();
if (client.get())
client->OnDownloadData(url_request.get(), buffer->data(), num_bytes);
@ -111,7 +111,7 @@ class NET_EXPORT CefURLFetcherResponseWriter :
}
CefRefPtr<CefBrowserURLRequest> url_request_;
scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
scoped_refptr<base::SequencedTaskRunner> task_runner_;
DISALLOW_COPY_AND_ASSIGN(CefURLFetcherResponseWriter);
};
@ -137,7 +137,7 @@ class CefBrowserURLRequest::Context
request_(request),
client_(client),
request_context_(request_context),
message_loop_proxy_(base::MessageLoop::current()->message_loop_proxy()),
task_runner_(base::MessageLoop::current()->task_runner()),
status_(UR_IO_PENDING),
error_code_(ERR_NONE),
upload_data_size_(0),
@ -147,7 +147,7 @@ class CefBrowserURLRequest::Context
}
inline bool CalledOnValidThread() {
return message_loop_proxy_->BelongsToCurrentThread();
return task_runner_->RunsTasksOnCurrentThread();
}
bool Start() {
@ -160,14 +160,14 @@ class CefBrowserURLRequest::Context
std::string method = request_->GetMethod();
base::StringToLowerASCII(&method);
net::URLFetcher::RequestType request_type = net::URLFetcher::GET;
if (LowerCaseEqualsASCII(method, "get")) {
} else if (LowerCaseEqualsASCII(method, "post")) {
if (base::LowerCaseEqualsASCII(method, "get")) {
} else if (base::LowerCaseEqualsASCII(method, "post")) {
request_type = net::URLFetcher::POST;
} else if (LowerCaseEqualsASCII(method, "head")) {
} else if (base::LowerCaseEqualsASCII(method, "head")) {
request_type = net::URLFetcher::HEAD;
} else if (LowerCaseEqualsASCII(method, "delete")) {
} else if (base::LowerCaseEqualsASCII(method, "delete")) {
request_type = net::URLFetcher::DELETE_REQUEST;
} else if (LowerCaseEqualsASCII(method, "put")) {
} else if (base::LowerCaseEqualsASCII(method, "put")) {
request_type = net::URLFetcher::PUT;
} else {
NOTREACHED() << "invalid request type";
@ -324,7 +324,7 @@ class CefBrowserURLRequest::Context
response_writer.reset(new CefURLFetcherResponseWriter(NULL, NULL));
} else {
response_writer.reset(
new CefURLFetcherResponseWriter(url_request_, message_loop_proxy_));
new CefURLFetcherResponseWriter(url_request_, task_runner_));
}
fetcher_->SaveResponseWithWriter(response_writer.Pass());
@ -429,7 +429,7 @@ class CefBrowserURLRequest::Context
~Context() {
if (fetcher_.get()) {
// Delete the fetcher object on the thread that created it.
message_loop_proxy_->DeleteSoon(FROM_HERE, fetcher_.release());
task_runner_->DeleteSoon(FROM_HERE, fetcher_.release());
}
}
@ -463,7 +463,7 @@ class CefBrowserURLRequest::Context
CefRefPtr<CefRequest> request_;
CefRefPtr<CefURLRequestClient> client_;
CefRefPtr<CefRequestContext> request_context_;
scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
scoped_refptr<base::SequencedTaskRunner> task_runner_;
scoped_ptr<net::URLFetcher> fetcher_;
scoped_ptr<CefURLFetcherDelegate> fetcher_delegate_;
CefURLRequest::Status status_;

View File

@ -273,3 +273,8 @@ gcm::GCMDriver* ChromeBrowserProcessStub::gcm_driver() {
NOTIMPLEMENTED();
return NULL;
}
memory::OomPriorityManager* ChromeBrowserProcessStub::GetOomPriorityManager() {
NOTIMPLEMENTED();
return NULL;
}

View File

@ -96,6 +96,7 @@ class ChromeBrowserProcessStub : public BrowserProcess {
#endif
network_time::NetworkTimeTracker* network_time_tracker() override;
gcm::GCMDriver* gcm_driver() override;
memory::OomPriorityManager* GetOomPriorityManager() override;
private:
std::string locale_;

View File

@ -209,7 +209,7 @@ const ResourcesMap* CreateResourcesMap() {
const int resource_id = kWebuiResources[i].value;
AddResource(resource_name, resource_id, result);
for (const char* (&alias)[2]: kPathAliases) {
if (StartsWithASCII(resource_name, alias[0], true)) {
if (base::StartsWithASCII(resource_name, alias[0], true)) {
AddResource(alias[1] + resource_name.substr(strlen(alias[0])),
resource_id, result);
}

View File

@ -57,7 +57,6 @@
#include "extensions/browser/guest_view/extensions_guest_view_message_filter.h"
#include "extensions/browser/io_thread_extension_message_filter.h"
#include "extensions/common/constants.h"
#include "gin/v8_initializer.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "third_party/WebKit/public/web/WebWindowFeatures.h"
#include "ui/base/ui_base_switches.h"
@ -718,15 +717,6 @@ void CefContentBrowserClient::AppendExtraCommandLineSwitches(
arraysize(kSwitchNames));
}
#if defined(OS_POSIX) && !defined(OS_MACOSX)
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
if (process_type != switches::kZygoteProcess) {
command_line->AppendSwitch(switches::kV8NativesPassedByFD);
command_line->AppendSwitch(switches::kV8SnapshotPassedByFD);
}
#endif // V8_USE_EXTERNAL_STARTUP_DATA
#endif // OS_POSIX && !OS_MACOSX
#if defined(OS_LINUX)
if (process_type == switches::kZygoteProcess) {
// Propagate the following switches to the zygone command line (along with
@ -858,7 +848,8 @@ bool CefContentBrowserClient::CanCreateWindow(
bool opener_suppressed,
content::ResourceContext* context,
int render_process_id,
int opener_id,
int opener_render_view_id,
int opener_render_frame_id,
bool* no_javascript_access) {
CEF_REQUIRE_IOT();
*no_javascript_access = false;
@ -1003,21 +994,6 @@ void CefContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
const base::CommandLine& command_line,
int child_process_id,
content::FileDescriptorInfo* mappings) {
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
if (v8_natives_fd_.get() == -1 || v8_snapshot_fd_.get() == -1) {
int v8_natives_fd = -1;
int v8_snapshot_fd = -1;
if (gin::V8Initializer::OpenV8FilesForChildProcesses(&v8_natives_fd,
&v8_snapshot_fd)) {
v8_natives_fd_.reset(v8_natives_fd);
v8_snapshot_fd_.reset(v8_snapshot_fd);
}
}
DCHECK(v8_natives_fd_.get() != -1 && v8_snapshot_fd_.get() != -1);
mappings->Share(kV8NativesDataDescriptor, v8_natives_fd_.get());
mappings->Share(kV8SnapshotDataDescriptor, v8_snapshot_fd_.get());
#endif // V8_USE_EXTERNAL_STARTUP_DATA
int crash_signal_fd = GetCrashSignalFD(command_line);
if (crash_signal_fd >= 0) {
mappings->Share(kCrashDumpSignal, crash_signal_fd);

View File

@ -125,7 +125,8 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
bool opener_suppressed,
content::ResourceContext* context,
int render_process_id,
int opener_id,
int opener_render_view_id,
int opener_render_frame_id,
bool* no_javascript_access) override;
void ResourceDispatcherHostCreated() override;
void OverrideWebkitPrefs(content::RenderViewHost* rvh,
@ -159,7 +160,7 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
int opener_view_id;
int64 opener_frame_id;
GURL target_url;
base::string16 target_frame_name;
std::string target_frame_name;
};
void set_last_create_window_params(const LastCreateWindowParams& params);
@ -176,11 +177,6 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
scoped_ptr<CefResourceDispatcherHostDelegate>
resource_dispatcher_host_delegate_;
#if defined(OS_POSIX) && !defined(OS_MACOSX)
base::ScopedFD v8_natives_fd_;
base::ScopedFD v8_snapshot_fd_;
#endif
base::Lock browser_info_lock_;
// Access must be protected by |browser_info_lock_|.

View File

@ -108,9 +108,9 @@ void StreamsPrivateAPI::ExecuteMimeTypeHandler(
CreateResponseHeadersDictionary(stream->response_headers.get(),
&info.response_headers.additional_properties);
scoped_ptr<Event> event(
new Event(streams_private::OnExecuteMimeTypeHandler::kEventName,
streams_private::OnExecuteMimeTypeHandler::Create(info)));
scoped_ptr<Event> event(new Event(
events::UNKNOWN, streams_private::OnExecuteMimeTypeHandler::kEventName,
streams_private::OnExecuteMimeTypeHandler::Create(info)));
EventRouter::Get(browser_context_)
->DispatchEventToExtension(extension_id, event.Pass());

View File

@ -110,7 +110,8 @@ void EventRouterForwarder::CallEventRouter(
scoped_ptr<base::ListValue> event_args,
content::BrowserContext* restrict_to_profile,
const GURL& event_url) {
scoped_ptr<Event> event(new Event(event_name, event_args.Pass()));
scoped_ptr<Event> event(
new Event(events::UNKNOWN, event_name, event_args.Pass()));
event->restrict_to_browser_context = restrict_to_profile;
event->event_url = event_url;
if (extension_id.empty()) {

View File

@ -256,22 +256,26 @@ CefExtensionSystem::ComponentExtensionInfo::ComponentExtensionInfo(
extension_id = GenerateId(manifest, root_directory);
}
// Implementation based on ComponentLoader::Load and
// ExtensionService::AddExtension.
const Extension* CefExtensionSystem::LoadExtension(
const ComponentExtensionInfo& info) {
// Implementation based on ComponentLoader::CreateExtension.
scoped_refptr<const Extension> CefExtensionSystem::CreateExtension(
const ComponentExtensionInfo& info, std::string* utf8_error) {
// TODO(abarth): We should REQUIRE_MODERN_MANIFEST_VERSION once we've updated
// our component extensions to the new manifest version.
int flags = Extension::REQUIRE_KEY;
std::string error;
scoped_refptr<const Extension> extension(Extension::Create(
return Extension::Create(
info.root_directory,
Manifest::COMPONENT,
*info.manifest,
flags,
&error));
utf8_error);
}
// Implementation based on ComponentLoader::Load and
// ExtensionService::AddExtension.
const Extension* CefExtensionSystem::LoadExtension(
const ComponentExtensionInfo& info) {
std::string error;
scoped_refptr<const Extension> extension(CreateExtension(info, &error));
if (!extension.get()) {
LOG(ERROR) << error;
return NULL;

View File

@ -86,6 +86,9 @@ class CefExtensionSystem : public ExtensionSystem {
std::string extension_id;
};
scoped_refptr<const Extension> CreateExtension(
const ComponentExtensionInfo& info, std::string* utf8_error);
// Loads a registered component extension.
const Extension* LoadExtension(const ComponentExtensionInfo& info);

View File

@ -5,7 +5,13 @@
#include "libcef/browser/extensions/extensions_api_client.h"
#include "include/internal/cef_types_wrappers.h"
#include "libcef/browser/extensions/extension_web_contents_observer.h"
#include "libcef/browser/extensions/mime_handler_view_guest_delegate.h"
#include "libcef/browser/extensions/pdf_web_contents_helper_client.h"
#include "libcef/browser/printing/print_view_manager.h"
#include "components/pdf/browser/pdf_web_contents_helper.h"
namespace extensions {
@ -25,4 +31,14 @@ CefExtensionsAPIClient::CreateMimeHandlerViewGuestDelegate(
return make_scoped_ptr(new CefMimeHandlerViewGuestDelegate(guest));
}
void CefExtensionsAPIClient::AttachWebContentsHelpers(
content::WebContents* web_contents) const {
printing::PrintViewManager::CreateForWebContents(web_contents);
pdf::PDFWebContentsHelper::CreateForWebContentsWithClient(
web_contents,
scoped_ptr<pdf::PDFWebContentsHelperClient>(
new CefPDFWebContentsHelperClient()));
CefExtensionWebContentsObserver::CreateForWebContents(web_contents);
}
} // namespace extensions

View File

@ -19,6 +19,8 @@ class CefExtensionsAPIClient : public ExtensionsAPIClient {
scoped_ptr<MimeHandlerViewGuestDelegate>
CreateMimeHandlerViewGuestDelegate(
MimeHandlerViewGuest* guest) const override;
void AttachWebContentsHelpers(content::WebContents* web_contents) const
override;
};
} // namespace extensions

View File

@ -8,6 +8,7 @@
#include "libcef/browser/content_browser_client.h"
#include "libcef/browser/extensions/component_extension_resource_manager.h"
#include "libcef/browser/extensions/extension_system_factory.h"
#include "libcef/browser/extensions/extension_web_contents_observer.h"
#include "libcef/browser/extensions/extensions_api_client.h"
#include "libcef/browser/extensions/url_request_util.h"
@ -226,6 +227,12 @@ bool CefExtensionsBrowserClient::IsMinBrowserVersionSupported(
return true;
}
ExtensionWebContentsObserver*
CefExtensionsBrowserClient::GetExtensionWebContentsObserver(
content::WebContents* web_contents) {
return CefExtensionWebContentsObserver::FromWebContents(web_contents);
}
void CefExtensionsBrowserClient::SetAPIClientForTest(
ExtensionsAPIClient* api_client) {
api_client_.reset(api_client);

View File

@ -81,6 +81,8 @@ class CefExtensionsBrowserClient : public ExtensionsBrowserClient {
ExtensionCache* GetExtensionCache() override;
bool IsBackgroundUpdateAllowed() override;
bool IsMinBrowserVersionSupported(const std::string& min_version) override;
ExtensionWebContentsObserver* GetExtensionWebContentsObserver(
content::WebContents* web_contents) override;
// Sets the API client.
void SetAPIClientForTest(ExtensionsAPIClient* api_client);

View File

@ -5,17 +5,11 @@
#include "libcef/browser/extensions/mime_handler_view_guest_delegate.h"
#include "include/internal/cef_types_wrappers.h"
#include "libcef/browser/browser_host_impl.h"
#include "libcef/browser/browser_info.h"
#include "libcef/browser/content_browser_client.h"
#include "libcef/browser/extensions/extension_web_contents_observer.h"
#include "libcef/browser/extensions/pdf_web_contents_helper_client.h"
#include "libcef/browser/printing/print_view_manager.h"
#include "libcef/browser/web_contents_view_osr.h"
#include "components/pdf/browser/pdf_web_contents_helper.h"
#include "components/pdf/browser/pdf_web_contents_helper_client.h"
#include "content/browser/browser_plugin/browser_plugin_guest.h"
#include "content/browser/web_contents/web_contents_impl.h"
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
@ -37,7 +31,7 @@ CefRefPtr<CefBrowserHostImpl> GetOwnerBrowser(
CefMimeHandlerViewGuestDelegate::CefMimeHandlerViewGuestDelegate(
MimeHandlerViewGuest* guest)
: MimeHandlerViewGuestDelegate(guest), guest_(guest) {
: guest_(guest) {
}
CefMimeHandlerViewGuestDelegate::~CefMimeHandlerViewGuestDelegate() {
@ -58,32 +52,8 @@ void CefMimeHandlerViewGuestDelegate::OverrideWebContentsCreateParams(
bool CefMimeHandlerViewGuestDelegate::OnGuestAttached(
content::WebContentsView* guest_view,
content::WebContentsView* parent_view) {
// Do nothing when the browser is windowless.
return GetOwnerBrowser(guest_)->IsWindowless();
}
bool CefMimeHandlerViewGuestDelegate::OnGuestDetached(
content::WebContentsView* guest_view,
content::WebContentsView* parent_view) {
// Do nothing when the browser is windowless.
return GetOwnerBrowser(guest_)->IsWindowless();
}
bool CefMimeHandlerViewGuestDelegate::CreateViewForWidget(
content::WebContentsView* guest_view,
content::RenderWidgetHost* render_widget_host) {
CefRefPtr<CefBrowserHostImpl> owner_browser = GetOwnerBrowser(guest_);
if (owner_browser->IsWindowless()) {
static_cast<CefWebContentsViewOSR*>(guest_view)->CreateViewForWidget(
render_widget_host, true);
return true;
}
return false;
}
// TODO(lazyboy): Investigate ways to move this out to /extensions.
void CefMimeHandlerViewGuestDelegate::AttachHelpers() {
content::WebContents* web_contents = guest_->web_contents();
DCHECK(web_contents);
// Associate state information with the new WebContents.
content::RenderViewHost* view_host = web_contents->GetRenderViewHost();
@ -106,14 +76,29 @@ void CefMimeHandlerViewGuestDelegate::AttachHelpers() {
web_contents_impl->GetView());
view_osr->set_web_contents(web_contents);
view_osr->set_guest(web_contents_impl->GetBrowserPluginGuest());
return true;
}
printing::PrintViewManager::CreateForWebContents(web_contents);
pdf::PDFWebContentsHelper::CreateForWebContentsWithClient(
web_contents,
scoped_ptr<pdf::PDFWebContentsHelperClient>(
new CefPDFWebContentsHelperClient()));
CefExtensionWebContentsObserver::CreateForWebContents(web_contents);
return false;
}
bool CefMimeHandlerViewGuestDelegate::OnGuestDetached(
content::WebContentsView* guest_view,
content::WebContentsView* parent_view) {
// Do nothing when the browser is windowless.
return GetOwnerBrowser(guest_)->IsWindowless();
}
bool CefMimeHandlerViewGuestDelegate::CreateViewForWidget(
content::WebContentsView* guest_view,
content::RenderWidgetHost* render_widget_host) {
CefRefPtr<CefBrowserHostImpl> owner_browser = GetOwnerBrowser(guest_);
if (owner_browser->IsWindowless()) {
static_cast<CefWebContentsViewOSR*>(guest_view)->CreateViewForWidget(
render_widget_host, true);
return true;
}
return false;
}
bool CefMimeHandlerViewGuestDelegate::HandleContextMenu(

View File

@ -29,7 +29,6 @@ class CefMimeHandlerViewGuestDelegate : public MimeHandlerViewGuestDelegate {
bool CreateViewForWidget(
content::WebContentsView* guest_view,
content::RenderWidgetHost* render_widget_host) override;
void AttachHelpers() override;
bool HandleContextMenu(content::WebContents* web_contents,
const content::ContextMenuParams& params) override;

View File

@ -40,13 +40,13 @@ std::string GetManifest() {
ResourceBundle::GetSharedInstance().GetRawDataResource(
IDR_PDF_MANIFEST).as_string();
DCHECK(manifest_contents.find(kNameTag) != std::string::npos);
ReplaceFirstSubstringAfterOffset(
base::ReplaceFirstSubstringAfterOffset(
&manifest_contents, 0, kNameTag, kPdfPluginName);
DCHECK(manifest_contents.find(kIndexTag) != std::string::npos);
std::string index = switches::PdfMaterialUIEnabled() ?
kMaterialIndex : kRegularIndex;
ReplaceSubstringsAfterOffset(&manifest_contents, 0, kIndexTag, index);
base::ReplaceSubstringsAfterOffset(&manifest_contents, 0, kIndexTag, index);
return manifest_contents;
}

View File

@ -98,7 +98,8 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob {
const net::CompletionCallback& callback,
bool read_result) {
*out_mime_type = *read_mime_type;
if (StartsWithASCII(*read_mime_type, "text/", false)) {
if (base::StartsWith(*read_mime_type, "text/",
base::CompareCase::INSENSITIVE_ASCII)) {
// All of our HTML files should be UTF-8 and for other resource types
// (like images), charset doesn't matter.
DCHECK(base::IsStringUTF8(base::StringPiece(

View File

@ -63,7 +63,7 @@ INT_PTR CALLBACK CefJavaScriptDialog::DialogProc(HWND dialog,
GetWindowTextLength(GetDlgItem(dialog, IDC_PROMPTEDIT)) + 1;
if (length > 1) {
GetDlgItemText(dialog, IDC_PROMPTEDIT,
WriteInto(&user_input, length), length);
base::WriteInto(&user_input, length), length);
}
}
break;
@ -94,9 +94,9 @@ CefJavaScriptDialog::CefJavaScriptDialog(
const content::JavaScriptDialogManager::DialogClosedCallback& callback)
: creator_(creator),
callback_(callback),
message_type_(message_type),
message_text_(message_text),
default_prompt_text_(default_prompt_text),
message_type_(message_type) {
default_prompt_text_(default_prompt_text) {
InstallMessageHook();
int dialog_type;

View File

@ -17,7 +17,6 @@
#include "base/files/file_util_proxy.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/message_loop/message_loop_proxy.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "printing/metafile.h"

View File

@ -397,7 +397,7 @@ class CefCopyFrameGenerator {
// Used to control the VSync rate in subprocesses when BeginFrame scheduling is
// enabled.
class CefBeginFrameTimer : public cc::TimeSourceClient {
class CefBeginFrameTimer : public cc::DelayBasedTimeSourceClient {
public:
CefBeginFrameTimer(int frame_rate_threshold_ms,
const base::Closure& callback)
@ -418,7 +418,7 @@ class CefBeginFrameTimer : public cc::TimeSourceClient {
void SetFrameRateThresholdMs(int frame_rate_threshold_ms) {
time_source_->SetTimebaseAndInterval(
time_source_->Now(),
base::TimeTicks::Now(),
base::TimeDelta::FromMilliseconds(frame_rate_threshold_ms));
}
@ -429,7 +429,7 @@ class CefBeginFrameTimer : public cc::TimeSourceClient {
}
const base::Closure callback_;
scoped_refptr<cc::DelayBasedTimeSource> time_source_;
scoped_ptr<cc::DelayBasedTimeSource> time_source_;
DISALLOW_COPY_AND_ASSIGN(CefBeginFrameTimer);
};
@ -474,7 +474,7 @@ CefRenderWidgetHostViewOSR::CefRenderWidgetHostViewOSR(
compositor_.reset(
new ui::Compositor(compositor_widget_,
content::GetContextFactory(),
base::MessageLoopProxy::current()));
base::ThreadTaskRunnerHandle::Get()));
#endif
compositor_->SetDelegate(this);
compositor_->SetRootLayer(root_layer_.get());

View File

@ -120,7 +120,7 @@ extern "C" {
// We ignore commands that insert characters, because this was causing
// strange behavior (e.g. tab always inserted a tab rather than moving to
// the next field on the page).
if (!StartsWithASCII(command, "insert", false))
if (!base::StartsWithASCII(command, "insert", false))
editCommands_.push_back(content::EditCommand(command, ""));
} else {
renderWidgetHostView_->render_widget_host()->Send(

View File

@ -15,7 +15,7 @@ namespace {
// Create the temporary file and then execute |callback| on the thread
// represented by |message_loop_proxy|.
void CreateTemporaryFileOnFileThread(
scoped_refptr<base::MessageLoopProxy> message_loop_proxy,
scoped_refptr<base::SequencedTaskRunner> message_loop_proxy,
base::Callback<void(const base::FilePath&)> callback) {
CEF_REQUIRE_FILET();
base::FilePath file_path;
@ -81,7 +81,7 @@ bool CefTraceSubscriber::EndTracing(
// Create a new temporary file path on the FILE thread, then continue.
CEF_POST_TASK(CEF_FILET,
base::Bind(CreateTemporaryFileOnFileThread,
base::MessageLoop::current()->message_loop_proxy(),
base::MessageLoop::current()->task_runner(),
base::Bind(&CefTraceSubscriber::ContinueEndTracing,
weak_factory_.GetWeakPtr(), callback)));
return true;

View File

@ -184,6 +184,7 @@ net::URLRequestContext* CefURLRequestContextGetterImpl::GetURLRequestContext() {
url_security_manager_.get(),
url_request_context_->host_resolver(),
std::string(),
std::string(),
false,
false));
storage_->set_http_server_properties(
@ -372,5 +373,5 @@ void CefURLRequestContextGetterImpl::CreateProxyConfigService() {
proxy_config_service_.reset(
net::ProxyService::CreateSystemProxyConfigService(
io_loop_->message_loop_proxy(), file_loop_->message_loop_proxy()));
io_loop_->task_runner(), file_loop_->task_runner()));
}

View File

@ -47,7 +47,7 @@ static const SchemeToFactory kBuiltinFactories[] = {
bool IsBuiltinScheme(const std::string& scheme) {
for (size_t i = 0; i < arraysize(kBuiltinFactories); ++i)
if (LowerCaseEqualsASCII(scheme, kBuiltinFactories[i].scheme))
if (base::LowerCaseEqualsASCII(scheme, kBuiltinFactories[i].scheme))
return true;
return false;
}

View File

@ -98,7 +98,7 @@ CefString CefDragDataImpl::GetFileName() {
// Images without ALT text will only have a file extension so we need to
// synthesize one from the provided extension and URL.
if (file_name.BaseName().RemoveExtension().empty()) {
CefString extension = file_name.Extension();
base::FilePath::StringType extension = file_name.Extension();
// Retrieve the name from the URL.
CefString suggested_file_name =
net::GetSuggestedFilename(data_.url, "", "", "", "", "");

View File

@ -452,17 +452,17 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) {
std::string log_severity_str =
command_line->GetSwitchValueASCII(switches::kLogSeverity);
if (!log_severity_str.empty()) {
if (LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Verbose)) {
if (base::LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Verbose)) {
log_severity = logging::LOG_VERBOSE;
} else if (LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Warning)) {
} else if (base::LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Warning)) {
log_severity = logging::LOG_WARNING;
} else if (LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Error)) {
} else if (base::LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Error)) {
log_severity = logging::LOG_ERROR;
} else if (LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Disable)) {
} else if (base::LowerCaseEqualsASCII(log_severity_str,
switches::kLogSeverity_Disable)) {
log_severity = LOGSEVERITY_DISABLE;
}
}

View File

@ -10,7 +10,7 @@
#include "base/location.h"
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
#include "base/message_loop/message_loop_proxy.h"
#include "base/thread_task_runner_handle.h"
#include "content/public/browser/browser_thread.h"
using content::BrowserThread;
@ -94,7 +94,7 @@ scoped_refptr<base::SequencedTaskRunner>
BrowserThread::UnsafeGetMessageLoopForThread(
static_cast<BrowserThread::ID>(id));
if (message_loop)
return message_loop->message_loop_proxy();
return message_loop->task_runner();
}
return NULL;
@ -107,7 +107,7 @@ scoped_refptr<base::SequencedTaskRunner>
// Check for a MessageLoopProxy. This covers all of the named browser and
// render process threads, plus a few extra.
task_runner = base::MessageLoopProxy::current();
task_runner = base::ThreadTaskRunnerHandle::Get();
if (!task_runner.get()) {
// Check for a WebWorker thread.

View File

@ -668,10 +668,10 @@ void CefBrowserImpl::OnRequest(const Cef_Request_Params& params) {
params.arguments.GetString(0, &command);
DCHECK(!command.empty());
if (LowerCaseEqualsASCII(command, "getsource")) {
if (base::LowerCaseEqualsASCII(command, "getsource")) {
response = web_frame->contentAsMarkup().utf8();
success = true;
} else if (LowerCaseEqualsASCII(command, "gettext")) {
} else if (base::LowerCaseEqualsASCII(command, "gettext")) {
response = webkit_glue::DumpDocumentText(web_frame);
success = true;
} else if (web_frame->executeCommand(base::UTF8ToUTF16(command))) {

View File

@ -247,9 +247,6 @@ void CefContentRendererClient::WebKitInitialized() {
// Create global objects associated with the default Isolate.
CefV8IsolateCreated();
blink::WebRuntimeFeatures::enableMediaPlayer(
media::IsMediaLibraryInitialized());
// TODO(cef): Enable these once the implementation supports it.
blink::WebRuntimeFeatures::enableNotifications(false);
@ -425,7 +422,7 @@ void CefContentRendererClient::RenderThreadStarted() {
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
render_task_runner_ = base::MessageLoopProxy::current();
render_task_runner_ = base::ThreadTaskRunnerHandle::Get();
observer_.reset(new CefRenderProcessObserver());
web_cache_observer_.reset(new web_cache::WebCacheRenderProcessObserver());
@ -446,13 +443,6 @@ void CefContentRendererClient::RenderThreadStarted() {
base::MessageLoop::current()->AddDestructionObserver(this);
}
// Note that under Linux, the media library will normally already have
// been initialized by the Zygote before this instance became a Renderer.
base::FilePath media_path;
PathService::Get(content::DIR_MEDIA_LIBS, &media_path);
if (!media_path.empty())
media::InitializeMediaLibrary(media_path);
blink::WebPrerenderingSupport::initialize(new CefPrerenderingSupport());
// Retrieve the new render thread information synchronously.
@ -566,7 +556,7 @@ bool CefContentRendererClient::OverrideCreatePlugin(
if (orig_mime_type == content::kBrowserPluginMimeType) {
bool guest_view_api_available = false;
extension_dispatcher_->script_context_set().ForEach(
render_frame->GetRenderView(),
render_frame,
base::Bind(&IsGuestViewApiAvailableToScriptContext,
&guest_view_api_available));
if (guest_view_api_available)

View File

@ -104,8 +104,8 @@ bool CefDOMNodeImpl::IsEditable() {
// Also return true if it has an ARIA role of 'textbox'.
for (unsigned i = 0; i < element.attributeCount(); ++i) {
if (LowerCaseEqualsASCII(element.attributeLocalName(i), "role")) {
if (LowerCaseEqualsASCII(element.attributeValue(i), "textbox"))
if (base::LowerCaseEqualsASCII(element.attributeLocalName(i), "role")) {
if (base::LowerCaseEqualsASCII(element.attributeValue(i), "textbox"))
return true;
break;
}

View File

@ -81,7 +81,7 @@ class CefRenderURLRequest::Context
: url_request_(url_request),
request_(request),
client_(client),
message_loop_proxy_(base::MessageLoop::current()->message_loop_proxy()),
task_runner_(base::MessageLoop::current()->task_runner()),
status_(UR_IO_PENDING),
error_code_(ERR_NONE),
upload_data_size_(0),
@ -93,7 +93,7 @@ class CefRenderURLRequest::Context
}
inline bool CalledOnValidThread() {
return message_loop_proxy_->BelongsToCurrentThread();
return task_runner_->RunsTasksOnCurrentThread();
}
bool Start() {
@ -233,7 +233,7 @@ class CefRenderURLRequest::Context
CefRefPtr<CefRenderURLRequest> url_request_;
CefRefPtr<CefRequest> request_;
CefRefPtr<CefURLRequestClient> client_;
scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
scoped_refptr<base::SequencedTaskRunner> task_runner_;
CefURLRequest::Status status_;
CefURLRequest::ErrorCode error_code_;
CefRefPtr<CefResponse> response_;

View File

@ -117,13 +117,6 @@ patches = [
'name': 'prefs_content_1161',
'path': '../content/',
},
{
# Revert Blink revision 177068 changes due to _web_drawFocusRingWithFrame
# unrecognized selector error during offscreen rendering of popups.
# https://code.google.com/p/chromium/issues/detail?id=328814
'name': 'webkit_platform_mac_328814',
'path': '../third_party/WebKit/Source/platform/mac/',
},
{
# Fix drag&drop of combined text and URL data on Linux/Aura.
# https://codereview.chromium.org/208313009
@ -137,12 +130,6 @@ patches = [
'name': 'spellcheck_137',
'path': '../chrome/browser/spellchecker/',
},
{
# Fix crash when calling LoadURL/Reload from OnRenderProcessTerminated.
# https://code.google.com/p/chromiumembedded/issues/detail?id=1429
'name': 'render_process_host_1429',
'path': '../content/browser/renderer_host/',
},
{
# Fix multiple definition of 'AtomicOps_Internalx86CPUFeatures' on Linux.
# https://code.google.com/p/chromium/issues/detail?id=455263
@ -178,7 +165,9 @@ patches = [
{
# Enable support for print header and footer.
# https://bitbucket.org/chromiumembedded/cef/issue/1478
'name': 'print_header_footer_1478',
# Fix printing of PDF documents via PrintToPDF.
# https://bitbucket.org/chromiumembedded/cef/issues/1565
'name': 'print_header_footer_1478_1565',
'path': '../components/',
},
]

View File

@ -1,8 +1,8 @@
diff --git browser/browser_plugin/browser_plugin_guest.cc browser/browser_plugin/browser_plugin_guest.cc
index f438805..d199c6b 100644
index 092a045..baea4bb 100644
--- browser/browser_plugin/browser_plugin_guest.cc
+++ browser/browser_plugin/browser_plugin_guest.cc
@@ -19,7 +19,7 @@
@@ -23,7 +23,7 @@
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/browser/web_contents/web_contents_impl.h"
@ -11,29 +11,33 @@ index f438805..d199c6b 100644
#include "content/common/browser_plugin/browser_plugin_constants.h"
#include "content/common/browser_plugin/browser_plugin_messages.h"
#include "content/common/content_constants_internal.h"
@@ -262,15 +262,16 @@ void BrowserPluginGuest::InitInternal(
@@ -277,21 +277,20 @@ void BrowserPluginGuest::InitInternal(
guest_window_rect_ = params.view_rect;
if (owner_web_contents_ != owner_web_contents) {
- WebContentsViewGuest* new_view =
- static_cast<WebContentsViewGuest*>(GetWebContents()->GetView());
- if (owner_web_contents_)
- WebContentsViewGuest* new_view = nullptr;
+ WebContentsView* new_view = nullptr;
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kSitePerProcess)) {
- new_view =
- static_cast<WebContentsViewGuest*>(GetWebContents()->GetView());
+ new_view = GetWebContents()->GetView();
}
if (owner_web_contents_ && new_view)
- new_view->OnGuestDetached(owner_web_contents_->GetView());
+ if (owner_web_contents_) {
+ delegate_->OnGuestDetached(GetWebContents()->GetView(),
+ owner_web_contents_->GetView());
+ }
+ delegate_->OnGuestDetached(new_view, owner_web_contents_->GetView());
// Once a BrowserPluginGuest has an embedder WebContents, it's considered to
// be attached.
owner_web_contents_ = owner_web_contents;
- new_view->OnGuestAttached(owner_web_contents_->GetView());
+ delegate_->OnGuestAttached(GetWebContents()->GetView(),
+ owner_web_contents_->GetView());
if (new_view)
- new_view->OnGuestAttached(owner_web_contents_->GetView());
+ delegate_->OnGuestAttached(new_view, owner_web_contents_->GetView());
}
RendererPreferences* renderer_prefs =
@@ -656,12 +657,9 @@ void BrowserPluginGuest::OnWillAttachComplete(
@@ -733,12 +732,9 @@ void BrowserPluginGuest::OnWillAttachComplete(
// This will trigger a callback to RenderViewReady after a round-trip IPC.
static_cast<RenderViewHostImpl*>(
GetWebContents()->GetRenderViewHost())->Init();

View File

@ -1,15 +1,21 @@
diff --git web_contents_impl.cc web_contents_impl.cc
index 4ab69e9..7c119d1 100644
index 3aedda6..b4aa061 100644
--- web_contents_impl.cc
+++ web_contents_impl.cc
@@ -1232,22 +1232,29 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
@@ -1312,24 +1312,31 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
params.main_frame_routing_id);
frame_tree_.root()->SetFrameName(params.main_frame_name);
- WebContentsViewDelegate* delegate =
- GetContentClient()->browser()->GetWebContentsViewDelegate(this);
-
- if (browser_plugin_guest_) {
+ if (params.view && params.delegate_view) {
+ view_.reset(params.view);
+ render_view_host_delegate_view_ = params.delegate_view;
+ }
- if (browser_plugin_guest_ &&
- !base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kSitePerProcess)) {
- scoped_ptr<WebContentsView> platform_view(CreateWebContentsView(
- this, delegate, &render_view_host_delegate_view_));
-
@ -22,16 +28,13 @@ index 4ab69e9..7c119d1 100644
- // Regular WebContentsView.
- view_.reset(CreateWebContentsView(
- this, delegate, &render_view_host_delegate_view_));
+ if (params.view && params.delegate_view) {
+ view_.reset(params.view);
+ render_view_host_delegate_view_ = params.delegate_view;
+ }
+
+ if (!view_) {
+ WebContentsViewDelegate* delegate =
+ GetContentClient()->browser()->GetWebContentsViewDelegate(this);
+
+ if (browser_plugin_guest_) {
+ if (browser_plugin_guest_ &&
+ !base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kSitePerProcess)) {
+ scoped_ptr<WebContentsView> platform_view(CreateWebContentsView(
+ this, delegate, &render_view_host_delegate_view_));
+
@ -48,7 +51,7 @@ index 4ab69e9..7c119d1 100644
}
CHECK(render_view_host_delegate_view_);
CHECK(view_.get());
@@ -1583,6 +1590,9 @@ void WebContentsImpl::CreateNewWindow(
@@ -1665,6 +1672,9 @@ void WebContentsImpl::CreateNewWindow(
static_cast<SessionStorageNamespaceImpl*>(session_storage_namespace);
CHECK(session_storage_namespace_impl->IsFromContext(dom_storage_context));
@ -58,7 +61,7 @@ index 4ab69e9..7c119d1 100644
if (delegate_ &&
!delegate_->ShouldCreateWebContents(this,
route_id,
@@ -1591,7 +1601,9 @@ void WebContentsImpl::CreateNewWindow(
@@ -1673,7 +1683,9 @@ void WebContentsImpl::CreateNewWindow(
params.frame_name,
params.target_url,
partition_id,
@ -69,12 +72,12 @@ index 4ab69e9..7c119d1 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
@@ -1612,6 +1624,8 @@ void WebContentsImpl::CreateNewWindow(
create_params.main_frame_name = base::UTF16ToUTF8(params.frame_name);
create_params.opener = this;
@@ -1695,6 +1707,8 @@ void WebContentsImpl::CreateNewWindow(
create_params.opener_render_process_id = GetRenderProcessHost()->GetID();
create_params.opener_render_frame_id = params.opener_render_frame_id;
create_params.opener_suppressed = params.opener_suppressed;
+ create_params.view = view;
+ create_params.delegate_view = delegate_view;
if (params.disposition == NEW_BACKGROUND_TAB)
create_params.initially_hidden = true;
create_params.renderer_initiated_creation = true;
create_params.renderer_initiated_creation =

View File

@ -1,5 +1,5 @@
diff --git common.gypi common.gypi
index cfa4352..b701fcc 100644
index a0ebbf3..10dfe71 100644
--- common.gypi
+++ common.gypi
@@ -9,6 +9,9 @@

View File

@ -1,9 +1,9 @@
diff --git ui/browser.cc ui/browser.cc
index 1cc78f2..e2c4de0 100644
index 242f79b..66326ef 100644
--- ui/browser.cc
+++ ui/browser.cc
@@ -1606,7 +1606,9 @@ bool Browser::ShouldCreateWebContents(
const base::string16& frame_name,
@@ -1666,7 +1666,9 @@ bool Browser::ShouldCreateWebContents(
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) {
@ -14,11 +14,11 @@ index 1cc78f2..e2c4de0 100644
// If a BackgroundContents is created, suppress the normal WebContents.
return !MaybeCreateBackgroundContents(route_id,
diff --git ui/browser.h ui/browser.h
index c4a3a62..0cfedfa 100644
index 9bb2137..6dbdcbf 100644
--- ui/browser.h
+++ ui/browser.h
@@ -590,7 +590,9 @@ class Browser : public TabStripModelObserver,
const base::string16& frame_name,
@@ -593,7 +593,9 @@ class Browser : public TabStripModelObserver,
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) override;
@ -27,4 +27,4 @@ index c4a3a62..0cfedfa 100644
+ content::RenderViewHostDelegateView** delegate_view) override;
void WebContentsCreated(content::WebContents* source_contents,
int opener_render_frame_id,
const base::string16& frame_name,
const std::string& frame_name,

View File

@ -1,8 +1,8 @@
diff --git content/browser/compositor/gpu_process_transport_factory.cc content/browser/compositor/gpu_process_transport_factory.cc
index 68ee72c..6c8e8eb7 100644
index 35db2b9..b9adc3f 100644
--- content/browser/compositor/gpu_process_transport_factory.cc
+++ content/browser/compositor/gpu_process_transport_factory.cc
@@ -141,6 +141,13 @@ GpuProcessTransportFactory::CreateOffscreenCommandBufferContext() {
@@ -139,6 +139,13 @@ GpuProcessTransportFactory::CreateOffscreenCommandBufferContext() {
scoped_ptr<cc::SoftwareOutputDevice>
GpuProcessTransportFactory::CreateSoftwareOutputDevice(
ui::Compositor* compositor) {
@ -17,7 +17,7 @@ index 68ee72c..6c8e8eb7 100644
return scoped_ptr<cc::SoftwareOutputDevice>(
new SoftwareOutputDeviceWin(software_backing_.get(), compositor));
diff --git ui/compositor/compositor.h ui/compositor/compositor.h
index e82c49d..97b438bf 100644
index f703771..307a2ab 100644
--- ui/compositor/compositor.h
+++ ui/compositor/compositor.h
@@ -15,6 +15,7 @@
@ -56,7 +56,7 @@ index e82c49d..97b438bf 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
@@ -331,6 +346,8 @@ class COMPOSITOR_EXPORT Compositor
@@ -335,6 +350,8 @@ class COMPOSITOR_EXPORT Compositor
ui::ContextFactory* context_factory_;

View File

@ -1,5 +1,5 @@
diff --git public/renderer/content_renderer_client.cc public/renderer/content_renderer_client.cc
index 524a6cd..29aac98 100644
index 7c6957b..c7270f1 100644
--- public/renderer/content_renderer_client.cc
+++ public/renderer/content_renderer_client.cc
@@ -101,7 +101,6 @@ bool ContentRendererClient::AllowPopup() {
@ -16,13 +16,13 @@ index 524a6cd..29aac98 100644
}
-#endif
bool ContentRendererClient::ShouldFork(blink::WebFrame* frame,
bool ContentRendererClient::ShouldFork(blink::WebLocalFrame* frame,
const GURL& url,
diff --git public/renderer/content_renderer_client.h public/renderer/content_renderer_client.h
index 8c7d4fe..b88a6c9 100644
index 2a0517a..9a0d4e4 100644
--- public/renderer/content_renderer_client.h
+++ public/renderer/content_renderer_client.h
@@ -197,7 +197,6 @@ class CONTENT_EXPORT ContentRendererClient {
@@ -198,7 +198,6 @@ class CONTENT_EXPORT ContentRendererClient {
// Returns true if a popup window should be allowed.
virtual bool AllowPopup();
@ -30,7 +30,7 @@ index 8c7d4fe..b88a6c9 100644
// TODO(sgurun) This callback is deprecated and will be removed as soon
// as android webview completes implementation of a resource throttle based
// shouldoverrideurl implementation. See crbug.com/325351
@@ -212,7 +211,6 @@ class CONTENT_EXPORT ContentRendererClient {
@@ -213,7 +212,6 @@ class CONTENT_EXPORT ContentRendererClient {
blink::WebNavigationType type,
blink::WebNavigationPolicy default_policy,
bool is_redirect);
@ -39,10 +39,10 @@ index 8c7d4fe..b88a6c9 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 f67a40a..4b5b3f2 100644
index bee5039..a818d6e 100644
--- renderer/render_frame_impl.cc
+++ renderer/render_frame_impl.cc
@@ -4088,7 +4088,6 @@ void RenderFrameImpl::OnFailedNavigation(
@@ -4186,7 +4186,6 @@ void RenderFrameImpl::OnFailedNavigation(
WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
RenderFrame* render_frame,
const NavigationPolicyInfo& info) {
@ -50,7 +50,7 @@ index f67a40a..4b5b3f2 100644
// The handlenavigation API is deprecated and will be removed once
// crbug.com/325351 is resolved.
if (info.urlRequest.url() != GURL(kSwappedOutURL) &&
@@ -4103,7 +4102,6 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
@@ -4201,7 +4200,6 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
info.isRedirect)) {
return blink::WebNavigationPolicyIgnore;
}

View File

@ -1,9 +1,9 @@
diff --git browser/guest_view/extension_options/extension_options_guest.cc browser/guest_view/extension_options/extension_options_guest.cc
index c882315..ff6d25f 100644
index cb9cdd5..8ad7ee0 100644
--- browser/guest_view/extension_options/extension_options_guest.cc
+++ browser/guest_view/extension_options/extension_options_guest.cc
@@ -208,7 +208,9 @@ bool ExtensionOptionsGuest::ShouldCreateWebContents(
const base::string16& frame_name,
@@ -195,7 +195,9 @@ bool ExtensionOptionsGuest::ShouldCreateWebContents(
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) {
@ -14,11 +14,11 @@ index c882315..ff6d25f 100644
// view is used for displaying embedded extension options, we want any
// external links to be opened in a new tab, not in a new guest view.
diff --git browser/guest_view/extension_options/extension_options_guest.h browser/guest_view/extension_options/extension_options_guest.h
index b62d81a..8176f84 100644
index 916b5ed..1dec304 100644
--- browser/guest_view/extension_options/extension_options_guest.h
+++ browser/guest_view/extension_options/extension_options_guest.h
@@ -54,7 +54,9 @@ class ExtensionOptionsGuest
const base::string16& frame_name,
@@ -48,7 +48,9 @@ class ExtensionOptionsGuest
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) override;

View File

@ -1,5 +1,5 @@
diff --git resource_ids resource_ids
index 20fc28b..85f1566 100644
index 49973d1..86cc523 100644
--- resource_ids
+++ resource_ids
@@ -14,6 +14,12 @@

View File

@ -1,8 +1,8 @@
diff --git input_method_win.cc input_method_win.cc
index 29413f5..e1e2bd0 100644
index 0870fde..23d8038 100644
--- input_method_win.cc
+++ input_method_win.cc
@@ -571,8 +571,9 @@ bool InputMethodWin::IsWindowFocused(const TextInputClient* client) const {
@@ -567,8 +567,9 @@ bool InputMethodWin::IsWindowFocused(const TextInputClient* client) const {
// receiving keyboard input as long as it is an active window. This works well
// even when the |attached_window_handle| becomes active but has not received
// WM_FOCUS yet.

View File

@ -1,5 +1,5 @@
diff --git message_loop.cc message_loop.cc
index 4222c77..bbc04b4 100644
index 4fecbc5..7298151 100644
--- message_loop.cc
+++ message_loop.cc
@@ -134,12 +134,6 @@ MessageLoop::~MessageLoop() {

View File

@ -1,8 +1,8 @@
diff --git mime_handler_view_guest.cc mime_handler_view_guest.cc
index 61fd142..ed9a58d 100644
index 2f44662..26524c4 100644
--- mime_handler_view_guest.cc
+++ mime_handler_view_guest.cc
@@ -142,6 +142,8 @@ void MimeHandlerViewGuest::CreateWebContents(
@@ -134,6 +134,8 @@ void MimeHandlerViewGuest::CreateWebContents(
WebContents::CreateParams params(browser_context(),
guest_site_instance.get());
params.guest_delegate = this;
@ -11,7 +11,7 @@ index 61fd142..ed9a58d 100644
callback.Run(WebContents::Create(params));
}
@@ -183,6 +185,30 @@ bool MimeHandlerViewGuest::StopFinding(content::StopFindAction action) {
@@ -172,6 +174,30 @@ bool MimeHandlerViewGuest::StopFinding(content::StopFindAction action) {
return false;
}
@ -43,10 +43,10 @@ index 61fd142..ed9a58d 100644
content::WebContents* source,
const content::OpenURLParams& params) {
diff --git mime_handler_view_guest.h mime_handler_view_guest.h
index f95aab7..fe4944e 100644
index 33ff28e..2d9a00e 100644
--- mime_handler_view_guest.h
+++ mime_handler_view_guest.h
@@ -76,6 +76,13 @@ class MimeHandlerViewGuest : public guest_view::GuestView<MimeHandlerViewGuest>,
@@ -71,6 +71,13 @@ class MimeHandlerViewGuest :
const base::string16& search_text,
const blink::WebFindOptions& options) override;
bool StopFinding(content::StopFindAction action) override;
@ -90,7 +90,7 @@ index 63b81b8..0f63f48 100644
content::WebContents* web_contents,
const content::ContextMenuParams& params) {
diff --git mime_handler_view_guest_delegate.h mime_handler_view_guest_delegate.h
index b9a6fe3..6a2c3b0 100644
index e065104..f68b66c 100644
--- mime_handler_view_guest_delegate.h
+++ mime_handler_view_guest_delegate.h
@@ -6,10 +6,11 @@
@ -106,10 +106,11 @@ index b9a6fe3..6a2c3b0 100644
} // namespace content
namespace extensions {
@@ -22,6 +23,21 @@ class MimeHandlerViewGuestDelegate {
explicit MimeHandlerViewGuestDelegate(MimeHandlerViewGuest* guest) {}
@@ -21,6 +22,21 @@ class MimeHandlerViewGuestDelegate {
public:
MimeHandlerViewGuestDelegate() {}
virtual ~MimeHandlerViewGuestDelegate() {}
+
+ // Provides an opportunity to supply a custom view implementation.
+ virtual void OverrideWebContentsCreateParams(
+ content::WebContents::CreateParams* params) {}
@ -124,7 +125,6 @@ index b9a6fe3..6a2c3b0 100644
+ virtual bool CreateViewForWidget(
+ content::WebContentsView* guest_view,
+ content::RenderWidgetHost* render_widget_host);
+
// Attaches helpers upon initializing the WebContents.
virtual void AttachHelpers() {}
// Handles context menu, or returns false if unhandled.
virtual bool HandleContextMenu(content::WebContents* web_contents,

View File

@ -1,5 +1,5 @@
diff --git url_request.h url_request.h
index a2b2f6b..150f19f 100644
index 4176689..1fe5976 100644
--- url_request.h
+++ url_request.h
@@ -614,10 +614,10 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe),

View File

@ -1,8 +1,8 @@
diff --git public/common/common_param_traits_macros.h public/common/common_param_traits_macros.h
index 9c8e453..03f5d51 100644
index 060fbb9..f028062 100644
--- public/common/common_param_traits_macros.h
+++ public/common/common_param_traits_macros.h
@@ -192,6 +192,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences)
@@ -195,6 +195,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences)
IPC_STRUCT_TRAITS_MEMBER(main_frame_resizes_are_orientation_changes)
IPC_STRUCT_TRAITS_MEMBER(initialize_at_minimum_page_scale)
IPC_STRUCT_TRAITS_MEMBER(smart_insert_delete_enabled)
@ -11,10 +11,10 @@ index 9c8e453..03f5d51 100644
IPC_STRUCT_TRAITS_MEMBER(navigate_on_drag_drop)
IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled)
diff --git public/common/web_preferences.cc public/common/web_preferences.cc
index 6279aba..242fd16 100644
index e140001..42f3b2d 100644
--- public/common/web_preferences.cc
+++ public/common/web_preferences.cc
@@ -187,6 +187,7 @@ WebPreferences::WebPreferences()
@@ -170,6 +170,7 @@ WebPreferences::WebPreferences()
pinch_overlay_scrollbar_thickness(0),
use_solid_color_scrollbars(false),
navigate_on_drag_drop(true),
@ -23,10 +23,10 @@ index 6279aba..242fd16 100644
slimming_paint_enabled(false),
cookie_enabled(true),
diff --git public/common/web_preferences.h public/common/web_preferences.h
index 5dfc5d5..150bdf5 100644
index e8d7d13..493c743 100644
--- public/common/web_preferences.h
+++ public/common/web_preferences.h
@@ -179,6 +179,7 @@ struct CONTENT_EXPORT WebPreferences {
@@ -171,6 +171,7 @@ struct CONTENT_EXPORT WebPreferences {
int pinch_overlay_scrollbar_thickness;
bool use_solid_color_scrollbars;
bool navigate_on_drag_drop;
@ -35,10 +35,10 @@ index 5dfc5d5..150bdf5 100644
bool slimming_paint_enabled;
diff --git renderer/render_view_impl.cc renderer/render_view_impl.cc
index 53ba225..d5ebdd8 100644
index 12f950e..61fc3c1 100644
--- renderer/render_view_impl.cc
+++ renderer/render_view_impl.cc
@@ -945,6 +945,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs,
@@ -1002,6 +1002,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs,
settings->setJavaEnabled(prefs.java_enabled);

View File

@ -1,5 +1,5 @@
diff --git printing/renderer/print_web_view_helper.cc printing/renderer/print_web_view_helper.cc
index 313d12d..558052c 100644
index d315efa..a312f77 100644
--- printing/renderer/print_web_view_helper.cc
+++ printing/renderer/print_web_view_helper.cc
@@ -75,6 +75,7 @@ const double kMinDpi = 1.0;
@ -18,7 +18,7 @@ index 313d12d..558052c 100644
int GetDPI(const PrintMsg_Print_Params* print_params) {
#if defined(OS_MACOSX)
@@ -474,7 +474,6 @@ blink::WebView* FrameReference::view() {
@@ -480,7 +480,6 @@ blink::WebView* FrameReference::view() {
return view_;
}
@ -26,7 +26,7 @@ index 313d12d..558052c 100644
// static - Not anonymous so that platform implementations can use it.
void PrintWebViewHelper::PrintHeaderAndFooter(
blink::WebCanvas* canvas,
@@ -532,7 +531,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter(
@@ -538,7 +537,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter(
web_view->close();
frame->close();
}
@ -34,8 +34,35 @@ index 313d12d..558052c 100644
// static - Not anonymous so that platform implementations can use it.
float PrintWebViewHelper::RenderPageContent(blink::WebFrame* frame,
@@ -813,6 +811,7 @@ PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view,
print_for_preview_(false),
delegate_(delegate.Pass()),
print_node_in_progress_(false),
+ force_print_preview_(false),
is_loading_(false),
is_scripted_preview_delayed_(false),
ipc_nesting_level_(0),
@@ -1254,7 +1253,9 @@ void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) {
// that instead.
auto plugin = delegate_->GetPdfElement(frame);
if (!plugin.isNull()) {
+ force_print_preview_ = true;
PrintNode(plugin);
+ force_print_preview_ = false;
return;
}
print_preview_context_.InitWithFrame(frame);
@@ -1287,7 +1288,7 @@ void PrintWebViewHelper::PrintNode(const blink::WebNode& node) {
// Make a copy of the node, in case RenderView::OnContextMenuClosed resets
// its |context_menu_node_|.
- if (!g_is_preview_enabled_) {
+ if (!g_is_preview_enabled_ && !force_print_preview_) {
blink::WebNode duplicate_node(node);
Print(duplicate_node.document().frame(), duplicate_node, false);
} else {
diff --git printing/renderer/print_web_view_helper.h printing/renderer/print_web_view_helper.h
index 341ec8e..47777b8 100644
index 54179ff..0c48602 100644
--- printing/renderer/print_web_view_helper.h
+++ printing/renderer/print_web_view_helper.h
@@ -309,7 +309,6 @@ class PrintWebViewHelper
@ -54,11 +81,19 @@ index 341ec8e..47777b8 100644
bool GetPrintFrame(blink::WebLocalFrame** frame);
@@ -498,6 +496,7 @@ class PrintWebViewHelper
ScriptingThrottler scripting_throttler_;
bool print_node_in_progress_;
+ bool force_print_preview_;
PrintPreviewContext print_preview_context_;
bool is_loading_;
bool is_scripted_preview_delayed_;
diff --git printing/renderer/print_web_view_helper_linux.cc printing/renderer/print_web_view_helper_linux.cc
index 79b82e9..8d1f6f4 100644
index 61a1a1d..f931979 100644
--- printing/renderer/print_web_view_helper_linux.cc
+++ printing/renderer/print_web_view_helper_linux.cc
@@ -169,7 +169,6 @@ void PrintWebViewHelper::PrintPageInternal(
@@ -172,7 +172,6 @@ void PrintWebViewHelper::PrintPageInternal(
MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
@ -66,7 +101,7 @@ index 79b82e9..8d1f6f4 100644
if (params.params.display_header_footer) {
// |page_number| is 0-based, so 1 is added.
// TODO(vitalybuka) : why does it work only with 1.25?
@@ -178,7 +177,6 @@ void PrintWebViewHelper::PrintPageInternal(
@@ -181,7 +180,6 @@ void PrintWebViewHelper::PrintPageInternal(
scale_factor / 1.25, page_layout_in_points,
params.params);
}

View File

@ -1,8 +1,8 @@
diff --git web_contents.cc web_contents.cc
index a0c8a4d..1c102ae 100644
index 887f242..a7cc318 100644
--- web_contents.cc
+++ web_contents.cc
@@ -19,7 +19,9 @@ WebContents::CreateParams::CreateParams(BrowserContext* context)
@@ -21,7 +21,9 @@ WebContents::CreateParams::CreateParams(BrowserContext* context)
initially_hidden(false),
guest_delegate(nullptr),
context(nullptr),
@ -13,7 +13,7 @@ index a0c8a4d..1c102ae 100644
WebContents::CreateParams::CreateParams(
BrowserContext* context, SiteInstance* site)
@@ -33,7 +35,9 @@ WebContents::CreateParams::CreateParams(
@@ -36,7 +38,9 @@ WebContents::CreateParams::CreateParams(
initially_hidden(false),
guest_delegate(nullptr),
context(nullptr),
@ -25,7 +25,7 @@ index a0c8a4d..1c102ae 100644
WebContents::CreateParams::~CreateParams() {
}
diff --git web_contents.h web_contents.h
index 768ece2..9c2d863 100644
index 4ed6a40..2bbba64 100644
--- web_contents.h
+++ web_contents.h
@@ -52,9 +52,11 @@ class PageState;
@ -40,7 +40,7 @@ index 768ece2..9c2d863 100644
struct CustomContextMenuContext;
struct DropData;
struct Manifest;
@@ -139,6 +141,10 @@ class WebContents : public PageNavigator,
@@ -141,6 +143,10 @@ class WebContents : public PageNavigator,
// RenderFrame, have already been created on the renderer side, and
// WebContents construction should take this into account.
bool renderer_initiated_creation;
@ -52,11 +52,11 @@ index 768ece2..9c2d863 100644
// Creates a new WebContents.
diff --git web_contents_delegate.cc web_contents_delegate.cc
index b1fc250..555e25d 100644
index 016097b..4fb00ed 100644
--- web_contents_delegate.cc
+++ web_contents_delegate.cc
@@ -136,7 +136,9 @@ bool WebContentsDelegate::ShouldCreateWebContents(
const base::string16& frame_name,
@@ -138,7 +138,9 @@ bool WebContentsDelegate::ShouldCreateWebContents(
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- SessionStorageNamespace* session_storage_namespace) {
@ -67,10 +67,10 @@ index b1fc250..555e25d 100644
}
diff --git web_contents_delegate.h web_contents_delegate.h
index 66439df..c8779c9 100644
index 34ddd26..7a850af 100644
--- web_contents_delegate.h
+++ web_contents_delegate.h
@@ -37,9 +37,11 @@ class DownloadItem;
@@ -38,9 +38,11 @@ class DownloadItem;
class JavaScriptDialogManager;
class PageState;
class RenderViewHost;
@ -82,8 +82,8 @@ index 66439df..c8779c9 100644
struct ColorSuggestion;
struct ContextMenuParams;
struct DropData;
@@ -296,7 +298,9 @@ class CONTENT_EXPORT WebContentsDelegate {
const base::string16& frame_name,
@@ -298,7 +300,9 @@ class CONTENT_EXPORT WebContentsDelegate {
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- SessionStorageNamespace* session_storage_namespace);

View File

@ -1,22 +0,0 @@
diff --git render_process_host_impl.cc render_process_host_impl.cc
index f32d2bb..9874d50 100644
--- render_process_host_impl.cc
+++ render_process_host_impl.cc
@@ -2120,6 +2120,8 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead,
#endif
RemoveUserData(kSessionStorageHolderKey);
+ mojo_application_host_.reset(new MojoApplicationHost);
+
IDMap<IPC::Listener>::iterator iter(&listeners_);
while (!iter.IsAtEnd()) {
iter.GetCurrentValue()->OnMessageReceived(
@@ -2129,8 +2131,6 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead,
iter.Advance();
}
- mojo_application_host_.reset(new MojoApplicationHost);
-
// It's possible that one of the calls out to the observers might have caused
// this object to be no longer needed.
if (delayed_cleanup_needed_)

View File

@ -1,5 +1,5 @@
diff --git spellcheck_factory.cc spellcheck_factory.cc
index edbed40..b9a192b 100644
index 4c61d34..9e4f3d1 100644
--- spellcheck_factory.cc
+++ spellcheck_factory.cc
@@ -16,6 +16,13 @@

View File

@ -1,8 +1,8 @@
diff --git os_exchange_data_provider_aurax11.cc os_exchange_data_provider_aurax11.cc
index c9285a0..f82f90a 100644
index e7a815c..8188710 100644
--- os_exchange_data_provider_aurax11.cc
+++ os_exchange_data_provider_aurax11.cc
@@ -158,7 +158,8 @@ void OSExchangeDataProviderAuraX11::SetURL(const GURL& url,
@@ -159,7 +159,8 @@ void OSExchangeDataProviderAuraX11::SetURL(const GURL& url,
format_map_.Insert(atom_cache_.GetAtom(kMimeTypeMozillaURL), mem);
// Set a string fallback as well.

View File

@ -1,9 +1,9 @@
diff --git web_dialog_view.cc web_dialog_view.cc
index 4a5a114..b28fb3c 100644
index 4b5e8b2..1501d0b 100644
--- web_dialog_view.cc
+++ web_dialog_view.cc
@@ -340,7 +340,9 @@ bool WebDialogView::ShouldCreateWebContents(
const base::string16& frame_name,
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) {
@ -14,11 +14,11 @@ index 4a5a114..b28fb3c 100644
return delegate_->HandleShouldCreateWebContents();
return true;
diff --git web_dialog_view.h web_dialog_view.h
index 22550dd..8d72f6d 100644
index dc6598d..ce2616c 100644
--- web_dialog_view.h
+++ web_dialog_view.h
@@ -119,7 +119,9 @@ class WEBVIEW_EXPORT WebDialogView : public views::ClientView,
const base::string16& frame_name,
const std::string& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) override;

View File

@ -12,10 +12,10 @@ index a8e088c..838b6a0 100644
return host ? host->GetAcceleratedWidget() : NULL;
}
diff --git desktop_aura/desktop_window_tree_host_win.cc desktop_aura/desktop_window_tree_host_win.cc
index a663f38..a3dacca 100644
index 93b3c5b..e0e505e 100644
--- desktop_aura/desktop_window_tree_host_win.cc
+++ desktop_aura/desktop_window_tree_host_win.cc
@@ -132,7 +132,9 @@ void DesktopWindowTreeHostWin::Init(aura::Window* content_window,
@@ -131,7 +131,9 @@ void DesktopWindowTreeHostWin::Init(aura::Window* content_window,
native_widget_delegate_);
HWND parent_hwnd = NULL;
@ -26,7 +26,7 @@ index a663f38..a3dacca 100644
parent_hwnd = params.parent->GetHost()->GetAcceleratedWidget();
message_handler_->set_remove_standard_frame(params.remove_standard_frame);
@@ -799,6 +801,7 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() {
@@ -793,6 +795,7 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() {
void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) {
// TODO(beng): inform the native_widget_delegate_.
@ -35,10 +35,10 @@ index a663f38..a3dacca 100644
void DesktopWindowTreeHostWin::HandleNativeBlur(HWND focused_window) {
diff --git desktop_aura/desktop_window_tree_host_x11.cc desktop_aura/desktop_window_tree_host_x11.cc
index 4a8f64c..369867b 100644
index a56deb7..a5e8422 100644
--- desktop_aura/desktop_window_tree_host_x11.cc
+++ desktop_aura/desktop_window_tree_host_x11.cc
@@ -153,7 +153,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
@@ -171,7 +171,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
window_parent_(NULL),
custom_window_shape_(false),
urgency_hint_set_(false),
@ -48,7 +48,7 @@ index 4a8f64c..369867b 100644
}
DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() {
@@ -353,7 +354,8 @@ void DesktopWindowTreeHostX11::CloseNow() {
@@ -381,7 +382,8 @@ void DesktopWindowTreeHostX11::CloseNow() {
// Actually free our native resources.
if (ui::PlatformEventSource::GetInstance())
ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
@ -58,7 +58,7 @@ index 4a8f64c..369867b 100644
xwindow_ = None;
desktop_native_widget_aura_->OnHostClosed();
@@ -466,6 +468,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement(
@@ -525,6 +527,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement(
}
gfx::Rect DesktopWindowTreeHostX11::GetWindowBoundsInScreen() const {
@ -67,7 +67,7 @@ index 4a8f64c..369867b 100644
return ToDIPRect(bounds_in_pixels_);
}
@@ -906,6 +910,8 @@ void DesktopWindowTreeHostX11::HideImpl() {
@@ -962,6 +966,8 @@ void DesktopWindowTreeHostX11::HideImpl() {
}
gfx::Rect DesktopWindowTreeHostX11::GetBounds() const {
@ -76,7 +76,7 @@ index 4a8f64c..369867b 100644
return bounds_in_pixels_;
}
@@ -962,6 +968,8 @@ void DesktopWindowTreeHostX11::SetBounds(
@@ -1018,6 +1024,8 @@ void DesktopWindowTreeHostX11::SetBounds(
}
gfx::Point DesktopWindowTreeHostX11::GetLocationOnNativeScreen() const {
@ -85,7 +85,7 @@ index 4a8f64c..369867b 100644
return bounds_in_pixels_.origin();
}
@@ -1082,9 +1090,13 @@ void DesktopWindowTreeHostX11::InitX11Window(
@@ -1131,9 +1139,13 @@ void DesktopWindowTreeHostX11::InitX11Window(
}
}
@ -100,7 +100,7 @@ index 4a8f64c..369867b 100644
bounds_in_pixels_.y(), bounds_in_pixels_.width(),
bounds_in_pixels_.height(),
0, // border width
@@ -1731,6 +1743,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
@@ -1782,6 +1794,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
}
break;
}
@ -112,19 +112,19 @@ index 4a8f64c..369867b 100644
if (xev->xfocus.mode != NotifyGrab) {
ReleaseCapture();
diff --git desktop_aura/desktop_window_tree_host_x11.h desktop_aura/desktop_window_tree_host_x11.h
index e2fd61f..46434af 100644
index 787372d..d9d57b8 100644
--- desktop_aura/desktop_window_tree_host_x11.h
+++ desktop_aura/desktop_window_tree_host_x11.h
@@ -86,6 +86,8 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
// Deallocates the internal list of open windows.
static void CleanUpWindowList();
@@ -85,6 +85,8 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
// internal list of open windows.
static void CleanUpWindowList(void (*func)(aura::Window* window));
+ void set_screen_bounds(const gfx::Rect& bounds) { screen_bounds_ = bounds; }
+
protected:
// Overridden from DesktopWindowTreeHost:
void Init(aura::Window* content_window,
@@ -265,6 +267,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
@@ -262,6 +264,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
// The bounds of |xwindow_|.
gfx::Rect bounds_in_pixels_;
@ -134,7 +134,7 @@ index e2fd61f..46434af 100644
// Whenever the bounds are set, we keep the previous set of bounds around so
// we can have a better chance of getting the real
// |restored_bounds_in_pixels_|. Window managers tend to send a Configure
@@ -351,6 +356,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
@@ -348,6 +353,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
base::WeakPtrFactory<DesktopWindowTreeHostX11> close_widget_factory_;
@ -145,10 +145,10 @@ index e2fd61f..46434af 100644
};
diff --git widget.cc widget.cc
index b4d2a48..3890ab0 100644
index 280969a..8ea7f0b 100644
--- widget.cc
+++ widget.cc
@@ -110,6 +110,7 @@ Widget::InitParams::InitParams()
@@ -118,6 +118,7 @@ Widget::InitParams::InitParams()
use_system_default_icon(false),
show_state(ui::SHOW_STATE_DEFAULT),
parent(NULL),
@ -156,7 +156,7 @@ index b4d2a48..3890ab0 100644
native_widget(NULL),
desktop_window_tree_host(NULL),
layer_type(ui::LAYER_TEXTURED),
@@ -133,6 +134,7 @@ Widget::InitParams::InitParams(Type type)
@@ -141,6 +142,7 @@ Widget::InitParams::InitParams(Type type)
use_system_default_icon(false),
show_state(ui::SHOW_STATE_DEFAULT),
parent(NULL),
@ -164,7 +164,7 @@ index b4d2a48..3890ab0 100644
native_widget(NULL),
desktop_window_tree_host(NULL),
layer_type(ui::LAYER_TEXTURED),
@@ -307,7 +309,7 @@ void Widget::Init(const InitParams& in_params) {
@@ -315,7 +317,7 @@ void Widget::Init(const InitParams& in_params) {
InitParams params = in_params;
params.child |= (params.type == InitParams::TYPE_CONTROL);
@ -173,7 +173,7 @@ index b4d2a48..3890ab0 100644
if (params.opacity == views::Widget::InitParams::INFER_OPACITY &&
params.type != views::Widget::InitParams::TYPE_WINDOW &&
@@ -370,7 +372,12 @@ void Widget::Init(const InitParams& in_params) {
@@ -378,7 +380,12 @@ void Widget::Init(const InitParams& in_params) {
Minimize();
} else if (params.delegate) {
SetContentsView(params.delegate->GetContentsView());
@ -188,10 +188,10 @@ index b4d2a48..3890ab0 100644
// This must come after SetContentsView() or it might not be able to find
// the correct NativeTheme (on Linux). See http://crbug.com/384492
diff --git widget.h widget.h
index 9c21ea2..aa610fd 100644
index 320332b..8d46883 100644
--- widget.h
+++ widget.h
@@ -234,6 +234,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
@@ -233,6 +233,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
// Whether the widget should be maximized or minimized.
ui::WindowShowState show_state;
gfx::NativeView parent;

View File

@ -1,31 +0,0 @@
diff --git ThemeMac.mm ThemeMac.mm
index 20a4ff0..38cb2c4 100644
--- ThemeMac.mm
+++ ThemeMac.mm
@@ -482,7 +482,7 @@ static void paintButton(ControlPart part, ControlStates states, GraphicsContext*
[buttonCell drawWithFrame:NSRect(inflatedRect) inView:view];
#if !BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING
- if (states & FocusControlState)
+ if (states & FocusState)
[buttonCell _web_drawFocusRingWithFrame:NSRect(inflatedRect) inView:view];
#endif
[buttonCell setControlView:nil];
diff --git WebCoreNSCellExtras.h WebCoreNSCellExtras.h
index 54e9c9a..075e076 100644
--- WebCoreNSCellExtras.h
+++ WebCoreNSCellExtras.h
@@ -26,11 +26,11 @@
#import <AppKit/AppKit.h>
#include "platform/PlatformExport.h"
-#define BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING (!defined(MAC_OS_X_VERSION_10_7) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7)
+#define BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING 1
#if !BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING
-@interface NSCell (WebCoreFocusRingDrawing)
+PLATFORM_EXPORT @interface NSCell (WebCoreFocusRingDrawing)
- (void)_web_drawFocusRingWithFrame:(NSRect)cellFrame inView:(NSView *)controlView;
@end

View File

@ -1,8 +1,8 @@
diff --git Source/web/ChromeClientImpl.cpp Source/web/ChromeClientImpl.cpp
index e1fd006..fa9486b 100644
index 58e8166..23c0cea 100644
--- Source/web/ChromeClientImpl.cpp
+++ Source/web/ChromeClientImpl.cpp
@@ -768,7 +768,7 @@ bool ChromeClientImpl::hasOpenedPopup() const
@@ -774,7 +774,7 @@ bool ChromeClientImpl::hasOpenedPopup() const
PassRefPtrWillBeRawPtr<PopupMenu> ChromeClientImpl::openPopupMenu(LocalFrame& frame, PopupMenuClient* client)
{
notifyPopupOpeningObservers();
@ -12,7 +12,7 @@ index e1fd006..fa9486b 100644
ASSERT(RuntimeEnabledFeatures::pagePopupEnabled());
diff --git Source/web/WebViewImpl.cpp Source/web/WebViewImpl.cpp
index 9a4161a..cf68085 100644
index 1f8413a..efeff15 100644
--- Source/web/WebViewImpl.cpp
+++ Source/web/WebViewImpl.cpp
@@ -397,6 +397,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
@ -23,7 +23,7 @@ index 9a4161a..cf68085 100644
, m_doingDragAndDrop(false)
, m_ignoreInputEvents(false)
, m_compositorDeviceScaleFactorOverride(0)
@@ -3946,9 +3947,14 @@ void WebViewImpl::pageScaleFactorChanged()
@@ -3925,9 +3926,14 @@ void WebViewImpl::pageScaleFactorChanged()
m_client->pageScaleFactorChanged();
}
@ -40,10 +40,10 @@ index 9a4161a..cf68085 100644
void WebViewImpl::startDragging(LocalFrame* frame,
diff --git Source/web/WebViewImpl.h Source/web/WebViewImpl.h
index f222ca0..51478ce 100644
index a3ece01..60adce4 100644
--- Source/web/WebViewImpl.h
+++ Source/web/WebViewImpl.h
@@ -390,7 +390,8 @@ public:
@@ -389,7 +389,8 @@ public:
// Returns true if popup menus should be rendered by the browser, false if
// they should be rendered by WebKit (which is the default).
@ -53,7 +53,7 @@ index f222ca0..51478ce 100644
bool contextMenuAllowed() const
{
@@ -677,6 +678,8 @@ private:
@@ -675,6 +676,8 @@ private:
bool m_contextMenuAllowed;

View File

@ -92,7 +92,11 @@ class TracingTestHandler : public CefEndTracingCallback,
void OnEndTracingComplete(const CefString& tracing_file) override {
EXPECT_UI_THREAD();
base::FilePath file_path(tracing_file);
#if defined(OS_WIN)
base::FilePath file_path(tracing_file.ToWString());
#else
base::FilePath file_path(tracing_file.ToString());
#endif
CefPostTask(TID_FILE,
base::Bind(&TracingTestHandler::ReadTracingFile, this, file_path));
}

View File

@ -250,7 +250,6 @@
'Resources/locales/',
'$(BUILDTYPE)/chrome-sandbox',
'$(BUILDTYPE)/libcef.so',
'$(BUILDTYPE)/libffmpegsumo.so',
'$(BUILDTYPE)/natives_blob.bin',
'$(BUILDTYPE)/snapshot_blob.bin',
],
@ -494,7 +493,6 @@
'Resources/locales/',
'$(BUILDTYPE)/chrome-sandbox',
'$(BUILDTYPE)/libcef.so',
'$(BUILDTYPE)/libffmpegsumo.so',
'$(BUILDTYPE)/natives_blob.bin',
'$(BUILDTYPE)/snapshot_blob.bin',
],

View File

@ -56,7 +56,3 @@ run but any related functionality may become broken or disabled.
* devtools_resources.pak
This file contains non-localized resources required for Chrome Developer
Tools. Without this file Chrome Developer Tools will not function.
* FFmpeg audio and video support.
* libffmpegsumo.so
Without this file HTML5 audio and video will not function.

View File

@ -14,8 +14,6 @@ cefclient.app/
Frameworks/
Chromium Embedded Framework.framework/
Chromium Embedded Framework <= main application library
Libraries/
ffmpegsumo.so <= HTML5 audio/video support library
Resources/
cef.pak <= non-localized resources and strings
cef_100_percent.pak <====^
@ -118,10 +116,6 @@ run but any related functionality may become broken or disabled.
This file contains non-localized resources required for Chrome Developer
Tools. Without this file Chrome Developer Tools will not function.
* FFmpeg audio and video support.
* Chromium Embedded Framework.framework/Libraries/ffmpegsumo.so
Without this file HTML5 audio and video will not function.
* Breakpad support.
* Chromium Embedded Framework.framework/Resources/crash_inspector
* Chromium Embedded Framework.framework/Resources/crash_report_sender

View File

@ -55,10 +55,6 @@ run but any related functionality may become broken or disabled.
This file contains non-localized resources required for Chrome Developer
Tools. Without this file Chrome Developer Tools will not function.
* FFmpeg audio and video support.
* ffmpegsumo.dll
Without this file HTML5 audio and video will not function.
* Angle and Direct3D support.
* d3dcompiler_43.dll (required for Windows XP)
* d3dcompiler_47.dll (required for Windows Vista and newer)

View File

@ -418,7 +418,6 @@ if mode == 'standard':
if platform == 'windows':
binaries = [
'd3dcompiler_47.dll',
'ffmpegsumo.dll',
'libcef.dll',
'libEGL.dll',
'libGLESv2.dll',
@ -623,7 +622,6 @@ elif platform == 'linux':
make_dir(dst_dir, options.quiet)
copy_file(os.path.join(build_dir, 'chrome_sandbox'), os.path.join(dst_dir, 'chrome-sandbox'), options.quiet)
copy_file(os.path.join(build_dir, lib_dir_name, 'libcef.so'), dst_dir, options.quiet)
copy_file(os.path.join(build_dir, 'libffmpegsumo.so'), dst_dir, options.quiet)
copy_file(os.path.join(build_dir, 'natives_blob.bin'), dst_dir, options.quiet)
copy_file(os.path.join(build_dir, 'snapshot_blob.bin'), dst_dir, options.quiet)
else:
@ -644,7 +642,6 @@ elif platform == 'linux':
else:
copy_file(os.path.join(build_dir, lib_dir_name, 'libcef.so'), dst_dir, options.quiet)
copy_file(os.path.join(build_dir, 'chrome_sandbox'), os.path.join(dst_dir, 'chrome-sandbox'), options.quiet)
copy_file(os.path.join(build_dir, 'libffmpegsumo.so'), dst_dir, options.quiet)
copy_file(os.path.join(build_dir, 'natives_blob.bin'), dst_dir, options.quiet)
copy_file(os.path.join(build_dir, 'snapshot_blob.bin'), dst_dir, options.quiet)
else: