Update to Chromium revision d3cf92ca (#310534).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1963 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2015-01-09 17:22:10 +00:00
parent b5e8914bde
commit ba198e9ef1
44 changed files with 583 additions and 404 deletions

View File

@ -7,5 +7,5 @@
# https://code.google.com/p/chromiumembedded/wiki/BranchesAndBuilding
{
'chromium_checkout': '8cb76f56a1d0e12b80006e8958187bc8148ea346',
'chromium_checkout': 'd3cf92cac313434de99ae66f6e3e12d27ab536ef',
}

View File

@ -781,11 +781,11 @@
'action_name': 'make_pack_resources_header',
'variables': {
'header_inputs': [
'<(SHARED_INTERMEDIATE_DIR)/blink/grit/devtools_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/blink/public/resources/grit/blink_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/content/grit/content_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/net/grit/net_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/ui/resources/grit/ui_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/webkit/grit/devtools_resources.h',
'<(grit_out_dir)/grit/cef_resources.h',
],
},
@ -825,7 +825,7 @@
# Keep the devtools_resources.pak file separate.
'destination': '<(PRODUCT_DIR)',
'files': [
'<(SHARED_INTERMEDIATE_DIR)/webkit/devtools_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/blink/devtools_resources.pak',
],
},
],
@ -1132,13 +1132,10 @@
'<(DEPTH)/chrome/browser/printing/printer_query.h',
'<(DEPTH)/chrome/common/extensions/extension_constants.cc',
'<(DEPTH)/chrome/common/extensions/extension_constants.h',
'<(DEPTH)/chrome/common/prerender_messages.h',
'<(DEPTH)/chrome/common/print_messages.cc',
'<(DEPTH)/chrome/common/print_messages.h',
'<(DEPTH)/chrome/renderer/pepper/chrome_pdf_print_client.cc',
'<(DEPTH)/chrome/renderer/pepper/chrome_pdf_print_client.h',
'<(DEPTH)/chrome/renderer/prerender/prerender_helper.cc',
'<(DEPTH)/chrome/renderer/prerender/prerender_helper.h',
'<(DEPTH)/chrome/renderer/printing/print_web_view_helper.cc',
'<(DEPTH)/chrome/renderer/printing/print_web_view_helper.h',
'<(DEPTH)/extensions/common/constants.cc',

View File

@ -57,10 +57,76 @@
#pragma once
#if defined(BASE_TUPLE_H__)
// Do nothing if the Chromium header has already been included.
// The Chromium header has already been included.
// This can happen in cases where Chromium code is used directly by the
// client application. When using Chromium code directly always include
// the Chromium header first to avoid type conflicts.
// For legacy compatibility, we name the first 8 tuple elements "a", "b", ...
// TODO(cef): Remove this code when cef_runnable.h is deleted.
#define DEFINE_TUPLE_LEAF(N, x) \
template <typename T> \
struct TupleLeaf<N, T> { \
TupleLeaf() {} \
explicit TupleLeaf(typename TupleTraits<T>::ParamType x) : x(x) {} \
\
T& get() { return x; } \
const T& get() const { return x; } \
\
T x; \
}
DEFINE_TUPLE_LEAF(0, a);
DEFINE_TUPLE_LEAF(1, b);
DEFINE_TUPLE_LEAF(2, c);
DEFINE_TUPLE_LEAF(3, d);
DEFINE_TUPLE_LEAF(4, e);
DEFINE_TUPLE_LEAF(5, f);
DEFINE_TUPLE_LEAF(6, g);
DEFINE_TUPLE_LEAF(7, h);
#undef DEFINE_TUPLE_LEAF
// Deprecated compat aliases
// TODO(cef): Remove this code when cef_runnable.h is deleted.
using Tuple0 = Tuple<>;
template <typename A>
using Tuple1 = Tuple<A>;
template <typename A, typename B>
using Tuple2 = Tuple<A, B>;
template <typename A, typename B, typename C>
using Tuple3 = Tuple<A, B, C>;
template <typename A, typename B, typename C, typename D>
using Tuple4 = Tuple<A, B, C, D>;
template <typename A, typename B, typename C, typename D, typename E>
using Tuple5 = Tuple<A, B, C, D, E>;
template <typename A,
typename B,
typename C,
typename D,
typename E,
typename F>
using Tuple6 = Tuple<A, B, C, D, E, F>;
template <typename A,
typename B,
typename C,
typename D,
typename E,
typename F,
typename G>
using Tuple7 = Tuple<A, B, C, D, E, F, G>;
template <typename A,
typename B,
typename C,
typename D,
typename E,
typename F,
typename G,
typename H>
using Tuple8 = Tuple<A, B, C, D, E, F, G, H>;
#elif defined(BUILDING_CEF_SHARED)
// When building CEF include the Chromium header directly.
#include "base/tuple.h"

View File

@ -34,6 +34,13 @@
#define CEF_INCLUDE_CEF_RUNNABLE_H_
#pragma once
#if defined(BUILDING_CEF_SHARED)
// The implementation of cef_runnable.h depends on an obsolete version of
// base/tuple.h that is implemented by cef_tuple.h for client applications but
// is not compatible with the version used when building Chromium/CEF.
#error This header cannot be used when building Chromium/CEF.
#endif
#include "include/base/cef_tuple.h"
#include "include/cef_base.h"
#include "include/cef_task.h"

View File

@ -2187,6 +2187,7 @@ bool CefBrowserHostImpl::CanDragEnter(
bool CefBrowserHostImpl::ShouldCreateWebContents(
content::WebContents* web_contents,
int route_id,
int main_frame_route_id,
WindowContainerType window_container_type,
const base::string16& frame_name,
const GURL& target_url,
@ -2297,8 +2298,9 @@ void CefBrowserHostImpl::RequestMediaAccessPermission(
content::MediaStreamDevices devices;
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (!command_line.HasSwitch(switches::kEnableMediaStream)) {
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (!command_line->HasSwitch(switches::kEnableMediaStream)) {
// Cancel the request.
callback.Run(devices, content::MEDIA_DEVICE_PERMISSION_DENIED,
scoped_ptr<content::MediaStreamUI>());

View File

@ -369,6 +369,7 @@ class CefBrowserHostImpl : public CefBrowserHost,
bool ShouldCreateWebContents(
content::WebContents* web_contents,
int route_id,
int main_frame_route_id,
WindowContainerType window_container_type,
const base::string16& frame_name,
const GURL& target_url,

View File

@ -30,7 +30,7 @@
#import "ui/base/cocoa/underlay_opengl_hosting_window.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/events/keycodes/keyboard_codes_posix.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/geometry/rect.h"
// Wrapper NSView for the native view. Necessary to destroy the browser when
// the view is deleted.

View File

@ -140,10 +140,11 @@ void CefBrowserMainParts::PreMainMessageLoopRun() {
// to CefURLRequestContextGetter::GetURLRequestContext() on the IO thread.
global_request_context_ = global_browser_context_->GetRequestContext();
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kRemoteDebuggingPort)) {
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kRemoteDebuggingPort)) {
std::string port_str =
command_line.GetSwitchValueASCII(switches::kRemoteDebuggingPort);
command_line->GetSwitchValueASCII(switches::kRemoteDebuggingPort);
int port;
if (base::StringToInt(port_str, &port) && port > 0 && port < 65535) {
devtools_delegate_ =

View File

@ -15,33 +15,34 @@
// Set default preferences based on CEF command-line flags. Chromium command-
// line flags should not exist for these preferences.
void SetDefaults(content::WebPreferences& web) {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kDefaultEncoding)) {
if (command_line->HasSwitch(switches::kDefaultEncoding)) {
web.default_encoding =
command_line.GetSwitchValueASCII(switches::kDefaultEncoding);
command_line->GetSwitchValueASCII(switches::kDefaultEncoding);
}
web.javascript_can_open_windows_automatically =
!command_line.HasSwitch(switches::kDisableJavascriptOpenWindows);
!command_line->HasSwitch(switches::kDisableJavascriptOpenWindows);
web.allow_scripts_to_close_windows =
!command_line.HasSwitch(switches::kDisableJavascriptCloseWindows);
!command_line->HasSwitch(switches::kDisableJavascriptCloseWindows);
web.javascript_can_access_clipboard =
!command_line.HasSwitch(switches::kDisableJavascriptAccessClipboard);
!command_line->HasSwitch(switches::kDisableJavascriptAccessClipboard);
web.dom_paste_enabled =
!command_line.HasSwitch(switches::kDisableJavascriptDomPaste);
!command_line->HasSwitch(switches::kDisableJavascriptDomPaste);
web.caret_browsing_enabled =
command_line.HasSwitch(switches::kEnableCaretBrowsing);
command_line->HasSwitch(switches::kEnableCaretBrowsing);
web.allow_universal_access_from_file_urls =
command_line.HasSwitch(switches::kAllowUniversalAccessFromFileUrls);
command_line->HasSwitch(switches::kAllowUniversalAccessFromFileUrls);
web.loads_images_automatically =
!command_line.HasSwitch(switches::kDisableImageLoading);
!command_line->HasSwitch(switches::kDisableImageLoading);
web.shrinks_standalone_images_to_fit =
command_line.HasSwitch(switches::kImageShrinkStandaloneToFit);
command_line->HasSwitch(switches::kImageShrinkStandaloneToFit);
web.text_areas_are_resizable =
!command_line.HasSwitch(switches::kDisableTextAreaResize);
!command_line->HasSwitch(switches::kDisableTextAreaResize);
web.tabs_to_links =
!command_line.HasSwitch(switches::kDisableTabToLinks);
!command_line->HasSwitch(switches::kDisableTabToLinks);
}
// Helper macro for setting a WebPreferences variable based on the value of a

View File

@ -94,11 +94,11 @@ std::string GetOSType() {
std::string GetCommandLine() {
#if defined(OS_WIN)
return base::WideToUTF8(
CommandLine::ForCurrentProcess()->GetCommandLineString());
base::CommandLine::ForCurrentProcess()->GetCommandLineString());
#elif defined(OS_POSIX)
std::string command_line = "";
typedef std::vector<std::string> ArgvList;
const ArgvList& argv = CommandLine::ForCurrentProcess()->argv();
const ArgvList& argv = base::CommandLine::ForCurrentProcess()->argv();
for (ArgvList::const_iterator iter = argv.begin(); iter != argv.end(); iter++)
command_line += " " + *iter;
// TODO(viettrungluu): |command_line| could really have any encoding, whereas

View File

@ -657,8 +657,8 @@ bool CefContentBrowserClient::IsHandledURL(const GURL& url) {
void CefContentBrowserClient::AppendExtraCommandLineSwitches(
base::CommandLine* command_line, int child_process_id) {
const base::CommandLine& browser_cmd =
*base::CommandLine::ForCurrentProcess();
const base::CommandLine* browser_cmd =
base::CommandLine::ForCurrentProcess();
{
// Propagate the following switches to all command lines (along with any
@ -677,7 +677,7 @@ void CefContentBrowserClient::AppendExtraCommandLineSwitches(
switches::kResourcesDirPath,
switches::kUserAgent,
};
command_line->CopySwitchesFrom(browser_cmd, kSwitchNames,
command_line->CopySwitchesFrom(*browser_cmd, kSwitchNames,
arraysize(kSwitchNames));
}
@ -693,16 +693,16 @@ void CefContentBrowserClient::AppendExtraCommandLineSwitches(
switches::kEnableSpellingAutoCorrect,
switches::kUncaughtExceptionStackSize,
};
command_line->CopySwitchesFrom(browser_cmd, kSwitchNames,
command_line->CopySwitchesFrom(*browser_cmd, kSwitchNames,
arraysize(kSwitchNames));
}
#if defined(OS_LINUX)
if (process_type == switches::kZygoteProcess &&
browser_cmd.HasSwitch(switches::kBrowserSubprocessPath)) {
browser_cmd->HasSwitch(switches::kBrowserSubprocessPath)) {
// Force use of the sub-process executable path for the zygote process.
const base::FilePath& subprocess_path =
browser_cmd.GetSwitchValuePath(switches::kBrowserSubprocessPath);
browser_cmd->GetSwitchValuePath(switches::kBrowserSubprocessPath);
if (!subprocess_path.empty())
command_line->SetProgram(subprocess_path);
}

View File

@ -58,7 +58,7 @@ class CefForceShutdown {
int CefExecuteProcess(const CefMainArgs& args,
CefRefPtr<CefApp> application,
void* windows_sandbox_info) {
CommandLine command_line(CommandLine::NO_PROGRAM);
base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
#if defined(OS_WIN)
command_line.ParseFromString(::GetCommandLineW());
#else

View File

@ -23,6 +23,14 @@
#include "net/base/net_util.h"
#include "third_party/skia/include/core/SkColor.h"
namespace {
// This constant should be in sync with
// the constant at devtools_ui_bindings.cc.
const size_t kMaxMessageChunkSize = IPC::Channel::kMaximumMessageSize / 4;
} // namespace
// static
CefDevToolsFrontend* CefDevToolsFrontend::Show(
CefRefPtr<CefBrowserHostImpl> inspected_browser,
@ -148,12 +156,22 @@ void CefDevToolsFrontend::HandleMessageFromDevToolsFrontendToBackend(
void CefDevToolsFrontend::DispatchProtocolMessage(
content::DevToolsAgentHost* agent_host,
const std::string& message) {
base::StringValue message_value(message);
std::string param;
base::JSONWriter::Write(&message_value, &param);
std::string code = "DevToolsAPI.dispatchMessage(" + param + ");";
base::string16 javascript = base::UTF8ToUTF16(code);
web_contents()->GetMainFrame()->ExecuteJavaScript(javascript);
if (message.length() < kMaxMessageChunkSize) {
base::string16 javascript = base::UTF8ToUTF16(
"DevToolsAPI.dispatchMessage(" + message + ");");
web_contents()->GetMainFrame()->ExecuteJavaScript(javascript);
return;
}
base::FundamentalValue total_size(static_cast<int>(message.length()));
for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) {
base::StringValue message_value(message.substr(pos, kMaxMessageChunkSize));
std::string param;
base::JSONWriter::Write(&message_value, &param);
std::string code = "DevToolsAPI.dispatchMessageChunk(" + param + ");";
base::string16 javascript = base::UTF8ToUTF16(code);
web_contents()->GetMainFrame()->ExecuteJavaScript(javascript);
}
}
void CefDevToolsFrontend::AgentHostClosed(

View File

@ -9,7 +9,7 @@
#include "base/compiler_specific.h"
#include "base/strings/string_util.h"
#include "ui/aura/window.h"
#include "ui/gfx/point.h"
#include "ui/gfx/geometry/point.h"
CefMenuCreatorRunnerLinux::CefMenuCreatorRunnerLinux() {
}

View File

@ -7,7 +7,7 @@
#include "base/message_loop/message_loop.h"
#include "ui/aura/window.h"
#include "ui/gfx/point.h"
#include "ui/gfx/geometry/point.h"
#include "ui/views/controls/menu/menu_2.h"
CefMenuCreatorRunnerWin::CefMenuCreatorRunnerWin() {

View File

@ -263,10 +263,11 @@ void PrintingMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) {
// Loads default settings. This is asynchronous, only the IPC message sender
// will hang until the settings are retrieved.
printer_query->GetSettings(
PrinterQuery::DEFAULTS,
PrinterQuery::GetSettingsAskParam::DEFAULTS,
0,
false,
DEFAULT_MARGINS,
false,
base::Bind(&PrintingMessageFilter::OnGetDefaultPrintSettingsReply,
this,
printer_query,
@ -307,10 +308,11 @@ void PrintingMessageFilter::OnScriptedPrint(
queue_->CreatePrinterQuery(render_process_id_, reply_msg->routing_id());
}
printer_query->GetSettings(
PrinterQuery::ASK_USER,
PrinterQuery::GetSettingsAskParam::ASK_USER,
params.expected_pages_count,
params.has_selection,
params.margin_type,
params.is_scripted,
base::Bind(&PrintingMessageFilter::OnScriptedPrintReply,
this,
printer_query,

View File

@ -38,9 +38,8 @@ class PrintingMessageFilter : public content::BrowserMessageFilter {
explicit PrintingMessageFilter(int render_process_id);
// content::BrowserMessageFilter methods.
void OverrideThreadForMessage(
const IPC::Message& message,
content::BrowserThread::ID* thread) override;
void OverrideThreadForMessage(const IPC::Message& message,
content::BrowserThread::ID* thread) override;
bool OnMessageReceived(const IPC::Message& message) override;
private:

View File

@ -1,228 +1,229 @@
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "libcef/browser/speech_recognition_manager_delegate.h"
#include <set>
#include <string>
#include "libcef/common/cef_switches.h"
#include "base/bind.h"
#include "base/command_line.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/speech_recognition_manager.h"
#include "content/public/browser/speech_recognition_session_context.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/speech_recognition_error.h"
#include "content/public/common/speech_recognition_result.h"
using content::BrowserThread;
using content::SpeechRecognitionManager;
using content::WebContents;
// Simple utility to get notified when a WebContents is closed or crashes.
// Both the callback site and the callback thread are passed by the caller in
// the constructor. There is no restriction on the constructor, however this
// class must be destroyed on the UI thread, due to the NotificationRegistrar
// dependency.
class CefSpeechRecognitionManagerDelegate::WebContentsWatcher
: public base::RefCountedThreadSafe<WebContentsWatcher>,
public content::NotificationObserver {
public:
typedef base::Callback<void(int render_process_id, int render_view_id)>
WebContentsClosedCallback;
WebContentsWatcher(WebContentsClosedCallback web_contents_closed_callback,
BrowserThread::ID callback_thread)
: web_contents_closed_callback_(web_contents_closed_callback),
callback_thread_(callback_thread) {
}
// Starts monitoring the WebContents corresponding to the given
// |render_process_id|, |render_view_id| pair, invoking
// |web_contents_closed_callback_| if closed/unloaded.
void Watch(int render_process_id, int render_view_id) {
if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, base::Bind(
&WebContentsWatcher::Watch, this, render_process_id, render_view_id));
return;
}
WebContents* web_contents = NULL;
content::RenderViewHost* render_view_host =
content::RenderViewHost::FromID(render_process_id, render_view_id);
if (render_view_host)
web_contents = WebContents::FromRenderViewHost(render_view_host);
DCHECK(web_contents);
// Avoid multiple registrations on |registrar_| for the same |web_contents|.
if (registered_web_contents_.find(web_contents) !=
registered_web_contents_.end()) {
return;
}
registered_web_contents_.insert(web_contents);
// Lazy initialize the registrar.
if (!registrar_.get())
registrar_.reset(new content::NotificationRegistrar());
registrar_->Add(this,
content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED,
content::Source<WebContents>(web_contents));
}
// content::NotificationObserver implementation.
void Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) override {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK_EQ(content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED, type);
WebContents* web_contents = content::Source<WebContents>(source).ptr();
int render_process_id = web_contents->GetRenderProcessHost()->GetID();
int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID();
registrar_->Remove(this,
content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED,
content::Source<WebContents>(web_contents));
registered_web_contents_.erase(web_contents);
BrowserThread::PostTask(callback_thread_, FROM_HERE, base::Bind(
web_contents_closed_callback_, render_process_id, render_view_id));
}
private:
friend class base::RefCountedThreadSafe<WebContentsWatcher>;
~WebContentsWatcher() override {
// Must be destroyed on the UI thread due to |registrar_| non thread-safety.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
// Lazy-initialized and used on the UI thread to handle web contents
// notifications (tab closing).
scoped_ptr<content::NotificationRegistrar> registrar_;
// Keeps track of which WebContent(s) have been registered, in order to avoid
// double registrations on |registrar_|
std::set<content::WebContents*> registered_web_contents_;
// Callback used to notify, on the thread specified by |callback_thread_| the
// closure of a registered tab.
WebContentsClosedCallback web_contents_closed_callback_;
content::BrowserThread::ID callback_thread_;
DISALLOW_COPY_AND_ASSIGN(WebContentsWatcher);
};
CefSpeechRecognitionManagerDelegate
::CefSpeechRecognitionManagerDelegate() {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
filter_profanities_ =
command_line.HasSwitch(switches::kEnableProfanityFilter);
}
CefSpeechRecognitionManagerDelegate
::~CefSpeechRecognitionManagerDelegate() {
}
void CefSpeechRecognitionManagerDelegate::WebContentsClosedCallback(
int render_process_id, int render_view_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
SpeechRecognitionManager* manager = SpeechRecognitionManager::GetInstance();
// |manager| becomes NULL if a browser shutdown happens between the post of
// this task (from the UI thread) and this call (on the IO thread). In this
// case we just return.
if (!manager)
return;
manager->AbortAllSessionsForRenderView(render_process_id, render_view_id);
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionStart(
int session_id) {
const content::SpeechRecognitionSessionContext& context =
SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
// Register callback to auto abort session on tab closure.
// |web_contents_watcher_| is lazyly istantiated on the first call.
if (!web_contents_watcher_.get()) {
web_contents_watcher_ = new WebContentsWatcher(
base::Bind(
&CefSpeechRecognitionManagerDelegate::WebContentsClosedCallback,
base::Unretained(this)),
BrowserThread::IO);
}
web_contents_watcher_->Watch(context.render_process_id,
context.render_view_id);
}
void CefSpeechRecognitionManagerDelegate::OnAudioStart(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnEnvironmentEstimationComplete(
int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnSoundStart(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnSoundEnd(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnAudioEnd(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionResults(
int session_id, const content::SpeechRecognitionResults& result) {
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionError(
int session_id, const content::SpeechRecognitionError& error) {
}
void CefSpeechRecognitionManagerDelegate::OnAudioLevelsChange(
int session_id, float volume, float noise_volume) {
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionEnd(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::GetDiagnosticInformation(
bool* can_report_metrics,
std::string* hardware_info) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
}
void CefSpeechRecognitionManagerDelegate::CheckRecognitionIsAllowed(
int session_id,
base::Callback<void(bool ask_user, bool is_allowed)> callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
const content::SpeechRecognitionSessionContext& context =
SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
// Make sure that initiators properly set the |render_process_id| field.
DCHECK_NE(context.render_process_id, 0);
callback.Run(false, true);
}
content::SpeechRecognitionEventListener*
CefSpeechRecognitionManagerDelegate::GetEventListener() {
return this;
}
bool CefSpeechRecognitionManagerDelegate::FilterProfanities(
int render_process_id) {
return filter_profanities_;
}
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "libcef/browser/speech_recognition_manager_delegate.h"
#include <set>
#include <string>
#include "libcef/common/cef_switches.h"
#include "base/bind.h"
#include "base/command_line.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/speech_recognition_manager.h"
#include "content/public/browser/speech_recognition_session_context.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/speech_recognition_error.h"
#include "content/public/common/speech_recognition_result.h"
using content::BrowserThread;
using content::SpeechRecognitionManager;
using content::WebContents;
// Simple utility to get notified when a WebContents is closed or crashes.
// Both the callback site and the callback thread are passed by the caller in
// the constructor. There is no restriction on the constructor, however this
// class must be destroyed on the UI thread, due to the NotificationRegistrar
// dependency.
class CefSpeechRecognitionManagerDelegate::WebContentsWatcher
: public base::RefCountedThreadSafe<WebContentsWatcher>,
public content::NotificationObserver {
public:
typedef base::Callback<void(int render_process_id, int render_view_id)>
WebContentsClosedCallback;
WebContentsWatcher(WebContentsClosedCallback web_contents_closed_callback,
BrowserThread::ID callback_thread)
: web_contents_closed_callback_(web_contents_closed_callback),
callback_thread_(callback_thread) {
}
// Starts monitoring the WebContents corresponding to the given
// |render_process_id|, |render_view_id| pair, invoking
// |web_contents_closed_callback_| if closed/unloaded.
void Watch(int render_process_id, int render_view_id) {
if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, base::Bind(
&WebContentsWatcher::Watch, this, render_process_id, render_view_id));
return;
}
WebContents* web_contents = NULL;
content::RenderViewHost* render_view_host =
content::RenderViewHost::FromID(render_process_id, render_view_id);
if (render_view_host)
web_contents = WebContents::FromRenderViewHost(render_view_host);
DCHECK(web_contents);
// Avoid multiple registrations on |registrar_| for the same |web_contents|.
if (registered_web_contents_.find(web_contents) !=
registered_web_contents_.end()) {
return;
}
registered_web_contents_.insert(web_contents);
// Lazy initialize the registrar.
if (!registrar_.get())
registrar_.reset(new content::NotificationRegistrar());
registrar_->Add(this,
content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED,
content::Source<WebContents>(web_contents));
}
// content::NotificationObserver implementation.
void Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) override {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK_EQ(content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED, type);
WebContents* web_contents = content::Source<WebContents>(source).ptr();
int render_process_id = web_contents->GetRenderProcessHost()->GetID();
int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID();
registrar_->Remove(this,
content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED,
content::Source<WebContents>(web_contents));
registered_web_contents_.erase(web_contents);
BrowserThread::PostTask(callback_thread_, FROM_HERE, base::Bind(
web_contents_closed_callback_, render_process_id, render_view_id));
}
private:
friend class base::RefCountedThreadSafe<WebContentsWatcher>;
~WebContentsWatcher() override {
// Must be destroyed on the UI thread due to |registrar_| non thread-safety.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
// Lazy-initialized and used on the UI thread to handle web contents
// notifications (tab closing).
scoped_ptr<content::NotificationRegistrar> registrar_;
// Keeps track of which WebContent(s) have been registered, in order to avoid
// double registrations on |registrar_|
std::set<content::WebContents*> registered_web_contents_;
// Callback used to notify, on the thread specified by |callback_thread_| the
// closure of a registered tab.
WebContentsClosedCallback web_contents_closed_callback_;
content::BrowserThread::ID callback_thread_;
DISALLOW_COPY_AND_ASSIGN(WebContentsWatcher);
};
CefSpeechRecognitionManagerDelegate
::CefSpeechRecognitionManagerDelegate() {
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
filter_profanities_ =
command_line->HasSwitch(switches::kEnableProfanityFilter);
}
CefSpeechRecognitionManagerDelegate
::~CefSpeechRecognitionManagerDelegate() {
}
void CefSpeechRecognitionManagerDelegate::WebContentsClosedCallback(
int render_process_id, int render_view_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
SpeechRecognitionManager* manager = SpeechRecognitionManager::GetInstance();
// |manager| becomes NULL if a browser shutdown happens between the post of
// this task (from the UI thread) and this call (on the IO thread). In this
// case we just return.
if (!manager)
return;
manager->AbortAllSessionsForRenderView(render_process_id, render_view_id);
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionStart(
int session_id) {
const content::SpeechRecognitionSessionContext& context =
SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
// Register callback to auto abort session on tab closure.
// |web_contents_watcher_| is lazyly istantiated on the first call.
if (!web_contents_watcher_.get()) {
web_contents_watcher_ = new WebContentsWatcher(
base::Bind(
&CefSpeechRecognitionManagerDelegate::WebContentsClosedCallback,
base::Unretained(this)),
BrowserThread::IO);
}
web_contents_watcher_->Watch(context.render_process_id,
context.render_view_id);
}
void CefSpeechRecognitionManagerDelegate::OnAudioStart(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnEnvironmentEstimationComplete(
int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnSoundStart(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnSoundEnd(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnAudioEnd(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionResults(
int session_id, const content::SpeechRecognitionResults& result) {
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionError(
int session_id, const content::SpeechRecognitionError& error) {
}
void CefSpeechRecognitionManagerDelegate::OnAudioLevelsChange(
int session_id, float volume, float noise_volume) {
}
void CefSpeechRecognitionManagerDelegate::OnRecognitionEnd(int session_id) {
}
void CefSpeechRecognitionManagerDelegate::GetDiagnosticInformation(
bool* can_report_metrics,
std::string* hardware_info) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
}
void CefSpeechRecognitionManagerDelegate::CheckRecognitionIsAllowed(
int session_id,
base::Callback<void(bool ask_user, bool is_allowed)> callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
const content::SpeechRecognitionSessionContext& context =
SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id);
// Make sure that initiators properly set the |render_process_id| field.
DCHECK_NE(context.render_process_id, 0);
callback.Run(false, true);
}
content::SpeechRecognitionEventListener*
CefSpeechRecognitionManagerDelegate::GetEventListener() {
return this;
}
bool CefSpeechRecognitionManagerDelegate::FilterProfanities(
int render_process_id) {
return filter_profanities_;
}

View File

@ -123,7 +123,8 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() {
if (!url_request_context_.get()) {
const base::FilePath& cache_path = CefContext::Get()->cache_path();
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
const CefSettings& settings = CefContext::Get()->settings();
url_request_context_.reset(new net::URLRequestContext());
@ -132,7 +133,7 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() {
bool persist_session_cookies =
(settings.persist_session_cookies ||
command_line.HasSwitch(switches::kPersistSessionCookies));
command_line->HasSwitch(switches::kPersistSessionCookies));
SetCookieStoragePath(cache_path, persist_session_cookies);
storage_->set_network_delegate(new CefNetworkDelegate);
@ -154,7 +155,7 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() {
url_request_context_.get(),
url_request_context_->network_delegate(),
CefContentBrowserClient::Get()->proxy_config_service().release(),
command_line,
*command_line,
true));
storage_->set_proxy_service(system_proxy_service.release());
@ -211,7 +212,7 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() {
url_request_context_->http_server_properties();
network_session_params.ignore_certificate_errors =
(settings.ignore_certificate_errors ||
command_line.HasSwitch(switches::kIgnoreCertificateErrors));
command_line->HasSwitch(switches::kIgnoreCertificateErrors));
net::HttpCache* main_cache = new net::HttpCache(network_session_params,
main_backend);

View File

@ -13,7 +13,7 @@
#include "base/memory/weak_ptr.h"
#include "ui/events/platform/platform_event_dispatcher.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/x/x11_atom_cache.h"
namespace views {

View File

@ -39,7 +39,7 @@ struct ParamTraits<net::UploadElement> {
case net::UploadElement::TYPE_BYTES: {
const char* data;
int len;
if (!m->ReadData(iter, &data, &len))
if (!iter->ReadData(&data, &len))
return false;
r->SetToBytes(data, len);
break;

View File

@ -213,7 +213,6 @@ struct ParamTraits<scoped_refptr<net::UploadData> > {
#endif // CEF_LIBCEF_COMMON_CEF_MESSAGES_H_
#include "chrome/common/prerender_messages.h"
#include "chrome/common/print_messages.h"
#include "chrome/common/spellcheck_messages.h"

View File

@ -7,10 +7,10 @@
#include "base/files/file_path.h"
#include "base/logging.h"
CefCommandLineImpl::CefCommandLineImpl(CommandLine* value,
CefCommandLineImpl::CefCommandLineImpl(base::CommandLine* value,
bool will_delete,
bool read_only)
: CefValueBase<CefCommandLine, CommandLine>(
: CefValueBase<CefCommandLine, base::CommandLine>(
value, NULL, will_delete ? kOwnerWillDelete : kOwnerNoDelete,
read_only, NULL) {
}
@ -26,7 +26,7 @@ bool CefCommandLineImpl::IsReadOnly() {
CefRefPtr<CefCommandLine> CefCommandLineImpl::Copy() {
CEF_VALUE_VERIFY_RETURN(false, NULL);
return new CefCommandLineImpl(
new CommandLine(const_value().argv()), true, false);
new base::CommandLine(const_value().argv()), true, false);
}
void CefCommandLineImpl::InitFromArgv(int argc, const char* const* argv) {
@ -49,18 +49,18 @@ void CefCommandLineImpl::InitFromString(const CefString& command_line) {
void CefCommandLineImpl::Reset() {
CEF_VALUE_VERIFY_RETURN_VOID(true);
CommandLine::StringVector argv;
base::CommandLine::StringVector argv;
argv.push_back(mutable_value()->GetProgram().value());
mutable_value()->InitFromArgv(argv);
const CommandLine::SwitchMap& map = mutable_value()->GetSwitches();
const_cast<CommandLine::SwitchMap*>(&map)->clear();
const base::CommandLine::SwitchMap& map = mutable_value()->GetSwitches();
const_cast<base::CommandLine::SwitchMap*>(&map)->clear();
}
void CefCommandLineImpl::GetArgv(std::vector<CefString>& argv) {
CEF_VALUE_VERIFY_RETURN_VOID(false);
const CommandLine::StringVector& cmd_argv = const_value().argv();
CommandLine::StringVector::const_iterator it = cmd_argv.begin();
const base::CommandLine::StringVector& cmd_argv = const_value().argv();
base::CommandLine::StringVector::const_iterator it = cmd_argv.begin();
for (; it != cmd_argv.end(); ++it)
argv.push_back(*it);
}
@ -97,8 +97,8 @@ CefString CefCommandLineImpl::GetSwitchValue(const CefString& name) {
void CefCommandLineImpl::GetSwitches(SwitchMap& switches) {
CEF_VALUE_VERIFY_RETURN_VOID(false);
const CommandLine::SwitchMap& map = const_value().GetSwitches();
CommandLine::SwitchMap::const_iterator it = map.begin();
const base::CommandLine::SwitchMap& map = const_value().GetSwitches();
base::CommandLine::SwitchMap::const_iterator it = map.begin();
for (; it != map.end(); ++it)
switches.insert(std::make_pair(it->first, it->second));
}
@ -121,8 +121,8 @@ bool CefCommandLineImpl::HasArguments() {
void CefCommandLineImpl::GetArguments(ArgumentList& arguments) {
CEF_VALUE_VERIFY_RETURN_VOID(false);
const CommandLine::StringVector& vec = const_value().GetArgs();
CommandLine::StringVector::const_iterator it = vec.begin();
const base::CommandLine::StringVector& vec = const_value().GetArgs();
base::CommandLine::StringVector::const_iterator it = vec.begin();
for (; it != vec.end(); ++it)
arguments.push_back(*it);
}
@ -143,7 +143,7 @@ void CefCommandLineImpl::PrependWrapper(const CefString& wrapper) {
// static
CefRefPtr<CefCommandLine> CefCommandLine::CreateCommandLine() {
return new CefCommandLineImpl(
new CommandLine(CommandLine::NO_PROGRAM), true, false);
new base::CommandLine(base::CommandLine::NO_PROGRAM), true, false);
}
// static
@ -151,7 +151,7 @@ CefRefPtr<CefCommandLine> CefCommandLine::GetGlobalCommandLine() {
// Uses a singleton reference object.
static CefRefPtr<CefCommandLineImpl> commandLinePtr;
if (!commandLinePtr.get()) {
CommandLine* command_line = CommandLine::ForCurrentProcess();
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
if (command_line)
commandLinePtr = new CefCommandLineImpl(command_line, false, true);
}

View File

@ -12,9 +12,10 @@
#include "base/command_line.h"
// CefCommandLine implementation
class CefCommandLineImpl : public CefValueBase<CefCommandLine, CommandLine> {
class CefCommandLineImpl :
public CefValueBase<CefCommandLine, base::CommandLine> {
public:
CefCommandLineImpl(CommandLine* value,
CefCommandLineImpl(base::CommandLine* value,
bool will_delete,
bool read_only);
@ -42,7 +43,7 @@ class CefCommandLineImpl : public CefValueBase<CefCommandLine, CommandLine> {
void PrependWrapper(const CefString& wrapper) override;
// Must hold the controller lock while using this value.
const CommandLine& command_line() { return const_value(); }
const base::CommandLine& command_line() { return const_value(); }
DISALLOW_COPY_AND_ASSIGN(CefCommandLineImpl);
};

View File

@ -113,13 +113,14 @@ void CefContentClient::AddAdditionalSchemes(
std::string CefContentClient::GetUserAgent() const {
std::string product_version;
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kUserAgent))
return command_line.GetSwitchValueASCII(switches::kUserAgent);
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kUserAgent))
return command_line->GetSwitchValueASCII(switches::kUserAgent);
if (command_line.HasSwitch(switches::kProductVersion)) {
if (command_line->HasSwitch(switches::kProductVersion)) {
product_version =
command_line.GetSwitchValueASCII(switches::kProductVersion);
command_line->GetSwitchValueASCII(switches::kProductVersion);
} else {
product_version = base::StringPrintf("Chrome/%d.%d.%d.%d",
CHROME_VERSION_MAJOR, CHROME_VERSION_MINOR, CHROME_VERSION_BUILD,

View File

@ -51,10 +51,11 @@ base::FilePath CefCrashReporterClient::GetReporterLogFilename() {
bool CefCrashReporterClient::GetCrashDumpLocation(base::FilePath* crash_dir) {
#if !defined(OS_WIN)
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kCrashDumpsDir))
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (!command_line->HasSwitch(switches::kCrashDumpsDir))
return false;
*crash_dir = CommandLine::ForCurrentProcess()->GetSwitchValuePath(
switches::kCrashDumpsDir);
*crash_dir = command_line->GetSwitchValuePath(switches::kCrashDumpsDir);
return true;
#else
NOTREACHED();

View File

@ -199,7 +199,7 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) {
OverrideFrameworkBundlePath();
#endif
CommandLine* command_line = CommandLine::ForCurrentProcess();
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
std::string process_type =
command_line->GetSwitchValueASCII(switches::kProcessType);
@ -209,12 +209,12 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) {
if (settings.command_line_args_disabled) {
// Remove any existing command-line arguments.
CommandLine::StringVector argv;
base::CommandLine::StringVector argv;
argv.push_back(command_line->GetProgram().value());
command_line->InitFromArgv(argv);
const CommandLine::SwitchMap& map = command_line->GetSwitches();
const_cast<CommandLine::SwitchMap*>(&map)->clear();
const base::CommandLine::SwitchMap& map = command_line->GetSwitches();
const_cast<base::CommandLine::SwitchMap*>(&map)->clear();
}
if (settings.single_process)
@ -387,11 +387,12 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) {
}
void CefMainDelegate::PreSandboxStartup() {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
const std::string& process_type =
command_line.GetSwitchValueASCII(switches::kProcessType);
command_line->GetSwitchValueASCII(switches::kProcessType);
if (command_line.HasSwitch(switches::kEnableCrashReporter)) {
if (command_line->HasSwitch(switches::kEnableCrashReporter)) {
crash_reporter::SetCrashReporterClient(g_crash_reporter_client.Pointer());
#if defined(OS_MACOSX)
base::mac::DisableOSCrashDumps();
@ -409,7 +410,7 @@ void CefMainDelegate::PreSandboxStartup() {
#endif
}
if (!command_line.HasSwitch(switches::kProcessType)) {
if (!command_line->HasSwitch(switches::kProcessType)) {
// Only these paths when executing the main process.
#if defined(OS_MACOSX)
OverrideChildProcessPath();
@ -430,7 +431,7 @@ void CefMainDelegate::PreSandboxStartup() {
OverridePdfPluginPath();
if (command_line.HasSwitch(switches::kDisablePackLoading))
if (command_line->HasSwitch(switches::kDisablePackLoading))
content_client_.set_pack_loading_disabled(true);
InitializeResourceBundle();
@ -481,9 +482,10 @@ void CefMainDelegate::ProcessExiting(const std::string& process_type) {
#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
void CefMainDelegate::ZygoteForked() {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kEnableCrashReporter)) {
const std::string& process_type = command_line.GetSwitchValueASCII(
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kEnableCrashReporter)) {
const std::string& process_type = command_line->GetSwitchValueASCII(
switches::kProcessType);
breakpad::InitCrashReporter(process_type);
}
@ -519,15 +521,16 @@ void CefMainDelegate::ShutdownBrowser() {
}
void CefMainDelegate::InitializeResourceBundle() {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
base::FilePath cef_pak_file, cef_100_percent_pak_file,
cef_200_percent_pak_file, devtools_pak_file, locales_dir;
if (!content_client_.pack_loading_disabled()) {
base::FilePath resources_dir;
if (command_line.HasSwitch(switches::kResourcesDirPath)) {
if (command_line->HasSwitch(switches::kResourcesDirPath)) {
resources_dir =
command_line.GetSwitchValuePath(switches::kResourcesDirPath);
command_line->GetSwitchValuePath(switches::kResourcesDirPath);
}
if (resources_dir.empty())
resources_dir = GetResourcesFilePath();
@ -542,14 +545,14 @@ void CefMainDelegate::InitializeResourceBundle() {
resources_dir.Append(FILE_PATH_LITERAL("devtools_resources.pak"));
}
if (command_line.HasSwitch(switches::kLocalesDirPath))
locales_dir = command_line.GetSwitchValuePath(switches::kLocalesDirPath);
if (command_line->HasSwitch(switches::kLocalesDirPath))
locales_dir = command_line->GetSwitchValuePath(switches::kLocalesDirPath);
if (!locales_dir.empty())
PathService::Override(ui::DIR_LOCALES, locales_dir);
}
std::string locale = command_line.GetSwitchValueASCII(switches::kLang);
std::string locale = command_line->GetSwitchValueASCII(switches::kLang);
DCHECK(!locale.empty());
const std::string loaded_locale =

View File

@ -62,6 +62,7 @@ MSVC_POP_WARNING();
#include "third_party/WebKit/public/platform/WebURL.h"
#include "third_party/WebKit/public/platform/WebWorkerRunLoop.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebElement.h"
#include "third_party/WebKit/public/web/WebFrame.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
#include "third_party/WebKit/public/web/WebKit.h"
@ -150,6 +151,24 @@ class CefWebWorkerTaskRunner : public base::SequencedTaskRunner,
int worker_id_;
};
class CefPrintWebViewHelperDelegate :
public printing::PrintWebViewHelper::Delegate {
public:
CefPrintWebViewHelperDelegate() {}
bool CancelPrerender(content::RenderView* render_view,
int routing_id) override {
return false;
}
blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) override {
return blink::WebElement();
}
private:
DISALLOW_COPY_AND_ASSIGN(CefPrintWebViewHelperDelegate);
};
#if defined(OS_WIN)
static base::win::IATPatchFunction g_iat_patch_createdca;
HDC WINAPI CreateDCAPatch(LPCSTR driver_name,
@ -244,7 +263,8 @@ void CefContentRendererClient::OnBrowserDestroyed(CefBrowserImpl* browser) {
}
void CefContentRendererClient::WebKitInitialized() {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
// Create global objects associated with the default Isolate.
CefV8IsolateCreated();
@ -305,10 +325,11 @@ void CefContentRendererClient::WebKitInitialized() {
}
// The number of stack trace frames to capture for uncaught exceptions.
if (command_line.HasSwitch(switches::kUncaughtExceptionStackSize)) {
if (command_line->HasSwitch(switches::kUncaughtExceptionStackSize)) {
int uncaught_exception_stack_size = 0;
base::StringToInt(
command_line.GetSwitchValueASCII(switches::kUncaughtExceptionStackSize),
command_line->GetSwitchValueASCII(
switches::kUncaughtExceptionStackSize),
&uncaught_exception_stack_size);
if (uncaught_exception_stack_size > 0) {
@ -760,7 +781,12 @@ void CefContentRendererClient::BrowserCreated(
browsers_.insert(std::make_pair(render_view, browser));
new CefPrerendererClient(render_view);
new printing::PrintWebViewHelper(render_view);
new printing::PrintWebViewHelper(
render_view,
false,
true,
make_scoped_ptr<printing::PrintWebViewHelper::Delegate>(
new CefPrintWebViewHelperDelegate()));
if (!command_line->HasSwitch(switches::kDisableSpellChecking))
new SpellCheckProvider(render_view, spellcheck_.get());

View File

@ -63,9 +63,10 @@ class CefV8IsolateManager {
DCHECK(isolate_);
DCHECK(task_runner_.get());
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kContextSafetyImplementation)) {
std::string value = command_line.GetSwitchValueASCII(
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kContextSafetyImplementation)) {
std::string value = command_line->GetSwitchValueASCII(
switches::kContextSafetyImplementation);
int mode;
if (base::StringToInt(value, &mode)) {

View File

@ -79,6 +79,14 @@ patches = [
'name': 'browser_web_contents_1257',
'path': '../content/browser/web_contents/',
},
{
# Allow specification of a custom WebContentsView.
# This change is required due to chrome_browser_process_stub.h indirectly
# including chrome/browser/ui/browser.h on OS X.
# http://code.google.com/p/chromiumembedded/issues/detail?id=1257
'name': 'chrome_browser_1257',
'path': '../chrome/browser/',
},
{
# Allow customization of the WebView background color.
# http://code.google.com/p/chromiumembedded/issues/detail?id=1161

View File

@ -1,8 +1,8 @@
diff --git web_contents_impl.cc web_contents_impl.cc
index ca9112a..80e2b75 100644
index 0326fe5..5daf313 100644
--- web_contents_impl.cc
+++ web_contents_impl.cc
@@ -1152,22 +1152,29 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
@@ -1164,22 +1164,29 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
params.browser_context, params.site_instance, params.routing_id,
params.main_frame_routing_id);
@ -48,7 +48,7 @@ index ca9112a..80e2b75 100644
}
CHECK(render_view_host_delegate_view_);
CHECK(view_.get());
@@ -1502,6 +1509,9 @@ void WebContentsImpl::CreateNewWindow(
@@ -1517,6 +1524,9 @@ void WebContentsImpl::CreateNewWindow(
static_cast<SessionStorageNamespaceImpl*>(session_storage_namespace);
CHECK(session_storage_namespace_impl->IsFromContext(dom_storage_context));
@ -58,7 +58,7 @@ index ca9112a..80e2b75 100644
if (delegate_ &&
!delegate_->ShouldCreateWebContents(this,
route_id,
@@ -1509,7 +1519,9 @@ void WebContentsImpl::CreateNewWindow(
@@ -1525,7 +1535,9 @@ void WebContentsImpl::CreateNewWindow(
params.frame_name,
params.target_url,
partition_id,
@ -69,7 +69,7 @@ index ca9112a..80e2b75 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
@@ -1529,6 +1541,8 @@ void WebContentsImpl::CreateNewWindow(
@@ -1545,6 +1557,8 @@ void WebContentsImpl::CreateNewWindow(
create_params.main_frame_routing_id = main_frame_route_id;
create_params.opener = this;
create_params.opener_suppressed = params.opener_suppressed;

View File

@ -1,5 +1,5 @@
diff --git common.gypi common.gypi
index c899e14..435bfb5 100644
index 83a3df6..a0a0b60 100644
--- common.gypi
+++ common.gypi
@@ -9,6 +9,9 @@

View File

@ -0,0 +1,30 @@
diff --git ui/browser.cc ui/browser.cc
index 6c926b9..a809f0f 100644
--- ui/browser.cc
+++ ui/browser.cc
@@ -1567,7 +1567,9 @@ bool Browser::ShouldCreateWebContents(
const base::string16& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) {
+ content::SessionStorageNamespace* session_storage_namespace,
+ content::WebContentsView** view,
+ content::RenderViewHostDelegateView** delegate_view) {
if (window_container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) {
// If a BackgroundContents is created, suppress the normal WebContents.
return !MaybeCreateBackgroundContents(route_id,
diff --git ui/browser.h ui/browser.h
index c9aad25..b682e4e 100644
--- ui/browser.h
+++ ui/browser.h
@@ -587,7 +587,9 @@ class Browser : public TabStripModelObserver,
const base::string16& frame_name,
const GURL& target_url,
const std::string& partition_id,
- content::SessionStorageNamespace* session_storage_namespace) override;
+ content::SessionStorageNamespace* session_storage_namespace,
+ content::WebContentsView** view,
+ content::RenderViewHostDelegateView** delegate_view) override;
void WebContentsCreated(content::WebContents* source_contents,
int opener_render_frame_id,
const base::string16& frame_name,

View File

@ -1,5 +1,5 @@
diff --git content/browser/compositor/gpu_process_transport_factory.cc content/browser/compositor/gpu_process_transport_factory.cc
index 33b3aa0..801598c 100644
index c7c867e..5b0ea66 100644
--- content/browser/compositor/gpu_process_transport_factory.cc
+++ content/browser/compositor/gpu_process_transport_factory.cc
@@ -106,6 +106,13 @@ GpuProcessTransportFactory::CreateOffscreenCommandBufferContext() {
@ -17,7 +17,7 @@ index 33b3aa0..801598c 100644
return scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareOutputDeviceWin(
compositor));
diff --git ui/compositor/compositor.h ui/compositor/compositor.h
index 5d9d793..da20f14 100644
index 94cd1a91..b13e64fb 100644
--- ui/compositor/compositor.h
+++ ui/compositor/compositor.h
@@ -13,6 +13,7 @@
@ -56,7 +56,7 @@ index 5d9d793..da20f14 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
@@ -304,6 +319,8 @@ class COMPOSITOR_EXPORT Compositor
@@ -310,6 +325,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 c4df640..6de25db 100644
index 489ee14..caa083e 100644
--- public/renderer/content_renderer_client.cc
+++ public/renderer/content_renderer_client.cc
@@ -99,7 +99,6 @@ bool ContentRendererClient::AllowPopup() {
@ -19,7 +19,7 @@ index c4df640..6de25db 100644
bool ContentRendererClient::ShouldFork(blink::WebFrame* frame,
const GURL& url,
diff --git public/renderer/content_renderer_client.h public/renderer/content_renderer_client.h
index 9a6c695..c29b83a 100644
index bc82ce6..b112107 100644
--- public/renderer/content_renderer_client.h
+++ public/renderer/content_renderer_client.h
@@ -195,7 +195,6 @@ class CONTENT_EXPORT ContentRendererClient {
@ -39,10 +39,10 @@ index 9a6c695..c29b83a 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 fa041b7..28b4a04 100644
index 473b185..2d082b5 100644
--- renderer/render_frame_impl.cc
+++ renderer/render_frame_impl.cc
@@ -3748,7 +3748,6 @@ void RenderFrameImpl::OnCommitNavigation(
@@ -3798,7 +3798,6 @@ void RenderFrameImpl::OnCommitNavigation(
WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
RenderFrame* render_frame,
const NavigationPolicyInfo& info) {
@ -50,7 +50,7 @@ index fa041b7..28b4a04 100644
// The handlenavigation API is deprecated and will be removed once
// crbug.com/325351 is resolved.
if (info.urlRequest.url() != GURL(kSwappedOutURL) &&
@@ -3763,7 +3762,6 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
@@ -3813,7 +3812,6 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
info.isRedirect)) {
return blink::WebNavigationPolicyIgnore;
}

View File

@ -1,5 +1,5 @@
diff --git resource_ids resource_ids
index 42cc710..0feaec2 100644
index efd5760..62dd7b0 100644
--- resource_ids
+++ resource_ids
@@ -14,6 +14,12 @@

View File

@ -1,8 +1,8 @@
diff --git message_loop.cc message_loop.cc
index 2f4a03c..ea7d505 100644
index 8180733..927f755 100644
--- message_loop.cc
+++ message_loop.cc
@@ -160,7 +160,6 @@ MessageLoop::MessageLoop(scoped_ptr<MessagePump> pump)
@@ -148,7 +148,6 @@ MessageLoop::MessageLoop(scoped_ptr<MessagePump> pump)
MessageLoop::~MessageLoop() {
DCHECK_EQ(this, current());

View File

@ -1,8 +1,8 @@
diff --git public/common/common_param_traits_macros.h public/common/common_param_traits_macros.h
index 85e98ce..46b7fb3 100644
index a064d53..8abea71 100644
--- public/common/common_param_traits_macros.h
+++ public/common/common_param_traits_macros.h
@@ -186,6 +186,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences)
@@ -188,6 +188,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 85e98ce..46b7fb3 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 17bf9dc..b76213c 100644
index a5574d3..8e9e391 100644
--- public/common/web_preferences.cc
+++ public/common/web_preferences.cc
@@ -178,6 +178,7 @@ WebPreferences::WebPreferences()
@@ -179,6 +179,7 @@ WebPreferences::WebPreferences()
rubber_banding_on_compositor_thread(false),
use_solid_color_scrollbars(false),
navigate_on_drag_drop(true),
@ -23,10 +23,10 @@ index 17bf9dc..b76213c 100644
v8_script_streaming_enabled(false),
v8_script_streaming_mode(V8_SCRIPT_STREAMING_MODE_ALL),
diff --git public/common/web_preferences.h public/common/web_preferences.h
index c850133..1cfb3cc 100644
index 78559f2..028a94e 100644
--- public/common/web_preferences.h
+++ public/common/web_preferences.h
@@ -165,6 +165,7 @@ struct CONTENT_EXPORT WebPreferences {
@@ -169,6 +169,7 @@ struct CONTENT_EXPORT WebPreferences {
bool rubber_banding_on_compositor_thread;
bool use_solid_color_scrollbars;
bool navigate_on_drag_drop;
@ -35,10 +35,10 @@ index c850133..1cfb3cc 100644
bool v8_script_streaming_enabled;
V8ScriptStreamingMode v8_script_streaming_mode;
diff --git renderer/render_view_impl.cc renderer/render_view_impl.cc
index 61f4c88..6772f2d 100644
index 623cb14..5d21fc5 100644
--- renderer/render_view_impl.cc
+++ renderer/render_view_impl.cc
@@ -974,6 +974,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs,
@@ -958,6 +958,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs,
settings->setJavaEnabled(prefs.java_enabled);

View File

@ -1,8 +1,8 @@
diff --git content_browser_client.cc content_browser_client.cc
index c5c672f..dd84884 100644
index 91c8a4d..10c3b28 100644
--- content_browser_client.cc
+++ content_browser_client.cc
@@ -273,6 +273,10 @@ bool ContentBrowserClient::IsFastShutdownPossible() {
@@ -278,6 +278,10 @@ bool ContentBrowserClient::IsFastShutdownPossible() {
return true;
}
@ -14,18 +14,18 @@ index c5c672f..dd84884 100644
return base::FilePath();
}
diff --git content_browser_client.h content_browser_client.h
index 0934c9a..035ac1b 100644
index 627353d..e1805f4 100644
--- content_browser_client.h
+++ content_browser_client.h
@@ -29,6 +29,7 @@
@@ -28,6 +28,7 @@
#include "net/url_request/url_request_interceptor.h"
#include "net/url_request/url_request_job_factory.h"
#include "storage/browser/fileapi/file_system_context.h"
+#include "third_party/skia/include/core/SkColor.h"
#include "third_party/WebKit/public/platform/WebNotificationPermission.h"
#include "ui/base/window_open_disposition.h"
@@ -514,6 +515,9 @@ class CONTENT_EXPORT ContentBrowserClient {
#if defined(OS_POSIX) && !defined(OS_MACOSX)
@@ -499,6 +500,9 @@ class CONTENT_EXPORT ContentBrowserClient {
// Clears browser cookies.
virtual void ClearCookies(RenderViewHost* rvh) {}
@ -62,7 +62,7 @@ index 7afc338..c014439 100644
WebContents::CreateParams::~CreateParams() {
}
diff --git web_contents.h web_contents.h
index 5478a37..d34c1da 100644
index 87becd6..b66d3fb 100644
--- web_contents.h
+++ web_contents.h
@@ -52,9 +52,11 @@ class PageState;
@ -77,7 +77,7 @@ index 5478a37..d34c1da 100644
struct CustomContextMenuContext;
struct DropData;
struct Manifest;
@@ -118,6 +120,10 @@ class WebContents : public PageNavigator,
@@ -122,6 +124,10 @@ class WebContents : public PageNavigator,
// Used to specify the location context which display the new view should
// belong. This can be NULL if not needed.
gfx::NativeView context;
@ -89,10 +89,10 @@ index 5478a37..d34c1da 100644
// Creates a new WebContents.
diff --git web_contents_delegate.cc web_contents_delegate.cc
index eefb8ab..b4646f8 100644
index e846041..da3c9e6 100644
--- web_contents_delegate.cc
+++ web_contents_delegate.cc
@@ -136,7 +136,9 @@ bool WebContentsDelegate::ShouldCreateWebContents(
@@ -137,7 +137,9 @@ bool WebContentsDelegate::ShouldCreateWebContents(
const base::string16& frame_name,
const GURL& target_url,
const std::string& partition_id,
@ -104,7 +104,7 @@ index eefb8ab..b4646f8 100644
}
diff --git web_contents_delegate.h web_contents_delegate.h
index 17bed7f..64181d0 100644
index 344fbaf..adaa39d 100644
--- web_contents_delegate.h
+++ web_contents_delegate.h
@@ -36,9 +36,11 @@ class DownloadItem;
@ -119,7 +119,7 @@ index 17bed7f..64181d0 100644
struct ColorSuggestion;
struct ContextMenuParams;
struct DropData;
@@ -313,7 +315,9 @@ class CONTENT_EXPORT WebContentsDelegate {
@@ -314,7 +316,9 @@ class CONTENT_EXPORT WebContentsDelegate {
const base::string16& frame_name,
const GURL& target_url,
const std::string& partition_id,

View File

@ -1,8 +1,8 @@
diff --git core/frame/FrameView.cpp core/frame/FrameView.cpp
index d8b6105..33abf9d 100644
index 61cf629..f734ee9 100644
--- core/frame/FrameView.cpp
+++ core/frame/FrameView.cpp
@@ -145,8 +145,10 @@ FrameView::FrameView(LocalFrame* frame)
@@ -144,8 +144,10 @@ FrameView::FrameView(LocalFrame* frame)
if (!m_frame->isMainFrame())
return;

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 3752373..f588160 100644
index 1e8d67d..34b535a 100644
--- desktop_aura/desktop_window_tree_host_win.cc
+++ desktop_aura/desktop_window_tree_host_win.cc
@@ -131,7 +131,9 @@ void DesktopWindowTreeHostWin::Init(aura::Window* content_window,
@@ -133,7 +133,9 @@ void DesktopWindowTreeHostWin::Init(aura::Window* content_window,
native_widget_delegate_);
HWND parent_hwnd = NULL;
@ -26,7 +26,7 @@ index 3752373..f588160 100644
parent_hwnd = params.parent->GetHost()->GetAcceleratedWidget();
message_handler_->set_remove_standard_frame(params.remove_standard_frame);
@@ -818,6 +820,7 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() {
@@ -820,6 +822,7 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() {
void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) {
// TODO(beng): inform the native_widget_delegate_.
@ -34,7 +34,7 @@ index 3752373..f588160 100644
InputMethod* input_method = GetInputMethod();
if (input_method)
input_method->OnFocus();
@@ -825,6 +828,7 @@ void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) {
@@ -827,6 +830,7 @@ void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) {
void DesktopWindowTreeHostWin::HandleNativeBlur(HWND focused_window) {
// TODO(beng): inform the native_widget_delegate_.
@ -43,10 +43,10 @@ index 3752373..f588160 100644
if (input_method)
input_method->OnBlur();
diff --git desktop_aura/desktop_window_tree_host_x11.cc desktop_aura/desktop_window_tree_host_x11.cc
index dd8aa40..5d2a63d 100644
index 54d67ad..13e5163 100644
--- desktop_aura/desktop_window_tree_host_x11.cc
+++ desktop_aura/desktop_window_tree_host_x11.cc
@@ -150,7 +150,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
@@ -152,7 +152,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
window_shape_(NULL),
custom_window_shape_(false),
urgency_hint_set_(false),
@ -56,7 +56,7 @@ index dd8aa40..5d2a63d 100644
}
DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() {
@@ -353,7 +354,8 @@ void DesktopWindowTreeHostX11::CloseNow() {
@@ -355,7 +356,8 @@ void DesktopWindowTreeHostX11::CloseNow() {
// Actually free our native resources.
if (ui::PlatformEventSource::GetInstance())
ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
@ -66,7 +66,7 @@ index dd8aa40..5d2a63d 100644
xwindow_ = None;
desktop_native_widget_aura_->OnHostClosed();
@@ -447,6 +449,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement(
@@ -449,6 +451,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement(
}
gfx::Rect DesktopWindowTreeHostX11::GetWindowBoundsInScreen() const {
@ -75,7 +75,7 @@ index dd8aa40..5d2a63d 100644
return bounds_;
}
@@ -459,6 +463,8 @@ gfx::Rect DesktopWindowTreeHostX11::GetClientAreaBoundsInScreen() const {
@@ -461,6 +465,8 @@ gfx::Rect DesktopWindowTreeHostX11::GetClientAreaBoundsInScreen() const {
// Attempts to calculate the rect by asking the NonClientFrameView what it
// thought its GetBoundsForClientView() were broke combobox drop down
// placement.
@ -84,7 +84,7 @@ index dd8aa40..5d2a63d 100644
return bounds_;
}
@@ -882,6 +888,8 @@ void DesktopWindowTreeHostX11::Hide() {
@@ -884,6 +890,8 @@ void DesktopWindowTreeHostX11::Hide() {
}
gfx::Rect DesktopWindowTreeHostX11::GetBounds() const {
@ -93,7 +93,7 @@ index dd8aa40..5d2a63d 100644
return bounds_;
}
@@ -937,6 +945,8 @@ void DesktopWindowTreeHostX11::SetBounds(const gfx::Rect& requested_bounds) {
@@ -939,6 +947,8 @@ void DesktopWindowTreeHostX11::SetBounds(const gfx::Rect& requested_bounds) {
}
gfx::Point DesktopWindowTreeHostX11::GetLocationOnNativeScreen() const {
@ -102,7 +102,7 @@ index dd8aa40..5d2a63d 100644
return bounds_.origin();
}
@@ -1056,10 +1066,14 @@ void DesktopWindowTreeHostX11::InitX11Window(
@@ -1058,10 +1068,14 @@ void DesktopWindowTreeHostX11::InitX11Window(
}
}
@ -118,7 +118,7 @@ index dd8aa40..5d2a63d 100644
bounds_.x(), bounds_.y(),
bounds_.width(), bounds_.height(),
0, // border width
@@ -1696,6 +1710,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
@@ -1698,6 +1712,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent(
}
break;
}
@ -130,7 +130,7 @@ index dd8aa40..5d2a63d 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 1a4f725..c7ad0148 100644
index d6b5cc8..bf20d4c 100644
--- desktop_aura/desktop_window_tree_host_x11.h
+++ desktop_aura/desktop_window_tree_host_x11.h
@@ -85,6 +85,8 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11
@ -163,7 +163,7 @@ index 1a4f725..c7ad0148 100644
};
diff --git widget.cc widget.cc
index 7f649c0..5352f6a 100644
index a24f781..52a1755 100644
--- widget.cc
+++ widget.cc
@@ -109,6 +109,7 @@ Widget::InitParams::InitParams()
@ -206,7 +206,7 @@ index 7f649c0..5352f6a 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 e208d5f..89c9cac 100644
index e0f6180..25f557f 100644
--- widget.h
+++ widget.h
@@ -235,6 +235,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,

View File

@ -1,10 +1,10 @@
diff --git Source/web/ChromeClientImpl.cpp Source/web/ChromeClientImpl.cpp
index d98ab12..57c2e70 100644
index 781c45a..0fda8bf 100644
--- Source/web/ChromeClientImpl.cpp
+++ Source/web/ChromeClientImpl.cpp
@@ -726,7 +726,7 @@ bool ChromeClientImpl::hasOpenedPopup() const
@@ -741,7 +741,7 @@ bool ChromeClientImpl::hasOpenedPopup() const
PassRefPtrWillBeRawPtr<PopupMenu> ChromeClientImpl::createPopupMenu(LocalFrame& frame, PopupMenuClient* client) const
PassRefPtrWillBeRawPtr<PopupMenu> ChromeClientImpl::createPopupMenu(LocalFrame& frame, PopupMenuClient* client)
{
- if (WebViewImpl::useExternalPopupMenus())
+ if (m_webView->useExternalPopupMenus())
@ -12,10 +12,10 @@ index d98ab12..57c2e70 100644
return adoptRefWillBeNoop(new PopupMenuChromium(frame, client));
diff --git Source/web/WebViewImpl.cpp Source/web/WebViewImpl.cpp
index 3626eac..91b1d66 100644
index 8ee7335..4e2384d 100644
--- Source/web/WebViewImpl.cpp
+++ Source/web/WebViewImpl.cpp
@@ -386,6 +386,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
@@ -379,6 +379,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
, m_fakePageScaleAnimationPageScaleFactor(0)
, m_fakePageScaleAnimationUseAnchor(false)
, m_contextMenuAllowed(false)
@ -23,7 +23,7 @@ index 3626eac..91b1d66 100644
, m_doingDragAndDrop(false)
, m_ignoreInputEvents(false)
, m_compositorDeviceScaleFactorOverride(0)
@@ -3986,9 +3987,14 @@ void WebViewImpl::deviceOrPageScaleFactorChanged()
@@ -3974,9 +3975,14 @@ void WebViewImpl::deviceOrPageScaleFactorChanged()
m_page->inspectorController().deviceOrPageScaleFactorChanged();
}
@ -40,10 +40,10 @@ index 3626eac..91b1d66 100644
void WebViewImpl::startDragging(LocalFrame* frame,
diff --git Source/web/WebViewImpl.h Source/web/WebViewImpl.h
index 8229f02..d22bb85 100644
index 5264cf5..f49be43 100644
--- Source/web/WebViewImpl.h
+++ Source/web/WebViewImpl.h
@@ -380,7 +380,8 @@ public:
@@ -370,7 +370,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 8229f02..d22bb85 100644
bool contextMenuAllowed() const
{
@@ -672,6 +673,8 @@ private:
@@ -662,6 +663,8 @@ private:
bool m_contextMenuAllowed;
@ -63,10 +63,10 @@ index 8229f02..d22bb85 100644
bool m_ignoreInputEvents;
diff --git public/web/WebView.h public/web/WebView.h
index e6c4924..6df09db 100644
index dd5fa13..84a1e5e 100644
--- public/web/WebView.h
+++ public/web/WebView.h
@@ -407,6 +407,7 @@ public:
@@ -405,6 +405,7 @@ public:
// Sets whether select popup menus should be rendered by the browser.
BLINK_EXPORT static void setUseExternalPopupMenus(bool);

View File

@ -91,6 +91,7 @@ const CefRect kSelectRect(461, 21, 87, 26);
const CefRect kExpandedSelectRect(465, 42, 80, 262);
const CefRect kDropDivRect(9, 330, 52, 52);
const CefRect kDragDivRect(60, 330, 52, 52);
const int kVerticalScrollbarWidth = 15;
#elif defined(OS_LINUX)
const CefRect kEditBoxRect(434, 246, 60, 20);
const CefRect kNavigateButtonRect(380, 271, 140, 22);
@ -642,8 +643,19 @@ class OSRTestHandler : public RoutingTestHandler,
browser->GetHost()->SendMouseWheelEvent(mouse_event, 0, - deltaY);
} else {
EXPECT_EQ(dirtyRects.size(), 1U);
EXPECT_EQ(dirtyRects[0],
GetScaledRect(CefRect(0, 0, kOsrWidth, kOsrHeight)));
#if defined(OS_MACOSX)
const CefRect& expected_rect1 =
GetScaledRect(CefRect(0, 0, kOsrWidth, kOsrHeight));
const CefRect& expected_rect2 =
GetScaledRect(CefRect(0, 0, kOsrWidth - kVerticalScrollbarWidth,
kOsrHeight));
EXPECT_TRUE(dirtyRects[0] == expected_rect1 ||
dirtyRects[0] == expected_rect2);
#else
const CefRect& expected_rect =
GetScaledRect(CefRect(0, 0, kOsrWidth, kOsrHeight));
EXPECT_EQ(expected_rect, dirtyRects[0]);
#endif
DestroySucceededTestSoon();
}
break;

View File

@ -21,7 +21,7 @@
#include "tests/cefclient/client_switches.h"
CommandLine* CefTestSuite::commandline_ = NULL;
base::CommandLine* CefTestSuite::commandline_ = NULL;
CefTestSuite::CefTestSuite(int argc, char** argv)
: TestSuite(argc, argv) {
@ -36,7 +36,7 @@ void CefTestSuite::InitCommandLine(int argc, const char* const* argv) {
return;
}
commandline_ = new CommandLine(CommandLine::NO_PROGRAM);
commandline_ = new base::CommandLine(base::CommandLine::NO_PROGRAM);
#if defined(OS_WIN)
commandline_->ParseFromString(::GetCommandLineW());
#elif defined(OS_POSIX)
@ -109,7 +109,8 @@ void CefTestSuite::Initialize() {
// In some cases, we do not want to see standard error dialogs.
if (!base::debug::BeingDebugged() &&
!CommandLine::ForCurrentProcess()->HasSwitch("show-error-dialogs")) {
!base::CommandLine::ForCurrentProcess()->HasSwitch(
"show-error-dialogs")) {
SuppressErrorDialogs();
base::debug::SetSuppressDebugUI(true);
logging::SetLogAssertHandler(UnitTestAssertHandler);