mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update to Chromium revision 100584.
- Add a new CefSettings.graphics_implementation option for using different GL implementations. - Disable accelerated compositing by default due to multiple issues (issue #334, issue #335, issue #337). - Eliminate the "patcher" project and perform all patching during GYP project generation. - Fix references to non-existent files in cef.gyp. - Move BrowserWebKitInit method implementations to a separate .cc file. - Add support for Flash on Mac (issue #305). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@284 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@ -66,3 +66,4 @@ Date | CEF Revision | Chromium Revision
|
||||
2011-04-05 | /trunk@213 | /trunk@80310
|
||||
2011-05-16 | /trunk@233 | /trunk@85305
|
||||
2011-07-02 | /trunk@263 | /trunk@91424
|
||||
2011-09-10 | /trunk@284 | /trunk@100584
|
||||
|
70
cef.gyp
70
cef.gyp
@ -87,7 +87,6 @@
|
||||
],
|
||||
},
|
||||
'sources': [
|
||||
'tests/cefclient/cefclient.ico',
|
||||
'tests/cefclient/cefclient.rc',
|
||||
'tests/cefclient/cefclient_win.cpp',
|
||||
'tests/cefclient/client_handler_win.cpp',
|
||||
@ -101,8 +100,8 @@
|
||||
'tests/cefclient/plugin_test.h',
|
||||
'tests/cefclient/Resource.h',
|
||||
'tests/cefclient/res/cefclient.ico',
|
||||
'tests/cefclient/res/logo.jpg',
|
||||
'tests/cefclient/res/logoball.jpg',
|
||||
'tests/cefclient/res/logo.png',
|
||||
'tests/cefclient/res/logoball.png',
|
||||
'tests/cefclient/res/small.ico',
|
||||
'tests/cefclient/res/uiplugin.html',
|
||||
'tests/cefclient/resource_util_win.cpp',
|
||||
@ -115,7 +114,7 @@
|
||||
[ 'OS=="mac"', {
|
||||
'product_name': 'cefclient',
|
||||
'variables': {
|
||||
'repack_path': '../tools/data_pack/repack.py',
|
||||
'repack_path': '../tools/grit/grit/format/repack.py',
|
||||
},
|
||||
'actions': [
|
||||
{
|
||||
@ -148,7 +147,7 @@
|
||||
'destination': '<(PRODUCT_DIR)/cefclient.app/Contents/MacOS/',
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/libcef.dylib',
|
||||
'<(PRODUCT_DIR)/libffmpegsumo.dylib',
|
||||
'<(PRODUCT_DIR)/ffmpegsumo.so',
|
||||
],
|
||||
},
|
||||
{
|
||||
@ -214,54 +213,11 @@
|
||||
'..',
|
||||
],
|
||||
},
|
||||
{
|
||||
'target_name': 'patcher',
|
||||
'type': 'none',
|
||||
'msvs_guid': 'A6D0953E-899E-4C60-AB6B-CAE75A44B8E6',
|
||||
'conditions': [
|
||||
['OS=="win"', {
|
||||
'actions': [{
|
||||
'action_name': 'patch_source',
|
||||
'msvs_cygwin_shell': 0,
|
||||
'inputs': [
|
||||
'tools/patch_source.bat',
|
||||
],
|
||||
'outputs': [
|
||||
'tools/patch_source.bat.output',
|
||||
],
|
||||
'action': ['', '<@(_inputs)'],
|
||||
},
|
||||
{
|
||||
'action_name': 'make_version_header',
|
||||
'msvs_cygwin_shell': 0,
|
||||
'inputs': [
|
||||
'tools/make_version_header.bat',
|
||||
],
|
||||
'outputs': [
|
||||
'tools/make_version_header.bat.output',
|
||||
],
|
||||
'action': ['', '<@(_inputs)'],
|
||||
}],
|
||||
}, { # OS!="win"
|
||||
'actions': [{
|
||||
'action_name': 'patch_source',
|
||||
'inputs': [
|
||||
'tools/patch_source.sh',
|
||||
],
|
||||
'outputs': [
|
||||
'tools/patch_source.sh.output',
|
||||
],
|
||||
'action': ['<@(_inputs)'],
|
||||
}],
|
||||
}],
|
||||
],
|
||||
},
|
||||
{
|
||||
'target_name': 'libcef',
|
||||
'type': 'shared_library',
|
||||
'msvs_guid': 'C13650D5-CF1A-4259-BE45-B1EBA6280E47',
|
||||
'dependencies': [
|
||||
'../app/app.gyp:app_base',
|
||||
'../base/base.gyp:base',
|
||||
'../base/base.gyp:base_i18n',
|
||||
'../build/temp_gyp/googleurl.gyp:googleurl',
|
||||
@ -275,7 +231,7 @@
|
||||
'../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
|
||||
'../third_party/icu/icu.gyp:icui18n',
|
||||
'../third_party/icu/icu.gyp:icuuc',
|
||||
'../third_party/leveldb/leveldb.gyp:leveldb',
|
||||
'../third_party/leveldatabase/leveldatabase.gyp:leveldatabase',
|
||||
'../third_party/libjpeg_turbo/libjpeg.gyp:libjpeg',
|
||||
'../third_party/libpng/libpng.gyp:libpng',
|
||||
'../third_party/libxml/libxml.gyp:libxml',
|
||||
@ -289,8 +245,8 @@
|
||||
'../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit',
|
||||
'../third_party/zlib/zlib.gyp:zlib',
|
||||
'../ui/ui.gyp:gfx_resources',
|
||||
'../ui/ui.gyp:ui_base',
|
||||
'../ui/ui.gyp:ui_gfx',
|
||||
'../ui/ui.gyp:ui',
|
||||
'../v8/tools/gyp/v8.gyp:v8',
|
||||
'../webkit/support/webkit_support.gyp:appcache',
|
||||
'../webkit/support/webkit_support.gyp:blob',
|
||||
'../webkit/support/webkit_support.gyp:database',
|
||||
@ -438,8 +394,8 @@
|
||||
'$(OutDir)/obj/global_intermediate/webkit/webkit_chromium_resources.rc',
|
||||
'$(OutDir)/obj/global_intermediate/webkit/webkit_resources.rc',
|
||||
'$(OutDir)/obj/global_intermediate/webkit/webkit_strings_en-US.rc',
|
||||
'include/cef_types_win.h',
|
||||
'include/cef_win.h',
|
||||
'include/internal/cef_types_win.h',
|
||||
'include/internal/cef_win.h',
|
||||
'libcef_dll/libcef_dll.rc',
|
||||
],
|
||||
'link_settings': {
|
||||
@ -585,7 +541,6 @@
|
||||
'../third_party/WebKit/Source/WebKit/chromium/public'
|
||||
],
|
||||
'dependencies': [
|
||||
'../app/app.gyp:app_base',
|
||||
'../base/base.gyp:base',
|
||||
'../base/base.gyp:base_i18n',
|
||||
'../build/temp_gyp/googleurl.gyp:googleurl',
|
||||
@ -599,7 +554,7 @@
|
||||
'../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
|
||||
'../third_party/icu/icu.gyp:icui18n',
|
||||
'../third_party/icu/icu.gyp:icuuc',
|
||||
'../third_party/leveldb/leveldb.gyp:leveldb',
|
||||
'../third_party/leveldatabase/leveldatabase.gyp:leveldatabase',
|
||||
'../third_party/libjpeg_turbo/libjpeg.gyp:libjpeg',
|
||||
'../third_party/libpng/libpng.gyp:libpng',
|
||||
'../third_party/libxml/libxml.gyp:libxml',
|
||||
@ -609,8 +564,8 @@
|
||||
'../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit',
|
||||
'../third_party/zlib/zlib.gyp:zlib',
|
||||
'../ui/ui.gyp:gfx_resources',
|
||||
'../ui/ui.gyp:ui_base',
|
||||
'../ui/ui.gyp:ui_gfx',
|
||||
'../ui/ui.gyp:ui',
|
||||
'../v8/tools/gyp/v8.gyp:v8',
|
||||
'../webkit/support/webkit_support.gyp:appcache',
|
||||
'../webkit/support/webkit_support.gyp:blob',
|
||||
'../webkit/support/webkit_support.gyp:database',
|
||||
@ -674,6 +629,7 @@
|
||||
'libcef/browser_webstoragenamespace_impl.h',
|
||||
'libcef/browser_webkit_glue.cc',
|
||||
'libcef/browser_webkit_glue.h',
|
||||
'libcef/browser_webkit_init.cc',
|
||||
'libcef/browser_webkit_init.h',
|
||||
'libcef/browser_webview_delegate.cc',
|
||||
'libcef/browser_webview_delegate.h',
|
||||
|
@ -135,6 +135,12 @@ typedef struct _cef_settings_t
|
||||
// logged.
|
||||
///
|
||||
cef_log_severity_t log_severity;
|
||||
|
||||
///
|
||||
// The graphics implementation that CEF will use for rendering GPU accelerated
|
||||
// content like WebGL, accelerated layers and 3D CSS.
|
||||
///
|
||||
cef_graphics_implementation_t graphics_implementation;
|
||||
} cef_settings_t;
|
||||
|
||||
///
|
||||
@ -321,9 +327,11 @@ typedef struct _cef_browser_settings_t
|
||||
bool webgl_disabled;
|
||||
|
||||
///
|
||||
// Set to true (1) to disable accelerated compositing.
|
||||
// Set to true (1) to enable accelerated compositing. This is turned off by
|
||||
// default because the current in-process GPU implementation does not
|
||||
// support it correctly.
|
||||
///
|
||||
bool accelerated_compositing_disabled;
|
||||
bool accelerated_compositing_enabled;
|
||||
|
||||
///
|
||||
// Set to true (1) to disable accelerated layers. This affects features like
|
||||
|
@ -43,6 +43,15 @@ extern "C" {
|
||||
#define cef_window_handle_t GtkWidget*
|
||||
#define cef_cursor_handle_t void*
|
||||
|
||||
///
|
||||
// Supported graphics implementations.
|
||||
///
|
||||
enum cef_graphics_implementation_t
|
||||
{
|
||||
DESKTOP_IN_PROCESS = 0,
|
||||
DESKTOP_IN_PROCESS_COMMAND_BUFFER,
|
||||
};
|
||||
|
||||
///
|
||||
// Class representing window information.
|
||||
///
|
||||
|
@ -51,6 +51,15 @@ class NSView;
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
///
|
||||
// Supported graphics implementations.
|
||||
///
|
||||
enum cef_graphics_implementation_t
|
||||
{
|
||||
DESKTOP_IN_PROCESS = 0,
|
||||
DESKTOP_IN_PROCESS_COMMAND_BUFFER,
|
||||
};
|
||||
|
||||
///
|
||||
// Class representing window information.
|
||||
///
|
||||
|
@ -43,6 +43,17 @@ extern "C" {
|
||||
#define cef_window_handle_t HWND
|
||||
#define cef_cursor_handle_t HCURSOR
|
||||
|
||||
///
|
||||
// Supported graphics implementations.
|
||||
///
|
||||
enum cef_graphics_implementation_t
|
||||
{
|
||||
ANGLE_IN_PROCESS = 0,
|
||||
ANGLE_IN_PROCESS_COMMAND_BUFFER,
|
||||
DESKTOP_IN_PROCESS,
|
||||
DESKTOP_IN_PROCESS_COMMAND_BUFFER,
|
||||
};
|
||||
|
||||
///
|
||||
// Class representing window information.
|
||||
///
|
||||
|
@ -280,6 +280,7 @@ struct CefSettingsTraits {
|
||||
cef_string_set(src->log_file.str, src->log_file.length, &target->log_file,
|
||||
copy);
|
||||
target->log_severity = src->log_severity;
|
||||
target->graphics_implementation = src->graphics_implementation;
|
||||
}
|
||||
};
|
||||
|
||||
@ -374,8 +375,8 @@ struct CefBrowserSettingsTraits {
|
||||
target->databases_disabled = src->databases_disabled;
|
||||
target->application_cache_disabled = src->application_cache_disabled;
|
||||
target->webgl_disabled = src->webgl_disabled;
|
||||
target->accelerated_compositing_disabled =
|
||||
src->accelerated_compositing_disabled;
|
||||
target->accelerated_compositing_enabled =
|
||||
src->accelerated_compositing_enabled;
|
||||
target->accelerated_layers_disabled = src->accelerated_layers_disabled;
|
||||
target->accelerated_video_disabled = src->accelerated_video_disabled;
|
||||
target->accelerated_2d_canvas_disabled =
|
||||
|
@ -36,7 +36,8 @@ BrowserDatabaseSystem::BrowserDatabaseSystem()
|
||||
DCHECK(!instance_);
|
||||
instance_ = this;
|
||||
CHECK(temp_dir_.CreateUniqueTempDir());
|
||||
db_tracker_ = new DatabaseTracker(temp_dir_.path(), false, NULL, NULL, NULL);
|
||||
db_tracker_ =
|
||||
new DatabaseTracker(temp_dir_.path(), false, false, NULL, NULL, NULL);
|
||||
db_tracker_->AddObserver(this);
|
||||
db_thread_.Start();
|
||||
db_thread_proxy_ = db_thread_.message_loop_proxy();
|
||||
|
@ -236,7 +236,7 @@ void BrowserDragDelegate::PrepareDragForFileContents(
|
||||
if (file_name.value().empty()) {
|
||||
// Retrieve the name from the URL.
|
||||
file_name = FilePath(
|
||||
net::GetSuggestedFilename(drop_data.url, "", "", "", string16()));
|
||||
net::GetSuggestedFilename(drop_data.url, "", "", "", "", string16()));
|
||||
if (file_name.value().size() + drop_data.file_extension.size() + 1 >
|
||||
MAX_PATH) {
|
||||
file_name = FilePath(file_name.value().substr(
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h"
|
||||
#include "webkit/fileapi/file_system_callback_dispatcher.h"
|
||||
#include "webkit/fileapi/file_system_context.h"
|
||||
#include "webkit/fileapi/file_system_file_util.h"
|
||||
#include "webkit/fileapi/file_system_operation.h"
|
||||
#include "webkit/fileapi/file_system_path_manager.h"
|
||||
#include "webkit/fileapi/file_system_types.h"
|
||||
@ -44,7 +43,6 @@ using WebKit::WebVector;
|
||||
|
||||
using fileapi::FileSystemCallbackDispatcher;
|
||||
using fileapi::FileSystemContext;
|
||||
using fileapi::FileSystemFileUtil;
|
||||
using fileapi::FileSystemOperation;
|
||||
|
||||
namespace {
|
||||
@ -103,13 +101,7 @@ class BrowserFileSystemCallbackDispatcher
|
||||
if (!root.is_valid())
|
||||
callbacks_->didFail(WebKit::WebFileErrorSecurity);
|
||||
else
|
||||
// Temporary hack to ease a 4-phase Chromium/WebKit commit.
|
||||
#ifdef WEBFILESYSTEMCALLBACKS_USE_URL_NOT_STRING
|
||||
callbacks_->didOpenFileSystem(WebString::fromUTF8(name), root);
|
||||
#else
|
||||
callbacks_->didOpenFileSystem(
|
||||
WebString::fromUTF8(name), WebString::fromUTF8(root.spec()));
|
||||
#endif
|
||||
}
|
||||
|
||||
virtual void DidFail(base::PlatformFileError error_code) {
|
||||
@ -132,8 +124,8 @@ class BrowserFileSystemCallbackDispatcher
|
||||
BrowserFileSystem::BrowserFileSystem() {
|
||||
if (file_system_dir_.CreateUniqueTempDir()) {
|
||||
file_system_context_ = new FileSystemContext(
|
||||
base::MessageLoopProxy::CreateForCurrentThread(),
|
||||
base::MessageLoopProxy::CreateForCurrentThread(),
|
||||
base::MessageLoopProxy::current(),
|
||||
base::MessageLoopProxy::current(),
|
||||
NULL /* special storage policy */,
|
||||
NULL /* quota manager */,
|
||||
file_system_dir_.path(),
|
||||
@ -177,65 +169,6 @@ void BrowserFileSystem::OpenFileSystem(
|
||||
GetNewOperation(callbacks)->OpenFileSystem(origin_url, type, create);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::move(const WebString& src_path,
|
||||
const WebString& dest_path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
move(GURL(src_path), GURL(dest_path), callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::copy(const WebString& src_path,
|
||||
const WebString& dest_path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
copy(GURL(src_path), GURL(dest_path), callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::remove(const WebString& path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
remove(GURL(path), callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::removeRecursively(const WebString& path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
removeRecursively(GURL(path), callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::readMetadata(const WebString& path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
readMetadata(GURL(path), callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::createFile(const WebString& path,
|
||||
bool exclusive,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
createFile(GURL(path), exclusive, callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::createDirectory(const WebString& path,
|
||||
bool exclusive,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
createDirectory(GURL(path), exclusive, callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::fileExists(const WebString& path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
fileExists(GURL(path), callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::directoryExists(const WebString& path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
directoryExists(GURL(path), callbacks);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::readDirectory(const WebString& path,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
readDirectory(GURL(path), callbacks);
|
||||
}
|
||||
|
||||
WebKit::WebFileWriter* BrowserFileSystem::createFileWriter(
|
||||
const WebString& path, WebKit::WebFileWriterClient* client) {
|
||||
return createFileWriter(GURL(path), client);
|
||||
}
|
||||
|
||||
void BrowserFileSystem::move(
|
||||
const WebURL& src_path,
|
||||
const WebURL& dest_path, WebFileSystemCallbacks* callbacks) {
|
||||
@ -298,7 +231,7 @@ FileSystemOperation* BrowserFileSystem::GetNewOperation(
|
||||
BrowserFileSystemCallbackDispatcher* dispatcher =
|
||||
new BrowserFileSystemCallbackDispatcher(AsWeakPtr(), callbacks);
|
||||
FileSystemOperation* operation = new FileSystemOperation(
|
||||
dispatcher, base::MessageLoopProxy::CreateForCurrentThread(),
|
||||
dispatcher, base::MessageLoopProxy::current(),
|
||||
file_system_context_.get(), NULL);
|
||||
return operation;
|
||||
}
|
@ -41,81 +41,43 @@ class BrowserFileSystem
|
||||
return file_system_context_.get();
|
||||
}
|
||||
|
||||
// New WebKit::WebFileSystem overrides.
|
||||
// WebKit::WebFileSystem implementation.
|
||||
virtual void move(
|
||||
const WebKit::WebURL& src_path,
|
||||
const WebKit::WebURL& dest_path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void copy(
|
||||
const WebKit::WebURL& src_path,
|
||||
const WebKit::WebURL& dest_path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void remove(
|
||||
const WebKit::WebURL& path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void removeRecursively(
|
||||
const WebKit::WebURL& path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void readMetadata(
|
||||
const WebKit::WebURL& path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void createFile(
|
||||
const WebKit::WebURL& path,
|
||||
bool exclusive,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void createDirectory(
|
||||
const WebKit::WebURL& path,
|
||||
bool exclusive,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void fileExists(
|
||||
const WebKit::WebURL& path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void directoryExists(
|
||||
const WebKit::WebURL& path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual void readDirectory(
|
||||
const WebKit::WebURL& path,
|
||||
WebKit::WebFileSystemCallbacks*);
|
||||
|
||||
WebKit::WebFileSystemCallbacks*) OVERRIDE;
|
||||
virtual WebKit::WebFileWriter* createFileWriter(
|
||||
const WebKit::WebURL& path, WebKit::WebFileWriterClient*);
|
||||
|
||||
// Old WebKit::WebFileSystem overrides, soon to go away.
|
||||
virtual void move(const WebKit::WebString& src_path,
|
||||
const WebKit::WebString& dest_path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void copy(const WebKit::WebString& src_path,
|
||||
const WebKit::WebString& dest_path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void remove(const WebKit::WebString& path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void removeRecursively(const WebKit::WebString& path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void readMetadata(const WebKit::WebString& path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void createFile(const WebKit::WebString& path,
|
||||
bool exclusive,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void createDirectory(const WebKit::WebString& path,
|
||||
bool exclusive,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void fileExists(const WebKit::WebString& path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void directoryExists(const WebKit::WebString& path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual void readDirectory(const WebKit::WebString& path,
|
||||
WebKit::WebFileSystemCallbacks* callbacks);
|
||||
virtual WebKit::WebFileWriter* createFileWriter(
|
||||
const WebKit::WebString& path, WebKit::WebFileWriterClient* client);
|
||||
const WebKit::WebURL& path, WebKit::WebFileWriterClient*) OVERRIDE;
|
||||
|
||||
private:
|
||||
// Helpers.
|
||||
|
@ -10,13 +10,11 @@
|
||||
#include "net/url_request/url_request_context.h"
|
||||
#include "webkit/fileapi/file_system_callback_dispatcher.h"
|
||||
#include "webkit/fileapi/file_system_context.h"
|
||||
#include "webkit/fileapi/file_system_file_util.h"
|
||||
#include "webkit/fileapi/file_system_operation.h"
|
||||
#include "webkit/glue/webkit_glue.h"
|
||||
|
||||
using fileapi::FileSystemCallbackDispatcher;
|
||||
using fileapi::FileSystemContext;
|
||||
using fileapi::FileSystemFileUtil;
|
||||
using fileapi::FileSystemOperation;
|
||||
using fileapi::WebFileWriterBase;
|
||||
using WebKit::WebFileWriterClient;
|
||||
@ -31,13 +29,13 @@ net::URLRequestContext* BrowserFileWriter::request_context_ = NULL;
|
||||
class BrowserFileWriter::IOThreadProxy
|
||||
: public base::RefCountedThreadSafe<BrowserFileWriter::IOThreadProxy> {
|
||||
public:
|
||||
explicit IOThreadProxy(const base::WeakPtr<BrowserFileWriter>& simple_writer,
|
||||
IOThreadProxy(const base::WeakPtr<BrowserFileWriter>& simple_writer,
|
||||
FileSystemContext* file_system_context)
|
||||
: simple_writer_(simple_writer),
|
||||
operation_(NULL),
|
||||
file_system_context_(file_system_context) {
|
||||
io_thread_ = CefThread::GetMessageLoopProxyForThread(CefThread::IO);
|
||||
main_thread_ = base::MessageLoopProxy::CreateForCurrentThread();
|
||||
main_thread_ = base::MessageLoopProxy::current();
|
||||
}
|
||||
|
||||
virtual ~IOThreadProxy() {
|
||||
|
@ -1238,13 +1238,12 @@ void CefBrowserImpl::UIT_Find(int identifier, const CefString& search_text,
|
||||
|
||||
if (main_frame->document().isPluginDocument()) {
|
||||
WebPlugin* plugin = main_frame->document().to<WebPluginDocument>().plugin();
|
||||
webkit::npapi::WebPluginDelegate* delegate =
|
||||
static_cast<webkit::npapi::WebPluginImpl*>(plugin)->delegate();
|
||||
if (plugin) {
|
||||
if (options.findNext) {
|
||||
// Just navigate back/forward.
|
||||
delegate->SelectFindResult(options.forward);
|
||||
plugin->selectFindResult(options.forward);
|
||||
} else {
|
||||
if (delegate->StartFind(searchText, options.matchCase, identifier)) {
|
||||
if (plugin->startFind(searchText, options.matchCase, identifier)) {
|
||||
} else {
|
||||
// No find results.
|
||||
UIT_NotifyFindStatus(identifier, 0, gfx::Rect(), 0, true);
|
||||
@ -1252,6 +1251,7 @@ void CefBrowserImpl::UIT_Find(int identifier, const CefString& search_text,
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
WebFrame* frame_after_main = main_frame->traverseNext(true);
|
||||
WebFrame* focused_frame = view->focusedFrame();
|
||||
@ -1358,11 +1358,10 @@ void CefBrowserImpl::UIT_StopFinding(bool clear_selection)
|
||||
|
||||
WebDocument doc = view->mainFrame()->document();
|
||||
if (doc.isPluginDocument()) {
|
||||
WebPlugin* plugin = view->mainFrame()->document().
|
||||
to<WebPluginDocument>().plugin();
|
||||
webkit::npapi::WebPluginDelegate* delegate =
|
||||
static_cast<webkit::npapi::WebPluginImpl*>(plugin)->delegate();
|
||||
delegate->StopFind();
|
||||
WebPlugin* plugin =
|
||||
view->mainFrame()->document().to<WebPluginDocument>().plugin();
|
||||
if (plugin)
|
||||
plugin->stopFind();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -296,8 +296,7 @@ void CefBrowserImpl::UIT_PrintPage(int page_number, int total_pages,
|
||||
int saved_state = SaveDC(hDC);
|
||||
DCHECK_NE(saved_state, 0);
|
||||
|
||||
skia::PlatformDevice* device =
|
||||
skia::VectorPlatformDeviceEmfFactory::CreateDevice(dest_size_x,
|
||||
SkDevice* device = skia::VectorPlatformDeviceEmf::CreateDevice(dest_size_x,
|
||||
dest_size_y,
|
||||
true, hDC);
|
||||
DCHECK(device);
|
||||
|
@ -8,9 +8,9 @@
|
||||
#include <list>
|
||||
|
||||
#include "cef_thread.h"
|
||||
#include "app/sql/meta_table.h"
|
||||
#include "app/sql/statement.h"
|
||||
#include "app/sql/transaction.h"
|
||||
#include "sql/meta_table.h"
|
||||
#include "sql/statement.h"
|
||||
#include "sql/transaction.h"
|
||||
#include "base/file_path.h"
|
||||
#include "base/file_util.h"
|
||||
#include "googleurl/src/gurl.h"
|
||||
|
@ -15,7 +15,9 @@
|
||||
#include "build/build_config.h"
|
||||
#include "net/base/cert_verifier.h"
|
||||
#include "net/base/cookie_monster.h"
|
||||
#include "net/base/default_origin_bound_cert_store.h"
|
||||
#include "net/base/host_resolver.h"
|
||||
#include "net/base/origin_bound_cert_service.h"
|
||||
#include "net/base/ssl_config_service_defaults.h"
|
||||
#include "net/ftp/ftp_network_layer.h"
|
||||
#include "net/http/http_auth_handler_factory.h"
|
||||
@ -24,7 +26,7 @@
|
||||
#include "net/proxy/proxy_service.h"
|
||||
#include "net/url_request/url_request_job_factory.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKitClient.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKitPlatformSupport.h"
|
||||
#include "webkit/blob/blob_storage_controller.h"
|
||||
#include "webkit/blob/blob_url_request_job_factory.h"
|
||||
#include "webkit/fileapi/file_system_context.h"
|
||||
@ -90,6 +92,8 @@ void BrowserRequestContext::Init(
|
||||
|
||||
storage_.set_cookie_store(
|
||||
new net::CookieMonster(persistent_store.get(), NULL));
|
||||
storage_.set_origin_bound_cert_service(new net::OriginBoundCertService(
|
||||
new net::DefaultOriginBoundCertStore(NULL)));
|
||||
|
||||
// hard-code A-L and A-C for test shells
|
||||
set_accept_language("en-us,en");
|
||||
@ -157,7 +161,8 @@ void BrowserRequestContext::Init(
|
||||
cache_path, 0, BrowserResourceLoaderBridge::GetCacheThread());
|
||||
|
||||
net::HttpCache* cache =
|
||||
new net::HttpCache(host_resolver(), cert_verifier(), NULL, NULL,
|
||||
new net::HttpCache(host_resolver(), cert_verifier(),
|
||||
origin_bound_cert_service(), NULL, NULL,
|
||||
proxy_service(), ssl_config_service(),
|
||||
http_auth_handler_factory(), NULL, NULL, backend);
|
||||
|
||||
@ -169,7 +174,7 @@ void BrowserRequestContext::Init(
|
||||
|
||||
blob_storage_controller_.reset(new webkit_blob::BlobStorageController());
|
||||
file_system_context_ = static_cast<BrowserFileSystem*>(
|
||||
WebKit::webKitClient()->fileSystem())->file_system_context();
|
||||
WebKit::webKitPlatformSupport()->fileSystem())->file_system_context();
|
||||
|
||||
net::URLRequestJobFactory* job_factory = new net::URLRequestJobFactory;
|
||||
job_factory->SetProtocolHandler(
|
||||
|
@ -234,7 +234,8 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
if (allow_download &&
|
||||
webkit_glue::ShouldDownload(content_disposition, info.mime_type)) {
|
||||
string16 filename = net::GetSuggestedFilename(url,
|
||||
content_disposition, info.charset, "", ASCIIToUTF16("download"));
|
||||
content_disposition, info.charset, "", info.mime_type,
|
||||
ASCIIToUTF16("download"));
|
||||
CefRefPtr<CefDownloadHandler> dl_handler;
|
||||
if (handler->GetDownloadHandler(browser_, info.mime_type,
|
||||
filename, info.content_length,
|
||||
@ -521,7 +522,7 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
FilePath path;
|
||||
if (file_util::CreateTemporaryFile(&path)) {
|
||||
downloaded_file_ = DeletableFileReference::GetOrCreate(
|
||||
path, base::MessageLoopProxy::CreateForCurrentThread());
|
||||
path, base::MessageLoopProxy::current());
|
||||
file_stream_.Open(
|
||||
path, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_WRITE);
|
||||
}
|
||||
@ -531,7 +532,7 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
|
||||
if (request_.get() && request_->has_upload() &&
|
||||
params->load_flags & net::LOAD_ENABLE_UPLOAD_PROGRESS) {
|
||||
upload_progress_timer_.Start(
|
||||
upload_progress_timer_.Start(FROM_HERE,
|
||||
base::TimeDelta::FromMilliseconds(
|
||||
kUpdateUploadProgressIntervalMsec),
|
||||
this, &RequestProxy::MaybeUpdateUploadProgress);
|
||||
@ -653,14 +654,14 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
|
||||
virtual void OnReceivedRedirect(net::URLRequest* request,
|
||||
const GURL& new_url,
|
||||
bool* defer_redirect) {
|
||||
bool* defer_redirect) OVERRIDE {
|
||||
DCHECK(request->status().is_success());
|
||||
ResourceResponseInfo info;
|
||||
PopulateResponseInfo(request, &info);
|
||||
OnReceivedRedirect(new_url, info, defer_redirect);
|
||||
}
|
||||
|
||||
virtual void OnResponseStarted(net::URLRequest* request) {
|
||||
virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE {
|
||||
if (request->status().is_success()) {
|
||||
ResourceResponseInfo info;
|
||||
PopulateResponseInfo(request, &info);
|
||||
@ -672,7 +673,7 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
}
|
||||
|
||||
virtual void OnAuthRequired(net::URLRequest* request,
|
||||
net::AuthChallengeInfo* auth_info) {
|
||||
net::AuthChallengeInfo* auth_info) OVERRIDE {
|
||||
if (browser_.get()) {
|
||||
CefRefPtr<CefClient> client = browser_->GetClient();
|
||||
if (client.get()) {
|
||||
@ -695,12 +696,14 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
|
||||
virtual void OnSSLCertificateError(net::URLRequest* request,
|
||||
int cert_error,
|
||||
net::X509Certificate* cert) {
|
||||
net::X509Certificate* cert) OVERRIDE {
|
||||
// Allow all certificate errors.
|
||||
request->ContinueDespiteLastError();
|
||||
}
|
||||
|
||||
virtual bool CanGetCookies(net::URLRequest* request) {
|
||||
virtual bool CanGetCookies(
|
||||
const net::URLRequest* request,
|
||||
const net::CookieList& cookie_list) const OVERRIDE {
|
||||
StaticCookiePolicy::Type policy_type =
|
||||
_Context->request_context()->AcceptAllCookies() ?
|
||||
StaticCookiePolicy::ALLOW_ALL_COOKIES :
|
||||
@ -712,9 +715,9 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
return rv == net::OK;
|
||||
}
|
||||
|
||||
virtual bool CanSetCookie(net::URLRequest* request,
|
||||
virtual bool CanSetCookie(const net::URLRequest* request,
|
||||
const std::string& cookie_line,
|
||||
net::CookieOptions* options) {
|
||||
net::CookieOptions* options) const OVERRIDE {
|
||||
StaticCookiePolicy::Type policy_type =
|
||||
_Context->request_context()->AcceptAllCookies() ?
|
||||
StaticCookiePolicy::ALLOW_ALL_COOKIES :
|
||||
@ -726,7 +729,8 @@ class RequestProxy : public net::URLRequest::Delegate,
|
||||
return rv == net::OK;
|
||||
}
|
||||
|
||||
virtual void OnReadCompleted(net::URLRequest* request, int bytes_read) {
|
||||
virtual void OnReadCompleted(net::URLRequest* request,
|
||||
int bytes_read) OVERRIDE {
|
||||
if (request->status().is_success() && bytes_read > 0) {
|
||||
OnReceivedData(bytes_read);
|
||||
} else {
|
||||
@ -938,7 +942,7 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
|
||||
// --------------------------------------------------------------------------
|
||||
// ResourceLoaderBridge implementation:
|
||||
|
||||
virtual void AppendDataToUpload(const char* data, int data_len) {
|
||||
virtual void AppendDataToUpload(const char* data, int data_len) OVERRIDE {
|
||||
DCHECK(params_.get());
|
||||
if (!params_->upload)
|
||||
params_->upload = new net::UploadData();
|
||||
@ -949,7 +953,7 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
|
||||
const FilePath& file_path,
|
||||
uint64 offset,
|
||||
uint64 length,
|
||||
const base::Time& expected_modification_time) {
|
||||
const base::Time& expected_modification_time) OVERRIDE {
|
||||
DCHECK(params_.get());
|
||||
if (!params_->upload)
|
||||
params_->upload = new net::UploadData();
|
||||
@ -957,21 +961,21 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
|
||||
expected_modification_time);
|
||||
}
|
||||
|
||||
virtual void AppendBlobToUpload(const GURL& blob_url) {
|
||||
virtual void AppendBlobToUpload(const GURL& blob_url) OVERRIDE {
|
||||
DCHECK(params_.get());
|
||||
if (!params_->upload)
|
||||
params_->upload = new net::UploadData();
|
||||
params_->upload->AppendBlob(blob_url);
|
||||
}
|
||||
|
||||
virtual void SetUploadIdentifier(int64 identifier) {
|
||||
virtual void SetUploadIdentifier(int64 identifier) OVERRIDE {
|
||||
DCHECK(params_.get());
|
||||
if (!params_->upload)
|
||||
params_->upload = new net::UploadData();
|
||||
params_->upload->set_identifier(identifier);
|
||||
}
|
||||
|
||||
virtual bool Start(Peer* peer) {
|
||||
virtual bool Start(Peer* peer) OVERRIDE {
|
||||
DCHECK(!proxy_);
|
||||
|
||||
proxy_ = new RequestProxy(browser_);
|
||||
@ -982,16 +986,16 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
|
||||
return true; // Any errors will be reported asynchronously.
|
||||
}
|
||||
|
||||
virtual void Cancel() {
|
||||
virtual void Cancel() OVERRIDE {
|
||||
DCHECK(proxy_);
|
||||
proxy_->Cancel();
|
||||
}
|
||||
|
||||
virtual void SetDefersLoading(bool value) {
|
||||
virtual void SetDefersLoading(bool value) OVERRIDE {
|
||||
// TODO(darin): implement me
|
||||
}
|
||||
|
||||
virtual void SyncLoad(SyncLoadResponse* response) {
|
||||
virtual void SyncLoad(SyncLoadResponse* response) OVERRIDE {
|
||||
DCHECK(!proxy_);
|
||||
|
||||
// this may change as the result of a redirect
|
||||
@ -1005,6 +1009,8 @@ class ResourceLoaderBridgeImpl : public ResourceLoaderBridge {
|
||||
static_cast<SyncRequestProxy*>(proxy_)->WaitForCompletion();
|
||||
}
|
||||
|
||||
virtual void UpdateRoutingId(int new_routing_id) OVERRIDE {}
|
||||
|
||||
private:
|
||||
CefRefPtr<CefBrowser> browser_;
|
||||
|
||||
@ -1076,26 +1082,6 @@ ResourceLoaderBridge* ResourceLoaderBridge::Create(
|
||||
return new ResourceLoaderBridgeImpl(browser.get(), request_info);
|
||||
}
|
||||
|
||||
// Issue the proxy resolve request on the io thread, and wait
|
||||
// for the result.
|
||||
bool FindProxyForUrl(const GURL& url, std::string* proxy_list) {
|
||||
DCHECK(_Context->request_context());
|
||||
|
||||
scoped_refptr<net::SyncProxyServiceHelper> sync_proxy_service(
|
||||
new net::SyncProxyServiceHelper(
|
||||
_Context->process()->io_thread()->message_loop(),
|
||||
_Context->request_context()->proxy_service()));
|
||||
|
||||
net::ProxyInfo proxy_info;
|
||||
int rv = sync_proxy_service->ResolveProxy(url, &proxy_info,
|
||||
net::BoundNetLog());
|
||||
if (rv == net::OK) {
|
||||
*proxy_list = proxy_info.ToPacString();
|
||||
}
|
||||
|
||||
return rv == net::OK;
|
||||
}
|
||||
|
||||
} // namespace webkit_glue
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -124,7 +124,7 @@ void BrowserToWebSettings(const CefBrowserSettings& cef, WebPreferences& web)
|
||||
web.allow_file_access_from_file_urls = cef.file_access_from_file_urls_allowed;
|
||||
web.experimental_webgl_enabled = !cef.webgl_disabled;
|
||||
web.show_composited_layer_borders = false;
|
||||
web.accelerated_compositing_enabled = !cef.accelerated_compositing_disabled;
|
||||
web.accelerated_compositing_enabled = cef.accelerated_compositing_enabled;
|
||||
web.accelerated_layers_enabled = !cef.accelerated_layers_disabled;
|
||||
web.accelerated_video_enabled = !cef.accelerated_video_disabled;
|
||||
web.accelerated_2d_canvas_enabled = !cef.accelerated_2d_canvas_disabled;
|
||||
|
@ -6,6 +6,7 @@
|
||||
|
||||
#include "browser_socket_stream_bridge.h"
|
||||
|
||||
#include "base/atomicops.h"
|
||||
#include "base/memory/ref_counted.h"
|
||||
#include "base/message_loop.h"
|
||||
#include "googleurl/src/gurl.h"
|
||||
@ -69,7 +70,7 @@ class WebSocketStreamHandleBridgeImpl
|
||||
|
||||
scoped_refptr<net::SocketStreamJob> socket_;
|
||||
// Number of pending tasks to handle net::SocketStream::Delegate methods.
|
||||
int num_pending_tasks_;
|
||||
base::subtle::Atomic32 num_pending_tasks_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl);
|
||||
};
|
||||
@ -119,7 +120,7 @@ void WebSocketStreamHandleBridgeImpl::Close() {
|
||||
|
||||
void WebSocketStreamHandleBridgeImpl::OnConnected(
|
||||
net::SocketStream* socket, int max_pending_send_allowed) {
|
||||
++num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
||||
message_loop_->PostTask(
|
||||
FROM_HERE,
|
||||
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnConnected,
|
||||
@ -128,7 +129,7 @@ void WebSocketStreamHandleBridgeImpl::OnConnected(
|
||||
|
||||
void WebSocketStreamHandleBridgeImpl::OnSentData(
|
||||
net::SocketStream* socket, int amount_sent) {
|
||||
++num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
||||
message_loop_->PostTask(
|
||||
FROM_HERE,
|
||||
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnSentData,
|
||||
@ -137,7 +138,7 @@ void WebSocketStreamHandleBridgeImpl::OnSentData(
|
||||
|
||||
void WebSocketStreamHandleBridgeImpl::OnReceivedData(
|
||||
net::SocketStream* socket, const char* data, int len) {
|
||||
++num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
||||
message_loop_->PostTask(
|
||||
FROM_HERE,
|
||||
NewRunnableMethod(this,
|
||||
@ -146,7 +147,7 @@ void WebSocketStreamHandleBridgeImpl::OnReceivedData(
|
||||
}
|
||||
|
||||
void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) {
|
||||
++num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
||||
// Release socket_ on IO thread.
|
||||
socket_ = NULL;
|
||||
socket_id_ = kNoSocketId;
|
||||
@ -183,14 +184,14 @@ void WebSocketStreamHandleBridgeImpl::DoClose() {
|
||||
void WebSocketStreamHandleBridgeImpl::DoOnConnected(
|
||||
int max_pending_send_allowed) {
|
||||
DCHECK(MessageLoop::current() == message_loop_);
|
||||
--num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
||||
if (delegate_)
|
||||
delegate_->DidOpenStream(handle_, max_pending_send_allowed);
|
||||
}
|
||||
|
||||
void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) {
|
||||
DCHECK(MessageLoop::current() == message_loop_);
|
||||
--num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
||||
if (delegate_)
|
||||
delegate_->DidSendData(handle_, amount_sent);
|
||||
}
|
||||
@ -198,7 +199,7 @@ void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) {
|
||||
void WebSocketStreamHandleBridgeImpl::DoOnReceivedData(
|
||||
std::vector<char>* data) {
|
||||
DCHECK(MessageLoop::current() == message_loop_);
|
||||
--num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
||||
scoped_ptr<std::vector<char> > scoped_data(data);
|
||||
if (delegate_)
|
||||
delegate_->DidReceiveData(handle_, &(data->at(0)), data->size());
|
||||
@ -206,7 +207,7 @@ void WebSocketStreamHandleBridgeImpl::DoOnReceivedData(
|
||||
|
||||
void WebSocketStreamHandleBridgeImpl::DoOnClose() {
|
||||
DCHECK(MessageLoop::current() == message_loop_);
|
||||
--num_pending_tasks_;
|
||||
base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
||||
// Don't handle OnClose if there are pending tasks.
|
||||
DCHECK_EQ(num_pending_tasks_, 0);
|
||||
DCHECK(!socket_);
|
||||
|
@ -28,7 +28,7 @@ webkit_blob::BlobStorageController* g_blob_storage_controller;
|
||||
// "Normal" copying of WebURL results in a copy that is not thread-safe.
|
||||
// This method creates a deep copy of WebURL.
|
||||
WebURL GetWebURLThreadsafeCopy(const WebURL& source) {
|
||||
const WebKit::WebCString spec(source.spec());
|
||||
const WebKit::WebCString spec(source.spec().data(), source.spec().length());
|
||||
const url_parse::Parsed& parsed(source.parsed());
|
||||
const bool is_valid = source.isValid();
|
||||
return WebURL(spec, parsed, is_valid);
|
||||
|
@ -15,25 +15,21 @@ MSVC_PUSH_WARNING_LEVEL(0);
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/src/WebFrameImpl.h"
|
||||
MSVC_POP_WARNING();
|
||||
#undef LOG
|
||||
#include "base/string_util.h"
|
||||
#include "net/base/mime_util.h"
|
||||
#include "webkit/plugins/npapi/plugin_list.h"
|
||||
|
||||
#include "browser_webkit_glue.h"
|
||||
|
||||
#undef LOG
|
||||
#include "cef_context.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "base/path_service.h"
|
||||
#include "base/scoped_ptr.h"
|
||||
#include "base/string_util.h"
|
||||
#include "base/string16.h"
|
||||
#include "net/base/mime_util.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
|
||||
#include "webkit/glue/user_agent.h"
|
||||
#include "webkit/glue/webkit_glue.h"
|
||||
#include "webkit/glue/plugins/plugin_list.h"
|
||||
#include "webkit/plugins/npapi/plugin_list.h"
|
||||
|
||||
// Generated by GRIT
|
||||
#include "grit/webkit_resources.h"
|
||||
@ -47,8 +43,10 @@ bool IsMediaPlayerAvailable() {
|
||||
}
|
||||
|
||||
void GetPlugins(bool refresh,
|
||||
std::vector<webkit::npapi::WebPluginInfo>* plugins) {
|
||||
webkit::npapi::PluginList::Singleton()->GetPlugins(refresh, plugins);
|
||||
std::vector<webkit::WebPluginInfo>* plugins) {
|
||||
if (refresh)
|
||||
webkit::npapi::PluginList::Singleton()->RefreshPlugins();
|
||||
webkit::npapi::PluginList::Singleton()->GetPlugins(plugins);
|
||||
}
|
||||
|
||||
bool IsProtocolSupportedForMedia(const GURL& url) {
|
||||
@ -172,12 +170,22 @@ bool ShouldDownload(const std::string& content_disposition,
|
||||
if (type.empty() || net::IsSupportedMimeType(type))
|
||||
return false;
|
||||
|
||||
//// Finally, check the plugin list.
|
||||
webkit::npapi::WebPluginInfo info;
|
||||
bool allow_wildcard = false;
|
||||
return !webkit::npapi::PluginList::Singleton()->GetPluginInfo(
|
||||
GURL(), type, allow_wildcard, &info, NULL) ||
|
||||
!webkit::npapi::IsPluginEnabled(info);
|
||||
// Finally, check the plugin list.
|
||||
bool allow_wildcard = true;
|
||||
std::vector<webkit::WebPluginInfo> plugins;
|
||||
webkit::npapi::PluginList::Singleton()->GetPluginInfoArray(
|
||||
GURL(), type, allow_wildcard, NULL, &plugins, NULL);
|
||||
|
||||
// If any associated plugins exist and are enabled don't allow the download.
|
||||
if (!plugins.empty()) {
|
||||
std::vector<webkit::WebPluginInfo>::const_iterator it = plugins.begin();
|
||||
for (; it != plugins.end(); ++it) {
|
||||
if (webkit::IsPluginEnabled(*it))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace webkit_glue
|
||||
|
@ -18,7 +18,7 @@ MSVC_POP_WARNING();
|
||||
|
||||
#undef LOG
|
||||
#include "base/logging.h"
|
||||
#include "base/resource_util.h"
|
||||
#include "base/win/resource_util.h"
|
||||
#include "skia/ext/platform_canvas.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h"
|
||||
@ -48,7 +48,7 @@ string16 GetLocalizedString(int message_id) {
|
||||
base::StringPiece GetRawDataResource(HMODULE module, int resource_id) {
|
||||
void* data_ptr;
|
||||
size_t data_size;
|
||||
return base::GetDataResourceFromModule(module, resource_id, &data_ptr,
|
||||
return base::win::GetDataResourceFromModule(module, resource_id, &data_ptr,
|
||||
&data_size)
|
||||
? base::StringPiece(static_cast<char*>(data_ptr), data_size)
|
||||
: base::StringPiece();
|
||||
|
286
libcef/browser_webkit_init.cc
Normal file
286
libcef/browser_webkit_init.cc
Normal file
@ -0,0 +1,286 @@
|
||||
// Copyright (c) 2011 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright (c) 2009 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 "browser_webkit_init.h"
|
||||
#include "browser_webstoragenamespace_impl.h"
|
||||
#include "cef_context.h"
|
||||
|
||||
#include "base/metrics/stats_counters.h"
|
||||
#include "base/path_service.h"
|
||||
#include "base/utf_string_conversions.h"
|
||||
#include "media/base/media.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebRuntimeFeatures.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBFactory.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKey.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKeyPath.h"
|
||||
#include "v8/include/v8.h"
|
||||
#include "webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h"
|
||||
#include "webkit/gpu/webgraphicscontext3d_in_process_impl.h"
|
||||
|
||||
|
||||
BrowserWebKitInit::BrowserWebKitInit() {
|
||||
v8::V8::SetCounterFunction(base::StatsTable::FindLocation);
|
||||
|
||||
WebKit::initialize(this);
|
||||
WebKit::setLayoutTestMode(false);
|
||||
WebKit::WebRuntimeFeatures::enableSockets(true);
|
||||
WebKit::WebRuntimeFeatures::enableApplicationCache(true);
|
||||
WebKit::WebRuntimeFeatures::enableDatabase(true);
|
||||
WebKit::WebRuntimeFeatures::enablePushState(true);
|
||||
WebKit::WebRuntimeFeatures::enableIndexedDatabase(true);
|
||||
WebKit::WebRuntimeFeatures::enableFileSystem(true);
|
||||
|
||||
// TODO: Enable these once the implementation supports it.
|
||||
WebKit::WebRuntimeFeatures::enableNotifications(false);
|
||||
WebKit::WebRuntimeFeatures::enableGeolocation(false);
|
||||
WebKit::WebRuntimeFeatures::enableSpeechInput(false);
|
||||
WebKit::WebRuntimeFeatures::enableTouch(false);
|
||||
WebKit::WebRuntimeFeatures::enableDeviceMotion(false);
|
||||
WebKit::WebRuntimeFeatures::enableDeviceOrientation(false);
|
||||
|
||||
// Load libraries for media and enable the media player.
|
||||
FilePath module_path;
|
||||
WebKit::WebRuntimeFeatures::enableMediaPlayer(
|
||||
PathService::Get(base::DIR_MODULE, &module_path) &&
|
||||
media::InitializeMediaLibrary(module_path));
|
||||
|
||||
// Construct and initialize an appcache system for this scope.
|
||||
// A new empty temp directory is created to house any cached
|
||||
// content during the run. Upon exit that directory is deleted.
|
||||
// If we can't create a tempdir, we'll use in-memory storage.
|
||||
if (!appcache_dir_.CreateUniqueTempDir()) {
|
||||
LOG(WARNING) << "Failed to create a temp dir for the appcache, "
|
||||
"using in-memory storage.";
|
||||
DCHECK(appcache_dir_.path().empty());
|
||||
}
|
||||
BrowserAppCacheSystem::InitializeOnUIThread(appcache_dir_.path());
|
||||
|
||||
WebKit::WebDatabase::setObserver(&database_system_);
|
||||
|
||||
blob_registry_ = new BrowserWebBlobRegistryImpl();
|
||||
|
||||
file_utilities_.set_sandbox_enabled(sandboxEnabled());
|
||||
}
|
||||
|
||||
BrowserWebKitInit::~BrowserWebKitInit() {
|
||||
WebKit::shutdown();
|
||||
}
|
||||
|
||||
WebKit::WebMimeRegistry* BrowserWebKitInit::mimeRegistry() {
|
||||
return &mime_registry_;
|
||||
}
|
||||
|
||||
WebKit::WebClipboard* BrowserWebKitInit::clipboard() {
|
||||
return &clipboard_;
|
||||
}
|
||||
|
||||
WebKit::WebFileUtilities* BrowserWebKitInit::fileUtilities() {
|
||||
return &file_utilities_;
|
||||
}
|
||||
|
||||
WebKit::WebSandboxSupport* BrowserWebKitInit::sandboxSupport() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
WebKit::WebBlobRegistry* BrowserWebKitInit::blobRegistry() {
|
||||
return blob_registry_.get();
|
||||
}
|
||||
|
||||
WebKit::WebCookieJar* BrowserWebKitInit::cookieJar() {
|
||||
return &cookie_jar_;
|
||||
}
|
||||
|
||||
WebKit::WebFileSystem* BrowserWebKitInit::fileSystem() {
|
||||
return &file_system_;
|
||||
}
|
||||
|
||||
bool BrowserWebKitInit::sandboxEnabled() {
|
||||
return false;
|
||||
}
|
||||
|
||||
WebKit::WebKitPlatformSupport::FileHandle
|
||||
BrowserWebKitInit::databaseOpenFile(
|
||||
const WebKit::WebString& vfs_file_name, int desired_flags) {
|
||||
return BrowserDatabaseSystem::GetInstance()->OpenFile(
|
||||
vfs_file_name, desired_flags);
|
||||
}
|
||||
|
||||
int BrowserWebKitInit::databaseDeleteFile(
|
||||
const WebKit::WebString& vfs_file_name, bool sync_dir) {
|
||||
return BrowserDatabaseSystem::GetInstance()->DeleteFile(
|
||||
vfs_file_name, sync_dir);
|
||||
}
|
||||
|
||||
long BrowserWebKitInit::databaseGetFileAttributes(
|
||||
const WebKit::WebString& vfs_file_name) {
|
||||
return BrowserDatabaseSystem::GetInstance()->GetFileAttributes(
|
||||
vfs_file_name);
|
||||
}
|
||||
|
||||
long long BrowserWebKitInit::databaseGetFileSize(
|
||||
const WebKit::WebString& vfs_file_name) {
|
||||
return BrowserDatabaseSystem::GetInstance()->GetFileSize(vfs_file_name);
|
||||
}
|
||||
|
||||
long long BrowserWebKitInit::databaseGetSpaceAvailableForOrigin(
|
||||
const WebKit::WebString& origin_identifier) {
|
||||
return BrowserDatabaseSystem::GetInstance()->GetSpaceAvailable(
|
||||
origin_identifier);
|
||||
}
|
||||
|
||||
unsigned long long BrowserWebKitInit::visitedLinkHash(
|
||||
const char* canonicalURL, size_t length) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool BrowserWebKitInit::isLinkVisited(unsigned long long linkHash) {
|
||||
return false;
|
||||
}
|
||||
|
||||
WebKit::WebMessagePortChannel*
|
||||
BrowserWebKitInit::createMessagePortChannel() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void BrowserWebKitInit::prefetchHostName(const WebKit::WebString&) {
|
||||
}
|
||||
|
||||
WebKit::WebData BrowserWebKitInit::loadResource(const char* name) {
|
||||
if (!strcmp(name, "deleteButton")) {
|
||||
// Create a red 30x30 square.
|
||||
const char red_square[] =
|
||||
"\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52"
|
||||
"\x00\x00\x00\x1e\x00\x00\x00\x1e\x04\x03\x00\x00\x00\xc9\x1e\xb3"
|
||||
"\x91\x00\x00\x00\x30\x50\x4c\x54\x45\x00\x00\x00\x80\x00\x00\x00"
|
||||
"\x80\x00\x80\x80\x00\x00\x00\x80\x80\x00\x80\x00\x80\x80\x80\x80"
|
||||
"\x80\xc0\xc0\xc0\xff\x00\x00\x00\xff\x00\xff\xff\x00\x00\x00\xff"
|
||||
"\xff\x00\xff\x00\xff\xff\xff\xff\xff\x7b\x1f\xb1\xc4\x00\x00\x00"
|
||||
"\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a"
|
||||
"\x9c\x18\x00\x00\x00\x17\x49\x44\x41\x54\x78\x01\x63\x98\x89\x0a"
|
||||
"\x18\x50\xb9\x33\x47\xf9\xa8\x01\x32\xd4\xc2\x03\x00\x33\x84\x0d"
|
||||
"\x02\x3a\x91\xeb\xa5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60"
|
||||
"\x82";
|
||||
return WebKit::WebData(red_square, arraysize(red_square));
|
||||
}
|
||||
return webkit_glue::WebKitPlatformSupportImpl::loadResource(name);
|
||||
}
|
||||
|
||||
WebKit::WebString BrowserWebKitInit::defaultLocale() {
|
||||
return ASCIIToUTF16("en-US");
|
||||
}
|
||||
|
||||
WebKit::WebStorageNamespace* BrowserWebKitInit::createLocalStorageNamespace(
|
||||
const WebKit::WebString& path, unsigned quota) {
|
||||
if (BrowserWebStorageNamespaceImpl::IsStorageActive()) {
|
||||
// Use the localStorage implementation that writes data to disk.
|
||||
return new BrowserWebStorageNamespaceImpl(DOM_STORAGE_LOCAL);
|
||||
}
|
||||
|
||||
// Use the default localStorage implementation.
|
||||
return WebKit::WebStorageNamespace::createLocalStorageNamespace(path,
|
||||
WebKit::WebStorageNamespace::m_localStorageQuota);
|
||||
}
|
||||
|
||||
void BrowserWebKitInit::dispatchStorageEvent(const WebKit::WebString& key,
|
||||
const WebKit::WebString& old_value, const WebKit::WebString& new_value,
|
||||
const WebKit::WebString& origin, const WebKit::WebURL& url,
|
||||
bool is_local_storage) {
|
||||
// The event is dispatched by the proxy.
|
||||
}
|
||||
|
||||
WebKit::WebIDBFactory* BrowserWebKitInit::idbFactory() {
|
||||
return WebKit::WebIDBFactory::create();
|
||||
}
|
||||
|
||||
void BrowserWebKitInit::createIDBKeysFromSerializedValuesAndKeyPath(
|
||||
const WebKit::WebVector<WebKit::WebSerializedScriptValue>& values,
|
||||
const WebKit::WebString& keyPath,
|
||||
WebKit::WebVector<WebKit::WebIDBKey>& keys_out) {
|
||||
WebKit::WebVector<WebKit::WebIDBKey> keys(values.size());
|
||||
for (size_t i = 0; i < values.size(); ++i) {
|
||||
keys[i] = WebKit::WebIDBKey::createFromValueAndKeyPath(
|
||||
values[i], WebKit::WebIDBKeyPath::create(keyPath));
|
||||
}
|
||||
keys_out.swap(keys);
|
||||
}
|
||||
|
||||
WebKit::WebSerializedScriptValue
|
||||
BrowserWebKitInit::injectIDBKeyIntoSerializedValue(
|
||||
const WebKit::WebIDBKey& key,
|
||||
const WebKit::WebSerializedScriptValue& value,
|
||||
const WebKit::WebString& keyPath) {
|
||||
return WebKit::WebIDBKey::injectIDBKeyIntoSerializedValue(
|
||||
key, value, WebKit::WebIDBKeyPath::create(keyPath));
|
||||
}
|
||||
|
||||
WebKit::WebGraphicsContext3D* BrowserWebKitInit::createGraphicsContext3D() {
|
||||
const CefSettings& settings = _Context->settings();
|
||||
#if defined(OS_WIN)
|
||||
bool use_command_buffer =
|
||||
(settings.graphics_implementation == ANGLE_IN_PROCESS_COMMAND_BUFFER ||
|
||||
settings.graphics_implementation == DESKTOP_IN_PROCESS_COMMAND_BUFFER);
|
||||
#else
|
||||
bool use_command_buffer =
|
||||
(settings.graphics_implementation == DESKTOP_IN_PROCESS_COMMAND_BUFFER);
|
||||
#endif
|
||||
|
||||
if (use_command_buffer)
|
||||
return new webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl();
|
||||
else
|
||||
return new webkit::gpu::WebGraphicsContext3DInProcessImpl();
|
||||
}
|
||||
|
||||
WebKit::WebString BrowserWebKitInit::queryLocalizedString(
|
||||
WebKit::WebLocalizedString::Name name) {
|
||||
switch (name) {
|
||||
case WebKit::WebLocalizedString::ValidationValueMissing:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForCheckbox:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForFile:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForMultipleFile:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForRadio:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForSelect:
|
||||
return ASCIIToUTF16("value missing");
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatch:
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatchForEmail:
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatchForMultipleEmail:
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatchForURL:
|
||||
return ASCIIToUTF16("type mismatch");
|
||||
case WebKit::WebLocalizedString::ValidationPatternMismatch:
|
||||
return ASCIIToUTF16("pattern mismatch");
|
||||
case WebKit::WebLocalizedString::ValidationTooLong:
|
||||
return ASCIIToUTF16("too long");
|
||||
case WebKit::WebLocalizedString::ValidationRangeUnderflow:
|
||||
return ASCIIToUTF16("range underflow");
|
||||
case WebKit::WebLocalizedString::ValidationRangeOverflow:
|
||||
return ASCIIToUTF16("range overflow");
|
||||
case WebKit::WebLocalizedString::ValidationStepMismatch:
|
||||
return ASCIIToUTF16("step mismatch");
|
||||
default:
|
||||
return WebKitPlatformSupportImpl::queryLocalizedString(name);
|
||||
}
|
||||
}
|
||||
|
||||
WebKit::WebString BrowserWebKitInit::queryLocalizedString(
|
||||
WebKit::WebLocalizedString::Name name, const WebKit::WebString& value) {
|
||||
if (name == WebKit::WebLocalizedString::ValidationRangeUnderflow)
|
||||
return ASCIIToUTF16("range underflow");
|
||||
if (name == WebKit::WebLocalizedString::ValidationRangeOverflow)
|
||||
return ASCIIToUTF16("range overflow");
|
||||
return WebKitPlatformSupportImpl::queryLocalizedString(name, value);
|
||||
}
|
||||
|
||||
WebKit::WebString BrowserWebKitInit::queryLocalizedString(
|
||||
WebKit::WebLocalizedString::Name name,
|
||||
const WebKit::WebString& value1,
|
||||
const WebKit::WebString& value2) {
|
||||
if (name == WebKit::WebLocalizedString::ValidationTooLong)
|
||||
return ASCIIToUTF16("too long");
|
||||
if (name == WebKit::WebLocalizedString::ValidationStepMismatch)
|
||||
return ASCIIToUTF16("step mismatch");
|
||||
return WebKitPlatformSupportImpl::queryLocalizedString(
|
||||
name, value1, value2);
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2009 The Chromium Embedded Framework Authors.
|
||||
// Copyright (c) 2011 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright (c) 2009 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.
|
||||
@ -9,291 +9,71 @@
|
||||
#include "browser_appcache_system.h"
|
||||
#include "browser_database_system.h"
|
||||
#include "browser_file_system.h"
|
||||
#include "browser_resource_loader_bridge.h"
|
||||
#include "browser_webblobregistry_impl.h"
|
||||
#include "browser_webcookiejar_impl.h"
|
||||
#include "browser_webstoragenamespace_impl.h"
|
||||
|
||||
#include "base/file_util.h"
|
||||
#include "base/metrics/stats_counters.h"
|
||||
#include "base/path_service.h"
|
||||
#include "base/scoped_temp_dir.h"
|
||||
#include "base/utf_string_conversions.h"
|
||||
#include "media/base/media.h"
|
||||
#include "webkit/appcache/web_application_cache_host_impl.h"
|
||||
#include "webkit/database/vfs_backend.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebData.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebRuntimeFeatures.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptController.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageArea.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageEventDispatcher.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBFactory.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKey.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKeyPath.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
|
||||
#include "ui/gfx/gl/gl_bindings_skia_in_process.h"
|
||||
#include "webkit/glue/simple_webmimeregistry_impl.h"
|
||||
#include "webkit/glue/webclipboard_impl.h"
|
||||
#include "webkit/glue/webfileutilities_impl.h"
|
||||
#include "webkit/glue/webkit_glue.h"
|
||||
#include "webkit/glue/webkitclient_impl.h"
|
||||
#include "webkit/gpu/webgraphicscontext3d_in_process_impl.h"
|
||||
#include "webkit/glue/webkitplatformsupport_impl.h"
|
||||
|
||||
|
||||
class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
|
||||
class BrowserWebKitInit : public webkit_glue::WebKitPlatformSupportImpl {
|
||||
public:
|
||||
explicit BrowserWebKitInit() {
|
||||
v8::V8::SetCounterFunction(base::StatsTable::FindLocation);
|
||||
|
||||
WebKit::initialize(this);
|
||||
WebKit::setLayoutTestMode(false);
|
||||
WebKit::WebRuntimeFeatures::enableSockets(true);
|
||||
WebKit::WebRuntimeFeatures::enableApplicationCache(true);
|
||||
WebKit::WebRuntimeFeatures::enableDatabase(true);
|
||||
WebKit::WebRuntimeFeatures::enablePushState(true);
|
||||
WebKit::WebRuntimeFeatures::enableIndexedDatabase(true);
|
||||
WebKit::WebRuntimeFeatures::enableFileSystem(true);
|
||||
|
||||
// TODO: Enable these once the implementation supports it.
|
||||
WebKit::WebRuntimeFeatures::enableNotifications(false);
|
||||
WebKit::WebRuntimeFeatures::enableGeolocation(false);
|
||||
WebKit::WebRuntimeFeatures::enableSpeechInput(false);
|
||||
WebKit::WebRuntimeFeatures::enableTouch(false);
|
||||
WebKit::WebRuntimeFeatures::enableDeviceMotion(false);
|
||||
WebKit::WebRuntimeFeatures::enableDeviceOrientation(false);
|
||||
|
||||
// Load libraries for media and enable the media player.
|
||||
FilePath module_path;
|
||||
WebKit::WebRuntimeFeatures::enableMediaPlayer(
|
||||
PathService::Get(base::DIR_MODULE, &module_path) &&
|
||||
media::InitializeMediaLibrary(module_path));
|
||||
|
||||
// Construct and initialize an appcache system for this scope.
|
||||
// A new empty temp directory is created to house any cached
|
||||
// content during the run. Upon exit that directory is deleted.
|
||||
// If we can't create a tempdir, we'll use in-memory storage.
|
||||
if (!appcache_dir_.CreateUniqueTempDir()) {
|
||||
LOG(WARNING) << "Failed to create a temp dir for the appcache, "
|
||||
"using in-memory storage.";
|
||||
DCHECK(appcache_dir_.path().empty());
|
||||
}
|
||||
BrowserAppCacheSystem::InitializeOnUIThread(appcache_dir_.path());
|
||||
|
||||
WebKit::WebDatabase::setObserver(&database_system_);
|
||||
|
||||
blob_registry_ = new BrowserWebBlobRegistryImpl();
|
||||
|
||||
file_utilities_.set_sandbox_enabled(false);
|
||||
}
|
||||
|
||||
virtual ~BrowserWebKitInit() {
|
||||
WebKit::shutdown();
|
||||
}
|
||||
|
||||
virtual WebKit::WebMimeRegistry* mimeRegistry() OVERRIDE {
|
||||
return &mime_registry_;
|
||||
}
|
||||
|
||||
virtual WebKit::WebClipboard* clipboard() OVERRIDE {
|
||||
return &clipboard_;
|
||||
}
|
||||
|
||||
virtual WebKit::WebFileUtilities* fileUtilities() OVERRIDE {
|
||||
return &file_utilities_;
|
||||
}
|
||||
|
||||
virtual WebKit::WebSandboxSupport* sandboxSupport() OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual WebKit::WebBlobRegistry* blobRegistry() OVERRIDE {
|
||||
return blob_registry_.get();
|
||||
}
|
||||
|
||||
virtual WebKit::WebCookieJar* cookieJar() OVERRIDE {
|
||||
return &cookie_jar_;
|
||||
}
|
||||
|
||||
virtual WebKit::WebFileSystem* fileSystem() OVERRIDE {
|
||||
return &file_system_;
|
||||
}
|
||||
|
||||
virtual bool sandboxEnabled() OVERRIDE {
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual WebKit::WebKitClient::FileHandle databaseOpenFile(
|
||||
const WebKit::WebString& vfs_file_name, int desired_flags) OVERRIDE {
|
||||
return BrowserDatabaseSystem::GetInstance()->OpenFile(
|
||||
vfs_file_name, desired_flags);
|
||||
}
|
||||
BrowserWebKitInit();
|
||||
virtual ~BrowserWebKitInit();
|
||||
|
||||
virtual WebKit::WebMimeRegistry* mimeRegistry() OVERRIDE;
|
||||
virtual WebKit::WebClipboard* clipboard() OVERRIDE;
|
||||
virtual WebKit::WebFileUtilities* fileUtilities() OVERRIDE;
|
||||
virtual WebKit::WebSandboxSupport* sandboxSupport() OVERRIDE;
|
||||
virtual WebKit::WebBlobRegistry* blobRegistry() OVERRIDE;
|
||||
virtual WebKit::WebCookieJar* cookieJar() OVERRIDE;
|
||||
virtual WebKit::WebFileSystem* fileSystem() OVERRIDE ;
|
||||
virtual bool sandboxEnabled() OVERRIDE;
|
||||
virtual WebKit::WebKitPlatformSupport::FileHandle databaseOpenFile(
|
||||
const WebKit::WebString& vfs_file_name, int desired_flags) OVERRIDE;
|
||||
virtual int databaseDeleteFile(const WebKit::WebString& vfs_file_name,
|
||||
bool sync_dir) OVERRIDE {
|
||||
return BrowserDatabaseSystem::GetInstance()->DeleteFile(
|
||||
vfs_file_name, sync_dir);
|
||||
}
|
||||
|
||||
bool sync_dir) OVERRIDE;
|
||||
virtual long databaseGetFileAttributes(
|
||||
const WebKit::WebString& vfs_file_name) OVERRIDE {
|
||||
return BrowserDatabaseSystem::GetInstance()->GetFileAttributes(
|
||||
vfs_file_name);
|
||||
}
|
||||
|
||||
const WebKit::WebString& vfs_file_name) OVERRIDE;
|
||||
virtual long long databaseGetFileSize(
|
||||
const WebKit::WebString& vfs_file_name) OVERRIDE {
|
||||
return BrowserDatabaseSystem::GetInstance()->GetFileSize(vfs_file_name);
|
||||
}
|
||||
|
||||
const WebKit::WebString& vfs_file_name) OVERRIDE;
|
||||
virtual long long databaseGetSpaceAvailableForOrigin(
|
||||
const WebKit::WebString& origin_identifier) {
|
||||
return BrowserDatabaseSystem::GetInstance()->GetSpaceAvailable(
|
||||
origin_identifier);
|
||||
}
|
||||
|
||||
const WebKit::WebString& origin_identifier) OVERRIDE;
|
||||
virtual unsigned long long visitedLinkHash(const char* canonicalURL,
|
||||
size_t length) OVERRIDE {
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual bool isLinkVisited(unsigned long long linkHash) OVERRIDE {
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual WebKit::WebMessagePortChannel* createMessagePortChannel() OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual void prefetchHostName(const WebKit::WebString&) OVERRIDE {
|
||||
}
|
||||
|
||||
virtual WebKit::WebData loadResource(const char* name) OVERRIDE {
|
||||
if (!strcmp(name, "deleteButton")) {
|
||||
// Create a red 30x30 square.
|
||||
const char red_square[] =
|
||||
"\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52"
|
||||
"\x00\x00\x00\x1e\x00\x00\x00\x1e\x04\x03\x00\x00\x00\xc9\x1e\xb3"
|
||||
"\x91\x00\x00\x00\x30\x50\x4c\x54\x45\x00\x00\x00\x80\x00\x00\x00"
|
||||
"\x80\x00\x80\x80\x00\x00\x00\x80\x80\x00\x80\x00\x80\x80\x80\x80"
|
||||
"\x80\xc0\xc0\xc0\xff\x00\x00\x00\xff\x00\xff\xff\x00\x00\x00\xff"
|
||||
"\xff\x00\xff\x00\xff\xff\xff\xff\xff\x7b\x1f\xb1\xc4\x00\x00\x00"
|
||||
"\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a"
|
||||
"\x9c\x18\x00\x00\x00\x17\x49\x44\x41\x54\x78\x01\x63\x98\x89\x0a"
|
||||
"\x18\x50\xb9\x33\x47\xf9\xa8\x01\x32\xd4\xc2\x03\x00\x33\x84\x0d"
|
||||
"\x02\x3a\x91\xeb\xa5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60"
|
||||
"\x82";
|
||||
return WebKit::WebData(red_square, arraysize(red_square));
|
||||
}
|
||||
return webkit_glue::WebKitClientImpl::loadResource(name);
|
||||
}
|
||||
|
||||
virtual WebKit::WebString defaultLocale() OVERRIDE {
|
||||
return ASCIIToUTF16("en-US");
|
||||
}
|
||||
|
||||
size_t length) OVERRIDE;
|
||||
virtual bool isLinkVisited(unsigned long long linkHash) OVERRIDE;
|
||||
virtual WebKit::WebMessagePortChannel* createMessagePortChannel() OVERRIDE;
|
||||
virtual void prefetchHostName(const WebKit::WebString&) OVERRIDE;
|
||||
virtual WebKit::WebData loadResource(const char* name) OVERRIDE;
|
||||
virtual WebKit::WebString defaultLocale() OVERRIDE;
|
||||
virtual WebKit::WebStorageNamespace* createLocalStorageNamespace(
|
||||
const WebKit::WebString& path, unsigned quota) OVERRIDE {
|
||||
if (BrowserWebStorageNamespaceImpl::IsStorageActive()) {
|
||||
// Use the localStorage implementation that writes data to disk.
|
||||
return new BrowserWebStorageNamespaceImpl(DOM_STORAGE_LOCAL);
|
||||
}
|
||||
|
||||
// Use the default localStorage implementation.
|
||||
return WebKit::WebStorageNamespace::createLocalStorageNamespace(path,
|
||||
WebKit::WebStorageNamespace::m_localStorageQuota);
|
||||
}
|
||||
|
||||
const WebKit::WebString& path, unsigned quota) OVERRIDE;
|
||||
void dispatchStorageEvent(const WebKit::WebString& key,
|
||||
const WebKit::WebString& old_value, const WebKit::WebString& new_value,
|
||||
const WebKit::WebString& origin, const WebKit::WebURL& url,
|
||||
bool is_local_storage) OVERRIDE {
|
||||
// The event is dispatched by the proxy.
|
||||
}
|
||||
|
||||
virtual WebKit::WebIDBFactory* idbFactory() OVERRIDE {
|
||||
return WebKit::WebIDBFactory::create();
|
||||
}
|
||||
|
||||
bool is_local_storage) OVERRIDE;
|
||||
virtual WebKit::WebIDBFactory* idbFactory() OVERRIDE;
|
||||
virtual void createIDBKeysFromSerializedValuesAndKeyPath(
|
||||
const WebKit::WebVector<WebKit::WebSerializedScriptValue>& values,
|
||||
const WebKit::WebString& keyPath,
|
||||
WebKit::WebVector<WebKit::WebIDBKey>& keys_out) OVERRIDE {
|
||||
WebKit::WebVector<WebKit::WebIDBKey> keys(values.size());
|
||||
for (size_t i = 0; i < values.size(); ++i) {
|
||||
keys[i] = WebKit::WebIDBKey::createFromValueAndKeyPath(
|
||||
values[i], WebKit::WebIDBKeyPath::create(keyPath));
|
||||
}
|
||||
keys_out.swap(keys);
|
||||
}
|
||||
|
||||
WebKit::WebVector<WebKit::WebIDBKey>& keys_out) OVERRIDE;
|
||||
virtual WebKit::WebSerializedScriptValue injectIDBKeyIntoSerializedValue(
|
||||
const WebKit::WebIDBKey& key,
|
||||
const WebKit::WebSerializedScriptValue& value,
|
||||
const WebKit::WebString& keyPath) OVERRIDE {
|
||||
return WebKit::WebIDBKey::injectIDBKeyIntoSerializedValue(
|
||||
key, value, WebKit::WebIDBKeyPath::create(keyPath));
|
||||
}
|
||||
|
||||
virtual WebKit::WebGraphicsContext3D* createGraphicsContext3D() OVERRIDE {
|
||||
gfx::BindSkiaToInProcessGL();
|
||||
return new webkit::gpu::WebGraphicsContext3DInProcessImpl();
|
||||
}
|
||||
|
||||
WebKit::WebString queryLocalizedString(
|
||||
WebKit::WebLocalizedString::Name name) OVERRIDE {
|
||||
switch (name) {
|
||||
case WebKit::WebLocalizedString::ValidationValueMissing:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForCheckbox:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForFile:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForMultipleFile:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForRadio:
|
||||
case WebKit::WebLocalizedString::ValidationValueMissingForSelect:
|
||||
return ASCIIToUTF16("value missing");
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatch:
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatchForEmail:
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatchForMultipleEmail:
|
||||
case WebKit::WebLocalizedString::ValidationTypeMismatchForURL:
|
||||
return ASCIIToUTF16("type mismatch");
|
||||
case WebKit::WebLocalizedString::ValidationPatternMismatch:
|
||||
return ASCIIToUTF16("pattern mismatch");
|
||||
case WebKit::WebLocalizedString::ValidationTooLong:
|
||||
return ASCIIToUTF16("too long");
|
||||
case WebKit::WebLocalizedString::ValidationRangeUnderflow:
|
||||
return ASCIIToUTF16("range underflow");
|
||||
case WebKit::WebLocalizedString::ValidationRangeOverflow:
|
||||
return ASCIIToUTF16("range overflow");
|
||||
case WebKit::WebLocalizedString::ValidationStepMismatch:
|
||||
return ASCIIToUTF16("step mismatch");
|
||||
default:
|
||||
return WebKitClientImpl::queryLocalizedString(name);
|
||||
}
|
||||
}
|
||||
|
||||
WebKit::WebString queryLocalizedString(
|
||||
const WebKit::WebString& keyPath) OVERRIDE;
|
||||
virtual WebKit::WebGraphicsContext3D* createGraphicsContext3D() OVERRIDE;
|
||||
virtual WebKit::WebString queryLocalizedString(
|
||||
WebKit::WebLocalizedString::Name name) OVERRIDE;
|
||||
virtual WebKit::WebString queryLocalizedString(
|
||||
WebKit::WebLocalizedString::Name name, const WebKit::WebString& value)
|
||||
OVERRIDE {
|
||||
if (name == WebKit::WebLocalizedString::ValidationRangeUnderflow)
|
||||
return ASCIIToUTF16("range underflow");
|
||||
if (name == WebKit::WebLocalizedString::ValidationRangeOverflow)
|
||||
return ASCIIToUTF16("range overflow");
|
||||
return WebKitClientImpl::queryLocalizedString(name, value);
|
||||
}
|
||||
|
||||
WebKit::WebString queryLocalizedString(
|
||||
OVERRIDE;
|
||||
virtual WebKit::WebString queryLocalizedString(
|
||||
WebKit::WebLocalizedString::Name name,
|
||||
const WebKit::WebString& value1,
|
||||
const WebKit::WebString& value2) OVERRIDE {
|
||||
if (name == WebKit::WebLocalizedString::ValidationTooLong)
|
||||
return ASCIIToUTF16("too long");
|
||||
if (name == WebKit::WebLocalizedString::ValidationStepMismatch)
|
||||
return ASCIIToUTF16("step mismatch");
|
||||
return WebKitClientImpl::queryLocalizedString(name, value1, value2);
|
||||
}
|
||||
const WebKit::WebString& value2) OVERRIDE;
|
||||
|
||||
private:
|
||||
webkit_glue::SimpleWebMimeRegistryImpl mime_registry_;
|
||||
|
@ -24,7 +24,9 @@
|
||||
#include "base/message_loop.h"
|
||||
#include "base/process_util.h"
|
||||
#include "base/string_util.h"
|
||||
#include "base/stringprintf.h"
|
||||
#include "media/base/filter_collection.h"
|
||||
#include "media/base/media_log.h"
|
||||
#include "media/base/message_loop_factory_impl.h"
|
||||
#include "media/filters/audio_renderer_impl.h"
|
||||
#include "net/base/net_errors.h"
|
||||
@ -39,7 +41,7 @@
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKitClient.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKitPlatformSupport.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebNode.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPoint.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h"
|
||||
@ -481,7 +483,7 @@ int BrowserWebViewDelegate::historyForwardListCount() {
|
||||
// WebPluginPageDelegate -----------------------------------------------------
|
||||
|
||||
WebCookieJar* BrowserWebViewDelegate::GetCookieJar() {
|
||||
return WebKit::webKitClient()->cookieJar();
|
||||
return WebKit::webKitPlatformSupport()->cookieJar();
|
||||
}
|
||||
|
||||
// WebWidgetClient -----------------------------------------------------------
|
||||
@ -574,15 +576,22 @@ WebScreenInfo BrowserWebViewDelegate::screenInfo() {
|
||||
WebPlugin* BrowserWebViewDelegate::createPlugin(
|
||||
WebFrame* frame, const WebPluginParams& params) {
|
||||
bool allow_wildcard = true;
|
||||
webkit::npapi::WebPluginInfo info;
|
||||
std::string actual_mime_type;
|
||||
if (!webkit::npapi::PluginList::Singleton()->GetPluginInfo(
|
||||
params.url, params.mimeType.utf8(), allow_wildcard, &info,
|
||||
&actual_mime_type) || !webkit::npapi::IsPluginEnabled(info)) {
|
||||
std::vector<webkit::WebPluginInfo> plugins;
|
||||
std::vector<std::string> mime_types;
|
||||
webkit::npapi::PluginList::Singleton()->GetPluginInfoArray(
|
||||
params.url, params.mimeType.utf8(), allow_wildcard,
|
||||
NULL, &plugins, &mime_types);
|
||||
if (plugins.empty())
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (browser_->IsWindowRenderingDisabled()) {
|
||||
#if defined(OS_MACOSX)
|
||||
// Mac does not supported windowed plugins.
|
||||
bool force_windowless = true;
|
||||
#else
|
||||
bool force_windowless = browser_->IsWindowRenderingDisabled();
|
||||
#endif
|
||||
|
||||
if (force_windowless) {
|
||||
bool flash = LowerCaseEqualsASCII(params.mimeType.utf8(),
|
||||
"application/x-shockwave-flash");
|
||||
bool silverlight = StartsWithASCII(params.mimeType.utf8(),
|
||||
@ -613,12 +622,13 @@ WebPlugin* BrowserWebViewDelegate::createPlugin(
|
||||
new_params.attributeValues.swap(new_values);
|
||||
|
||||
return new webkit::npapi::WebPluginImpl(
|
||||
frame, new_params, info.path, actual_mime_type, AsWeakPtr());
|
||||
frame, new_params, plugins.front().path, mime_types.front(),
|
||||
AsWeakPtr());
|
||||
}
|
||||
}
|
||||
|
||||
return new webkit::npapi::WebPluginImpl(
|
||||
frame, params, info.path, actual_mime_type, AsWeakPtr());
|
||||
frame, params, plugins.front().path, mime_types.front(), AsWeakPtr());
|
||||
}
|
||||
|
||||
WebWorker* BrowserWebViewDelegate::createWorker(
|
||||
@ -644,7 +654,9 @@ WebMediaPlayer* BrowserWebViewDelegate::createMediaPlayer(
|
||||
scoped_ptr<webkit_glue::WebMediaPlayerImpl> result(
|
||||
new webkit_glue::WebMediaPlayerImpl(client,
|
||||
collection.release(),
|
||||
message_loop_factory.release()));
|
||||
message_loop_factory.release(),
|
||||
NULL,
|
||||
new media::MediaLog()));
|
||||
if (!result->Initialize(frame, false, video_renderer))
|
||||
return NULL;
|
||||
return result.release();
|
||||
@ -793,7 +805,7 @@ void BrowserWebViewDelegate::didFailProvisionalLoad(
|
||||
if(handled && !errorStr.empty()) {
|
||||
error_text = errorStr;
|
||||
} else {
|
||||
error_text = StringPrintf("Error %d when loading url %s",
|
||||
error_text = base::StringPrintf("Error %d when loading url %s",
|
||||
error.reason, failed_ds->request().url().spec().data());
|
||||
}
|
||||
|
||||
@ -920,7 +932,7 @@ void BrowserWebViewDelegate::openFileSystem(
|
||||
WebFrame* frame, WebFileSystem::Type type, long long size, bool create,
|
||||
WebFileSystemCallbacks* callbacks) {
|
||||
BrowserFileSystem* fileSystem = static_cast<BrowserFileSystem*>(
|
||||
WebKit::webKitClient()->fileSystem());
|
||||
WebKit::webKitPlatformSupport()->fileSystem());
|
||||
fileSystem->OpenFileSystem(frame, type, size, create, callbacks);
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "webkit/plugins/npapi/webplugin_delegate_impl.h"
|
||||
#include "webkit/glue/webmenurunner_mac.h"
|
||||
|
||||
using webkit::npapi::WebPluginDelegateImpl;
|
||||
using WebKit::WebCursorInfo;
|
||||
using WebKit::WebDragData;
|
||||
using WebKit::WebDragOperationsMask;
|
||||
@ -192,8 +193,11 @@ webkit::npapi::WebPluginDelegate* BrowserWebViewDelegate::CreatePluginDelegate(
|
||||
return NULL;
|
||||
|
||||
gfx::PluginWindowHandle containing_view = NULL;
|
||||
return webkit::npapi::WebPluginDelegateImpl::Create(
|
||||
WebPluginDelegateImpl* delegate = WebPluginDelegateImpl::Create(
|
||||
path, mime_type, containing_view);
|
||||
if (delegate)
|
||||
delegate->SetNoBufferContext();
|
||||
return delegate;
|
||||
}
|
||||
|
||||
void BrowserWebViewDelegate::CreatedPluginWindow(
|
||||
|
@ -33,7 +33,7 @@ void UIT_RegisterPlugin(CefPluginInfo* plugin_info)
|
||||
{
|
||||
REQUIRE_UIT();
|
||||
|
||||
webkit::npapi::WebPluginInfo info;
|
||||
webkit::WebPluginInfo info;
|
||||
|
||||
FilePath filename = FilePath(CefString(&plugin_info->unique_name));
|
||||
std::string name = CefString(&plugin_info->display_name);
|
||||
|
@ -16,8 +16,10 @@
|
||||
#include "build/build_config.h"
|
||||
#include "net/base/net_module.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebNetworkStateNotifier.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptController.h"
|
||||
#include "ui/gfx/gl/gl_implementation.h"
|
||||
#include "webkit/extensions/v8/gc_extension.h"
|
||||
#include "webkit/glue/webkit_glue.h"
|
||||
#include "webkit/plugins/npapi/plugin_list.h"
|
||||
|
||||
#if defined(OS_WIN)
|
||||
@ -102,7 +104,12 @@ void CefProcessUIThread::Init() {
|
||||
extensions_v8::GCExtension::Get());
|
||||
|
||||
#if defined(OS_WIN)
|
||||
if (settings.graphics_implementation == ANGLE_IN_PROCESS ||
|
||||
settings.graphics_implementation == ANGLE_IN_PROCESS_COMMAND_BUFFER) {
|
||||
gfx::InitializeGLBindings(gfx::kGLImplementationEGLGLES2);
|
||||
} else {
|
||||
gfx::InitializeGLBindings(gfx::kGLImplementationDesktopGL);
|
||||
}
|
||||
#else
|
||||
gfx::InitializeGLBindings(gfx::kGLImplementationDesktopGL);
|
||||
#endif
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
#include "cef_thread.h"
|
||||
|
||||
#include "base/compiler_specific.h"
|
||||
#include "base/message_loop.h"
|
||||
#include "base/message_loop_proxy.h"
|
||||
|
||||
@ -27,28 +28,53 @@ class CefThreadMessageLoopProxy : public MessageLoopProxy {
|
||||
|
||||
// MessageLoopProxy implementation.
|
||||
virtual bool PostTask(const tracked_objects::Location& from_here,
|
||||
Task* task) {
|
||||
Task* task) OVERRIDE {
|
||||
return CefThread::PostTask(id_, from_here, task);
|
||||
}
|
||||
|
||||
virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
|
||||
Task* task, int64 delay_ms) {
|
||||
Task* task, int64 delay_ms) OVERRIDE {
|
||||
return CefThread::PostDelayedTask(id_, from_here, task, delay_ms);
|
||||
}
|
||||
|
||||
virtual bool PostNonNestableTask(const tracked_objects::Location& from_here,
|
||||
Task* task) {
|
||||
Task* task) OVERRIDE {
|
||||
return CefThread::PostNonNestableTask(id_, from_here, task);
|
||||
}
|
||||
|
||||
virtual bool PostNonNestableDelayedTask(
|
||||
const tracked_objects::Location& from_here,
|
||||
Task* task,
|
||||
int64 delay_ms) {
|
||||
int64 delay_ms) OVERRIDE {
|
||||
return CefThread::PostNonNestableDelayedTask(id_, from_here, task,
|
||||
delay_ms);
|
||||
}
|
||||
virtual bool BelongsToCurrentThread() {
|
||||
|
||||
virtual bool PostTask(const tracked_objects::Location& from_here,
|
||||
const base::Closure& task) OVERRIDE {
|
||||
return CefThread::PostTask(id_, from_here, task);
|
||||
}
|
||||
|
||||
virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms) OVERRIDE {
|
||||
return CefThread::PostDelayedTask(id_, from_here, task, delay_ms);
|
||||
}
|
||||
|
||||
virtual bool PostNonNestableTask(const tracked_objects::Location& from_here,
|
||||
const base::Closure& task) OVERRIDE {
|
||||
return CefThread::PostNonNestableTask(id_, from_here, task);
|
||||
}
|
||||
|
||||
virtual bool PostNonNestableDelayedTask(
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms) OVERRIDE {
|
||||
return CefThread::PostNonNestableDelayedTask(id_, from_here, task,
|
||||
delay_ms);
|
||||
}
|
||||
|
||||
virtual bool BelongsToCurrentThread() OVERRIDE {
|
||||
return CefThread::CurrentlyOn(id_);
|
||||
}
|
||||
|
||||
@ -147,6 +173,38 @@ bool CefThread::PostNonNestableDelayedTask(
|
||||
return PostTaskHelper(identifier, from_here, task, delay_ms, false);
|
||||
}
|
||||
|
||||
// static
|
||||
bool CefThread::PostTask(ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task) {
|
||||
return PostTaskHelper(identifier, from_here, task, 0, true);
|
||||
}
|
||||
|
||||
// static
|
||||
bool CefThread::PostDelayedTask(ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms) {
|
||||
return PostTaskHelper(identifier, from_here, task, delay_ms, true);
|
||||
}
|
||||
|
||||
// static
|
||||
bool CefThread::PostNonNestableTask(
|
||||
ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task) {
|
||||
return PostTaskHelper(identifier, from_here, task, 0, false);
|
||||
}
|
||||
|
||||
// static
|
||||
bool CefThread::PostNonNestableDelayedTask(
|
||||
ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms) {
|
||||
return PostTaskHelper(identifier, from_here, task, delay_ms, false);
|
||||
}
|
||||
|
||||
// static
|
||||
bool CefThread::GetCurrentThreadIdentifier(ID* identifier) {
|
||||
MessageLoop* cur_message_loop = MessageLoop::current();
|
||||
@ -208,3 +266,42 @@ bool CefThread::PostTaskHelper(
|
||||
|
||||
return !!message_loop;
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
bool CefThread::PostTaskHelper(
|
||||
ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms,
|
||||
bool nestable) {
|
||||
DCHECK(identifier >= 0 && identifier < ID_COUNT);
|
||||
// Optimization: to avoid unnecessary locks, we listed the ID enumeration in
|
||||
// order of lifetime. So no need to lock if we know that the other thread
|
||||
// outlives this one.
|
||||
// Note: since the array is so small, ok to loop instead of creating a map,
|
||||
// which would require a lock because std::map isn't thread safe, defeating
|
||||
// the whole purpose of this optimization.
|
||||
ID current_thread;
|
||||
bool guaranteed_to_outlive_target_thread =
|
||||
GetCurrentThreadIdentifier(¤t_thread) &&
|
||||
current_thread >= identifier;
|
||||
|
||||
if (!guaranteed_to_outlive_target_thread)
|
||||
lock_.Acquire();
|
||||
|
||||
MessageLoop* message_loop = cef_threads_[identifier] ?
|
||||
cef_threads_[identifier]->message_loop() : NULL;
|
||||
if (message_loop) {
|
||||
if (nestable) {
|
||||
message_loop->PostDelayedTask(from_here, task, delay_ms);
|
||||
} else {
|
||||
message_loop->PostNonNestableDelayedTask(from_here, task, delay_ms);
|
||||
}
|
||||
}
|
||||
|
||||
if (!guaranteed_to_outlive_target_thread)
|
||||
lock_.Release();
|
||||
|
||||
return !!message_loop;
|
||||
}
|
||||
|
@ -65,11 +65,14 @@ class CefThread : public base::Thread {
|
||||
|
||||
virtual ~CefThread();
|
||||
|
||||
// These are the same methods in message_loop.h, but are guaranteed to either
|
||||
// get posted to the MessageLoop if it's still alive, or be deleted otherwise.
|
||||
// These methods are the same as in message_loop.h, but are guaranteed to
|
||||
// either post the Task to the MessageLoop (if it's still alive), or to
|
||||
// delete the Task otherwise.
|
||||
// They return true if the thread existed and the task was posted. Note that
|
||||
// even if the task is posted, there's no guarantee that it will run, since
|
||||
// the target thread may already have a Quit message in its queue.
|
||||
// even if the task is posted, there's no guarantee that it will run; for
|
||||
// example the target loop may already be quitting, or in the case of a
|
||||
// delayed task a Quit message may preempt it in the message loop queue.
|
||||
// Conversely, a return value of false is a guarantee the task will not run.
|
||||
static bool PostTask(ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
Task* task);
|
||||
@ -86,6 +89,29 @@ class CefThread : public base::Thread {
|
||||
Task* task,
|
||||
int64 delay_ms);
|
||||
|
||||
// TODO(ajwong): Remove the functions above once the Task -> Closure migration
|
||||
// is complete.
|
||||
//
|
||||
// There are 2 sets of Post*Task functions, one which takes the older Task*
|
||||
// function object representation, and one that takes the newer base::Closure.
|
||||
// We have this overload to allow a staged transition between the two systems.
|
||||
// Once the transition is done, the functions above should be deleted.
|
||||
static bool PostTask(ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task);
|
||||
static bool PostDelayedTask(ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms);
|
||||
static bool PostNonNestableTask(ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task);
|
||||
static bool PostNonNestableDelayedTask(
|
||||
ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms);
|
||||
|
||||
template <class T>
|
||||
static bool DeleteSoon(ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
@ -164,6 +190,13 @@ class CefThread : public base::Thread {
|
||||
int64 delay_ms,
|
||||
bool nestable);
|
||||
|
||||
static bool PostTaskHelper(
|
||||
ID identifier,
|
||||
const tracked_objects::Location& from_here,
|
||||
const base::Closure& task,
|
||||
int64 delay_ms,
|
||||
bool nestable);
|
||||
|
||||
// The identifier of this thread. Only one thread can exist with a given
|
||||
// identifier at a given time.
|
||||
ID identifier_;
|
||||
|
@ -10,6 +10,8 @@
|
||||
#include "tracker.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "base/string_util.h"
|
||||
#include "base/utf_string_conversions.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebAttribute.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMEvent.h"
|
||||
@ -17,10 +19,11 @@
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFormControlElement.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebNamedNodeMap.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebNode.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSelectElement.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
|
||||
#include "webkit/glue/form_field.h"
|
||||
|
||||
using WebKit::WebAttribute;
|
||||
using WebKit::WebDocument;
|
||||
@ -29,8 +32,10 @@ using WebKit::WebDOMEventListener;
|
||||
using WebKit::WebElement;
|
||||
using WebKit::WebFrame;
|
||||
using WebKit::WebFormControlElement;
|
||||
using WebKit::WebInputElement;
|
||||
using WebKit::WebNamedNodeMap;
|
||||
using WebKit::WebNode;
|
||||
using WebKit::WebSelectElement;
|
||||
using WebKit::WebString;
|
||||
|
||||
|
||||
@ -186,14 +191,26 @@ CefString CefDOMNodeImpl::GetValue()
|
||||
return str;
|
||||
|
||||
if (node_.isElementNode()) {
|
||||
const WebElement& element = node_.to<WebKit::WebElement>();
|
||||
const WebElement& element = node_.toConst<WebElement>();
|
||||
if (element.isFormControlElement()) {
|
||||
// Retrieve the value from the form control element.
|
||||
const WebFormControlElement& formElement =
|
||||
node_.to<WebKit::WebFormControlElement>();
|
||||
node_.toConst<WebFormControlElement>();
|
||||
|
||||
webkit_glue::FormField formField(formElement);
|
||||
str = formField.value;
|
||||
string16 value;
|
||||
const string16& form_control_type = formElement.formControlType();
|
||||
if (form_control_type == ASCIIToUTF16("text")) {
|
||||
const WebInputElement& input_element =
|
||||
formElement.toConst<WebInputElement>();
|
||||
value = input_element.value();
|
||||
} else if (form_control_type == ASCIIToUTF16("select-one")) {
|
||||
const WebSelectElement& select_element =
|
||||
formElement.toConst<WebSelectElement>();
|
||||
value = select_element.value();
|
||||
}
|
||||
|
||||
TrimWhitespace(value, TRIM_LEADING, &value);
|
||||
str = value;
|
||||
}
|
||||
}
|
||||
|
||||
@ -310,7 +327,7 @@ CefString CefDOMNodeImpl::GetElementTagName()
|
||||
return str;
|
||||
}
|
||||
|
||||
const WebElement& element = node_.to<WebKit::WebElement>();
|
||||
const WebElement& element = node_.toConst<WebKit::WebElement>();
|
||||
const WebString& tagname = element.tagName();
|
||||
if (!tagname.isNull())
|
||||
str = tagname;
|
||||
@ -328,7 +345,7 @@ bool CefDOMNodeImpl::HasElementAttributes()
|
||||
return false;
|
||||
}
|
||||
|
||||
const WebElement& element = node_.to<WebKit::WebElement>();
|
||||
const WebElement& element = node_.toConst<WebKit::WebElement>();
|
||||
return (element.attributes().length() > 0);
|
||||
}
|
||||
|
||||
@ -342,7 +359,7 @@ bool CefDOMNodeImpl::HasElementAttribute(const CefString& attrName)
|
||||
return false;
|
||||
}
|
||||
|
||||
const WebElement& element = node_.to<WebKit::WebElement>();
|
||||
const WebElement& element = node_.toConst<WebKit::WebElement>();
|
||||
return element.hasAttribute(string16(attrName));
|
||||
}
|
||||
|
||||
@ -357,7 +374,7 @@ CefString CefDOMNodeImpl::GetElementAttribute(const CefString& attrName)
|
||||
return str;
|
||||
}
|
||||
|
||||
const WebElement& element = node_.to<WebKit::WebElement>();
|
||||
const WebElement& element = node_.toConst<WebKit::WebElement>();
|
||||
const WebString& attr = element.getAttribute(string16(attrName));
|
||||
if (!attr.isNull())
|
||||
str = attr;
|
||||
@ -375,7 +392,7 @@ void CefDOMNodeImpl::GetElementAttributes(AttributeMap& attrMap)
|
||||
return;
|
||||
}
|
||||
|
||||
const WebElement& element = node_.to<WebKit::WebElement>();
|
||||
const WebElement& element = node_.toConst<WebKit::WebElement>();
|
||||
const WebNamedNodeMap& map = element.attributes();
|
||||
unsigned int len = map.length();
|
||||
if (len == 0)
|
||||
@ -423,7 +440,7 @@ CefString CefDOMNodeImpl::GetElementInnerText()
|
||||
return str;
|
||||
}
|
||||
|
||||
const WebElement& element = node_.to<WebKit::WebElement>();
|
||||
WebElement element = node_.to<WebKit::WebElement>();
|
||||
const WebString& text = element.innerText();
|
||||
if (!text.isNull())
|
||||
str = text;
|
||||
|
@ -168,6 +168,7 @@ void GenerateFileName(const GURL& url,
|
||||
content_disposition,
|
||||
referrer_charset,
|
||||
suggested_name,
|
||||
mime_type,
|
||||
ASCIIToUTF16("download"));
|
||||
|
||||
// TODO(evan): this code is totally wrong -- we should just generate
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include "base/i18n/time_formatting.h"
|
||||
#include "base/message_loop.h"
|
||||
#include "base/time.h"
|
||||
#include "skia/ext/platform_device_win.h"
|
||||
#include "skia/ext/bitmap_platform_device_win.h"
|
||||
|
||||
#include "printing/units.h"
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "net/url_request/url_request_ftp_job.h"
|
||||
#include "net/url_request/url_request_http_job.h"
|
||||
#include "net/url_request/url_request_job.h"
|
||||
#include "net/url_request/url_request_job_factory.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
|
||||
|
||||
@ -360,6 +361,27 @@ private:
|
||||
|
||||
// Class that manages the CefSchemeHandlerFactory instances.
|
||||
class CefUrlRequestManager {
|
||||
protected:
|
||||
// Class used for creating URLRequestJob instances. The lifespan of this
|
||||
// object is managed by URLRequestJobFactory.
|
||||
class ProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler {
|
||||
public:
|
||||
ProtocolHandler(const std::string& scheme)
|
||||
: scheme_(scheme) {}
|
||||
|
||||
// From net::URLRequestJobFactory::ProtocolHandler
|
||||
virtual net::URLRequestJob* MaybeCreateJob(
|
||||
net::URLRequest* request) const OVERRIDE
|
||||
{
|
||||
REQUIRE_IOT();
|
||||
return CefUrlRequestManager::GetInstance()->GetRequestJob(request,
|
||||
scheme_);
|
||||
}
|
||||
|
||||
private:
|
||||
std::string scheme_;
|
||||
};
|
||||
|
||||
public:
|
||||
CefUrlRequestManager() {}
|
||||
|
||||
@ -386,9 +408,12 @@ public:
|
||||
|
||||
handler_map_[make_pair(scheme_lower, domain_lower)] = factory;
|
||||
|
||||
// Register with the ProtocolFactory.
|
||||
net::URLRequest::RegisterProtocolFactory(scheme_lower,
|
||||
&CefUrlRequestManager::Factory);
|
||||
net::URLRequestJobFactory* job_factory =
|
||||
const_cast<net::URLRequestJobFactory*>(
|
||||
_Context->request_context()->job_factory());
|
||||
|
||||
job_factory->SetProtocolHandler(scheme_lower,
|
||||
new ProtocolHandler(scheme_lower));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -416,6 +441,10 @@ public:
|
||||
{
|
||||
REQUIRE_IOT();
|
||||
|
||||
net::URLRequestJobFactory* job_factory =
|
||||
const_cast<net::URLRequestJobFactory*>(
|
||||
_Context->request_context()->job_factory());
|
||||
|
||||
// Unregister with the ProtocolFactory.
|
||||
std::set<std::string> schemes;
|
||||
for (HandlerMap::const_iterator i = handler_map_.begin();
|
||||
@ -424,7 +453,7 @@ public:
|
||||
}
|
||||
for (std::set<std::string>::const_iterator scheme = schemes.begin();
|
||||
scheme != schemes.end(); ++scheme) {
|
||||
net::URLRequest::RegisterProtocolFactory(*scheme, NULL);
|
||||
job_factory->SetProtocolHandler(*scheme, NULL);
|
||||
}
|
||||
|
||||
handler_map_.clear();
|
||||
@ -532,15 +561,6 @@ private:
|
||||
return job;
|
||||
}
|
||||
|
||||
// Factory method called by the ProtocolFactory. |scheme| will already be in
|
||||
// lower case.
|
||||
static net::URLRequestJob* Factory(net::URLRequest* request,
|
||||
const std::string& scheme)
|
||||
{
|
||||
REQUIRE_IOT();
|
||||
return GetInstance()->GetRequestJob(request, scheme);
|
||||
}
|
||||
|
||||
// Map (scheme, domain) to factories. This map will only be accessed on the IO
|
||||
// thread.
|
||||
typedef std::map<std::pair<std::string, std::string>,
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <string>
|
||||
|
||||
#include "base/lazy_instance.h"
|
||||
#include "base/stl_util-inl.h"
|
||||
#include "base/stl_util.h"
|
||||
#include "base/string16.h"
|
||||
#include "googleurl/src/gurl.h"
|
||||
#include "third_party/skia/include/core/SkBitmap.h"
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include "browser_webview_delegate.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "skia/ext/platform_canvas.h"
|
||||
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
|
||||
#include "ui/gfx/rect.h"
|
||||
#include "ui/gfx/size.h"
|
||||
|
@ -75,7 +75,7 @@ class WebWidgetHostGtkWidget {
|
||||
GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_KEY_PRESS_MASK |
|
||||
GDK_KEY_RELEASE_MASK);
|
||||
GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS);
|
||||
gtk_widget_set_can_focus(widget, TRUE);
|
||||
g_signal_connect(widget, "size-request",
|
||||
G_CALLBACK(&HandleSizeRequest), host);
|
||||
g_signal_connect(widget, "size-allocate",
|
||||
|
@ -1,20 +1,13 @@
|
||||
CEF development has faced delays in the past due to the time lapse between
|
||||
submitting patches to the Chromium and WebKit projects and having those patches
|
||||
accepted. A CEF developer will hopefully earn Chromium commit access at some
|
||||
point which should partly mitigate this problem but will not eliminate it
|
||||
completely. There may still be instances where CEF requires changes to the
|
||||
Chromium/WebKit code base that are not desired by the Chromium/WebKit projects
|
||||
as a whole. To address this situation in the near term and with a minimum of
|
||||
maintenance headaches (i.e. without forking) this project adds a patch
|
||||
capability as part of the CEF build process. The patch capability works as
|
||||
follows:
|
||||
There may be instances where CEF requires changes to the Chromium/WebKit code
|
||||
base that are not desired by the Chromium/WebKit projects as a whole. To address
|
||||
this situation the CEF project adds a patch capability as part of the CEF GYP
|
||||
project generation step. The patch capability works as follows:
|
||||
|
||||
1. The CEF developer creates one or more patch files containing all required
|
||||
changes to the Chromium/WebKit code base and places those patch files in the
|
||||
"patches" subdirectory.
|
||||
2. The CEF developer adds an entry for each patch file in the "patch.cfg" file.
|
||||
3. The CEF "patch" project, which is a build dependency for the "webkit\config"
|
||||
project, applies the patches to the Chromium/WebKit source tree using the
|
||||
3. CEF applies the patches to the Chromium/WebKit source tree using the
|
||||
patcher.py tool in the tools directory. If necessary the patcher.py tool
|
||||
also rewrites the "patch_state.h" file which defines the CEF_PATCHES_APPLIED
|
||||
preprocessor value.
|
||||
|
9
patch/patch.cfg
Normal file
9
patch/patch.cfg
Normal file
@ -0,0 +1,9 @@
|
||||
# An element of this array associates a patch file with a target directory.
|
||||
# All paths in the patch file must be relative to that directory. Each patch
|
||||
# file entry for source code changes should be proceeded by the code review
|
||||
# or bug report link that it relates to.
|
||||
patches = {
|
||||
'build' : '../build/',
|
||||
# http://codereview.chromium.org/6730028/
|
||||
'base' : '../base/',
|
||||
}
|
@ -1,87 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="patch"
|
||||
ProjectGUID="{A6D0953E-899E-4C60-AB6B-CAE75A44B8E6}"
|
||||
RootNamespace="patch"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
ConfigurationType="10"
|
||||
InheritedPropertySheets="$(SolutionDir)..\build\debug.vsprops"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
ConfigurationType="10"
|
||||
InheritedPropertySheets="$(SolutionDir)..\build\release.vsprops"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\tools\patcher.bat"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="patcher"
|
||||
CommandLine="..\tools\patcher.bat
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="$(IntDir)\patcher.out"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="patcher"
|
||||
CommandLine="..\tools\patcher.bat
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="$(IntDir)\patcher.out"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@ -1,5 +0,0 @@
|
||||
# An element of this array associates a patch file with a target directory.
|
||||
# All paths in the patch file must be relative to that directory.
|
||||
patches = {
|
||||
'build' : '../build/'
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
# An element of this array associates a patch file with a target directory.
|
||||
# All paths in the patch file must be relative to that directory. Each patch
|
||||
# file entry should be proceeded by the code review or bug report link that it
|
||||
# relates to.
|
||||
patches = {
|
||||
# http://codereview.chromium.org/6730028/
|
||||
'base' : '../base/',
|
||||
# http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/3d1f12409578cbf4
|
||||
'skia_gpu' : '../third_party/skia/gpu/',
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
Index: message_loop.cc
|
||||
===================================================================
|
||||
--- message_loop.cc (revision 91424)
|
||||
--- message_loop.cc (revision 99561)
|
||||
+++ message_loop.cc (working copy)
|
||||
@@ -401,9 +401,13 @@
|
||||
@@ -393,9 +393,13 @@
|
||||
}
|
||||
|
||||
void MessageLoop::AssertIdle() const {
|
||||
@ -19,9 +19,9 @@ Index: message_loop.cc
|
||||
//------------------------------------------------------------------------------
|
||||
Index: message_loop.h
|
||||
===================================================================
|
||||
--- message_loop.h (revision 91424)
|
||||
--- message_loop.h (revision 99561)
|
||||
+++ message_loop.h (working copy)
|
||||
@@ -349,6 +349,9 @@
|
||||
@@ -363,6 +363,9 @@
|
||||
// Asserts that the MessageLoop is "idle".
|
||||
void AssertIdle() const;
|
||||
|
||||
|
@ -12,21 +12,3 @@ Index: common.gypi
|
||||
# Putting a variables dict inside another variables dict looks kind of
|
||||
# weird. This is done so that 'host_arch', 'chromeos', etc are defined as
|
||||
# variables within the outer variables dict here. This is necessary
|
||||
Index: win/system.gyp
|
||||
===================================================================
|
||||
--- win/system.gyp (revision 85124)
|
||||
+++ win/system.gyp (working copy)
|
||||
@@ -22,6 +22,13 @@
|
||||
'action': ['', '<@(_inputs)'],
|
||||
},
|
||||
],
|
||||
+ 'conditions': [
|
||||
+ ['cef_directory!=""', {
|
||||
+ 'dependencies': [
|
||||
+ '../../<(cef_directory)/cef.gyp:patcher',
|
||||
+ ],
|
||||
+ }],
|
||||
+ ],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
@ -1,12 +0,0 @@
|
||||
Index: src/GrGpuGL.cpp
|
||||
===================================================================
|
||||
--- src/GrGpuGL.cpp (revision 1763)
|
||||
+++ src/GrGpuGL.cpp (working copy)
|
||||
@@ -707,7 +707,6 @@
|
||||
static const StencilFormat esStencilFormats[] = {
|
||||
{GR_GL_STENCIL_INDEX8, 8, false},
|
||||
{GR_GL_DEPTH24_STENCIL8, 8, true },
|
||||
- {GR_GL_STENCIL_INDEX4, 4, false},
|
||||
};
|
||||
|
||||
if (GR_GL_SUPPORT_DESKTOP) {
|
@ -47,9 +47,9 @@ def RunAction(dir, command):
|
||||
print >> sys.stderr, 'Error: %s' % str(e)
|
||||
sys.exit(2)
|
||||
|
||||
print "\nPatching build configuration files for CEF..."
|
||||
print "\nPatching build configuration and source files for CEF..."
|
||||
patcher = [ 'python', 'tools/patcher.py',
|
||||
'--patch-config', 'patch/patch_build.cfg' ];
|
||||
'--patch-config', 'patch/patch.cfg' ];
|
||||
RunAction(cef_dir, patcher);
|
||||
|
||||
print "\nGenerating CEF project files..."
|
||||
|
@ -23,8 +23,9 @@ chrome_src = os.path.abspath(os.path.join(cef_dir, os.pardir))
|
||||
sys.path.insert(0, os.path.join(chrome_src, 'tools', 'gyp', 'pylib'))
|
||||
import gyp
|
||||
|
||||
# Add tools/grit so that pymod_do_main(grit_info ...) can find grit_info.py.
|
||||
# Add paths so that pymod_do_main(grit_info ...) can import files.
|
||||
sys.path.insert(1, os.path.join(chrome_src, 'tools', 'grit'))
|
||||
sys.path.insert(1, os.path.join(chrome_src, 'chrome', 'tools', 'build'))
|
||||
|
||||
|
||||
# On Windows, Psyco shortens warm runs of build/gyp_chromium by about
|
||||
|
@ -1,2 +1,2 @@
|
||||
@echo off
|
||||
..\third_party\python_26\python.exe tools\patcher.py --patch-config patch/patch_build.cfg
|
||||
..\third_party\python_26\python.exe tools\patcher.py --patch-config patch/patch.cfg
|
2
tools/patch.sh
Executable file
2
tools/patch.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
python tools/patcher.py --patch-config patch/patch.cfg
|
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
python tools/patcher.py --patch-config patch/patch_build.cfg
|
@ -1,2 +0,0 @@
|
||||
@echo off
|
||||
..\third_party\python_26\python.exe tools\patcher.py --patch-config patch/patch_source.cfg
|
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
python tools/patcher.py --patch-config patch/patch_source.cfg
|
Reference in New Issue
Block a user