libcef: Update due to underlying chromium changes.

- WebKit API changes.
- Delay OnClose actions in WebSocketStreamHandleBridgeImpl.

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@63 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2009-11-03 01:39:16 +00:00
parent cd500a98a9
commit 7e7592b298
7 changed files with 54 additions and 30 deletions

View File

@ -45,3 +45,4 @@ Date | CEF Revision | Chromium Revision
2009-10-18 | /trunk@58 | /trunk@29378 2009-10-18 | /trunk@58 | /trunk@29378
2009-10-21 | /trunk@60 | /trunk@29687 2009-10-21 | /trunk@60 | /trunk@29687
2009-10-25 | /trunk@61 | /trunk@30028 2009-10-25 | /trunk@61 | /trunk@30028
2009-11-02 | /trunk@63 | /trunk@30778

View File

@ -146,10 +146,10 @@
'../third_party/WebKit/JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf', '../third_party/WebKit/JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf',
'../third_party/WebKit/WebCore/WebCore.gyp/WebCore.gyp:webcore', '../third_party/WebKit/WebCore/WebCore.gyp/WebCore.gyp:webcore',
'../third_party/zlib/zlib.gyp:zlib', '../third_party/zlib/zlib.gyp:zlib',
'../webkit/api/WebKit.gyp:webkit',
'../webkit/webkit.gyp:appcache', '../webkit/webkit.gyp:appcache',
'../webkit/webkit.gyp:database', '../webkit/webkit.gyp:database',
'../webkit/webkit.gyp:glue', '../webkit/webkit.gyp:glue',
'../webkit/webkit.gyp:webkit',
'../webkit/webkit.gyp:webkit_resources', '../webkit/webkit.gyp:webkit_resources',
'../webkit/webkit.gyp:webkit_strings', '../webkit/webkit.gyp:webkit_strings',
'../webkit/default_plugin/default_plugin.gyp:default_plugin', '../webkit/default_plugin/default_plugin.gyp:default_plugin',
@ -308,10 +308,10 @@
'../third_party/WebKit/JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf', '../third_party/WebKit/JavaScriptCore/JavaScriptCore.gyp/JavaScriptCore.gyp:wtf',
'../third_party/WebKit/WebCore/WebCore.gyp/WebCore.gyp:webcore', '../third_party/WebKit/WebCore/WebCore.gyp/WebCore.gyp:webcore',
'../third_party/zlib/zlib.gyp:zlib', '../third_party/zlib/zlib.gyp:zlib',
'../webkit/api/WebKit.gyp:webkit',
'../webkit/webkit.gyp:appcache', '../webkit/webkit.gyp:appcache',
'../webkit/webkit.gyp:database', '../webkit/webkit.gyp:database',
'../webkit/webkit.gyp:glue', '../webkit/webkit.gyp:glue',
'../webkit/webkit.gyp:webkit',
'../webkit/webkit.gyp:webkit_resources', '../webkit/webkit.gyp:webkit_resources',
'../webkit/webkit.gyp:webkit_strings', '../webkit/webkit.gyp:webkit_strings',
'../webkit/default_plugin/default_plugin.gyp:default_plugin', '../webkit/default_plugin/default_plugin.gyp:default_plugin',

View File

@ -59,7 +59,7 @@ class WebSocketStreamHandleBridgeImpl
void DoOnConnected(int max_amount_send_allowed); void DoOnConnected(int max_amount_send_allowed);
void DoOnSentData(int amount_sent); void DoOnSentData(int amount_sent);
void DoOnReceivedData(std::vector<char>* data); void DoOnReceivedData(std::vector<char>* data);
void DoOnClose(webkit_glue::WebSocketStreamHandleDelegate* delegate); void DoOnClose();
int socket_id_; int socket_id_;
MessageLoop* message_loop_; MessageLoop* message_loop_;
@ -67,6 +67,8 @@ class WebSocketStreamHandleBridgeImpl
webkit_glue::WebSocketStreamHandleDelegate* delegate_; webkit_glue::WebSocketStreamHandleDelegate* delegate_;
scoped_refptr<net::SocketStream> socket_; scoped_refptr<net::SocketStream> socket_;
// Number of pending tasks to handle net::SocketStream::Delegate methods.
int num_pending_tasks_;
DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl); DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl);
}; };
@ -77,15 +79,16 @@ WebSocketStreamHandleBridgeImpl::WebSocketStreamHandleBridgeImpl(
: socket_id_(kNoSocketId), : socket_id_(kNoSocketId),
message_loop_(MessageLoop::current()), message_loop_(MessageLoop::current()),
handle_(handle), handle_(handle),
delegate_(delegate) { delegate_(delegate),
num_pending_tasks_(0) {
} }
WebSocketStreamHandleBridgeImpl::~WebSocketStreamHandleBridgeImpl() { WebSocketStreamHandleBridgeImpl::~WebSocketStreamHandleBridgeImpl() {
CHECK(socket_id_ == kNoSocketId); DCHECK_EQ(socket_id_, kNoSocketId);
} }
void WebSocketStreamHandleBridgeImpl::Connect(const GURL& url) { void WebSocketStreamHandleBridgeImpl::Connect(const GURL& url) {
CHECK(g_io_thread); DCHECK(g_io_thread);
AddRef(); // Released in DoOnClose(). AddRef(); // Released in DoOnClose().
g_io_thread->PostTask( g_io_thread->PostTask(
FROM_HERE, FROM_HERE,
@ -97,7 +100,7 @@ void WebSocketStreamHandleBridgeImpl::Connect(const GURL& url) {
bool WebSocketStreamHandleBridgeImpl::Send( bool WebSocketStreamHandleBridgeImpl::Send(
const std::vector<char>& data) { const std::vector<char>& data) {
CHECK(g_io_thread); DCHECK(g_io_thread);
g_io_thread->PostTask( g_io_thread->PostTask(
FROM_HERE, FROM_HERE,
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoSend, NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoSend,
@ -106,7 +109,7 @@ bool WebSocketStreamHandleBridgeImpl::Send(
} }
void WebSocketStreamHandleBridgeImpl::Close() { void WebSocketStreamHandleBridgeImpl::Close() {
CHECK(g_io_thread); DCHECK(g_io_thread);
g_io_thread->PostTask( g_io_thread->PostTask(
FROM_HERE, FROM_HERE,
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoClose)); NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoClose));
@ -114,6 +117,7 @@ void WebSocketStreamHandleBridgeImpl::Close() {
void WebSocketStreamHandleBridgeImpl::OnConnected( void WebSocketStreamHandleBridgeImpl::OnConnected(
net::SocketStream* socket, int max_pending_send_allowed) { net::SocketStream* socket, int max_pending_send_allowed) {
++num_pending_tasks_;
message_loop_->PostTask( message_loop_->PostTask(
FROM_HERE, FROM_HERE,
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnConnected, NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnConnected,
@ -122,6 +126,7 @@ void WebSocketStreamHandleBridgeImpl::OnConnected(
void WebSocketStreamHandleBridgeImpl::OnSentData( void WebSocketStreamHandleBridgeImpl::OnSentData(
net::SocketStream* socket, int amount_sent) { net::SocketStream* socket, int amount_sent) {
++num_pending_tasks_;
message_loop_->PostTask( message_loop_->PostTask(
FROM_HERE, FROM_HERE,
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnSentData, NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnSentData,
@ -130,6 +135,7 @@ void WebSocketStreamHandleBridgeImpl::OnSentData(
void WebSocketStreamHandleBridgeImpl::OnReceivedData( void WebSocketStreamHandleBridgeImpl::OnReceivedData(
net::SocketStream* socket, const char* data, int len) { net::SocketStream* socket, const char* data, int len) {
++num_pending_tasks_;
message_loop_->PostTask( message_loop_->PostTask(
FROM_HERE, FROM_HERE,
NewRunnableMethod(this, NewRunnableMethod(this,
@ -138,25 +144,24 @@ void WebSocketStreamHandleBridgeImpl::OnReceivedData(
} }
void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) { void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) {
webkit_glue::WebSocketStreamHandleDelegate* delegate = delegate_; ++num_pending_tasks_;
delegate_ = NULL; // Release socket_ on IO thread.
socket_ = 0; socket_ = NULL;
socket_id_ = kNoSocketId; socket_id_ = kNoSocketId;
message_loop_->PostTask( message_loop_->PostTask(
FROM_HERE, FROM_HERE,
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnClose, NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnClose));
delegate));
} }
void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) { void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) {
CHECK(MessageLoop::current() == g_io_thread); DCHECK(MessageLoop::current() == g_io_thread);
socket_ = new net::SocketStream(url, this); socket_ = new net::SocketStream(url, this);
socket_->set_context(g_request_context); socket_->set_context(g_request_context);
socket_->Connect(); socket_->Connect();
} }
void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) { void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) {
CHECK(MessageLoop::current() == g_io_thread); DCHECK(MessageLoop::current() == g_io_thread);
scoped_ptr<std::vector<char> > scoped_data(data); scoped_ptr<std::vector<char> > scoped_data(data);
if (!socket_) if (!socket_)
return; return;
@ -165,7 +170,7 @@ void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) {
} }
void WebSocketStreamHandleBridgeImpl::DoClose() { void WebSocketStreamHandleBridgeImpl::DoClose() {
CHECK(MessageLoop::current() == g_io_thread); DCHECK(MessageLoop::current() == g_io_thread);
if (!socket_) if (!socket_)
return; return;
socket_->Close(); socket_->Close();
@ -173,29 +178,37 @@ void WebSocketStreamHandleBridgeImpl::DoClose() {
void WebSocketStreamHandleBridgeImpl::DoOnConnected( void WebSocketStreamHandleBridgeImpl::DoOnConnected(
int max_pending_send_allowed) { int max_pending_send_allowed) {
CHECK(MessageLoop::current() == message_loop_); DCHECK(MessageLoop::current() == message_loop_);
--num_pending_tasks_;
if (delegate_) if (delegate_)
delegate_->DidOpenStream(handle_, max_pending_send_allowed); delegate_->DidOpenStream(handle_, max_pending_send_allowed);
} }
void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) { void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) {
CHECK(MessageLoop::current() == message_loop_); DCHECK(MessageLoop::current() == message_loop_);
--num_pending_tasks_;
if (delegate_) if (delegate_)
delegate_->DidSendData(handle_, amount_sent); delegate_->DidSendData(handle_, amount_sent);
} }
void WebSocketStreamHandleBridgeImpl::DoOnReceivedData( void WebSocketStreamHandleBridgeImpl::DoOnReceivedData(
std::vector<char>* data) { std::vector<char>* data) {
CHECK(MessageLoop::current() == message_loop_); DCHECK(MessageLoop::current() == message_loop_);
--num_pending_tasks_;
scoped_ptr<std::vector<char> > scoped_data(data); scoped_ptr<std::vector<char> > scoped_data(data);
if (delegate_) if (delegate_)
delegate_->DidReceiveData(handle_, &(data->at(0)), data->size()); delegate_->DidReceiveData(handle_, &(data->at(0)), data->size());
} }
void WebSocketStreamHandleBridgeImpl::DoOnClose( void WebSocketStreamHandleBridgeImpl::DoOnClose() {
webkit_glue::WebSocketStreamHandleDelegate* delegate) { DCHECK(MessageLoop::current() == message_loop_);
CHECK(MessageLoop::current() == message_loop_); --num_pending_tasks_;
CHECK(!socket_); // Don't handle OnClose if there are pending tasks.
DCHECK_EQ(num_pending_tasks_, 0);
DCHECK(!socket_);
DCHECK_EQ(socket_id_, kNoSocketId);
webkit_glue::WebSocketStreamHandleDelegate* delegate = delegate_;
delegate_ = NULL;
if (delegate) if (delegate)
delegate->DidClose(handle_); delegate->DidClose(handle_);
Release(); Release();

View File

@ -9,7 +9,7 @@
MSVC_PUSH_WARNING_LEVEL(0); MSVC_PUSH_WARNING_LEVEL(0);
#include "Cache.h" #include "Cache.h"
#include "TextEncoding.h" #include "TextEncoding.h"
#include "webkit/glue/webframe_impl.h" #include "webkit/api/src/WebFrameImpl.h"
MSVC_POP_WARNING(); MSVC_POP_WARNING();
#include "browser_webkit_glue.h" #include "browser_webkit_glue.h"
@ -29,6 +29,8 @@ MSVC_POP_WARNING();
// Generated by GRIT // Generated by GRIT
#include "grit/webkit_resources.h" #include "grit/webkit_resources.h"
using WebKit::WebFrameImpl;
namespace webkit_glue { namespace webkit_glue {
bool IsMediaPlayerAvailable() { bool IsMediaPlayerAvailable() {

View File

@ -18,6 +18,7 @@
#include "webkit/extensions/v8/interval_extension.h" #include "webkit/extensions/v8/interval_extension.h"
#include "webkit/api/public/WebCString.h" #include "webkit/api/public/WebCString.h"
#include "webkit/api/public/WebData.h" #include "webkit/api/public/WebData.h"
#include "webkit/api/public/WebRuntimeFeatures.h"
#include "webkit/api/public/WebKit.h" #include "webkit/api/public/WebKit.h"
#include "webkit/api/public/WebScriptController.h" #include "webkit/api/public/WebScriptController.h"
#include "webkit/api/public/WebSecurityPolicy.h" #include "webkit/api/public/WebSecurityPolicy.h"
@ -50,14 +51,13 @@ class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
extensions_v8::GearsExtension::Get()); extensions_v8::GearsExtension::Get());
WebKit::WebScriptController::registerExtension( WebKit::WebScriptController::registerExtension(
extensions_v8::IntervalExtension::Get()); extensions_v8::IntervalExtension::Get());
WebKit::enableWebSockets(); WebKit::WebRuntimeFeatures::enableSockets(true);
// Load libraries for media and enable the media player. // Load libraries for media and enable the media player.
FilePath module_path; FilePath module_path;
if (PathService::Get(base::DIR_MODULE, &module_path) && WebKit::WebRuntimeFeatures::enableMediaPlayer(
media::InitializeMediaLibrary(module_path)) { PathService::Get(base::DIR_MODULE, &module_path) &&
WebKit::enableMediaPlayer(); media::InitializeMediaLibrary(module_path));
}
// Construct and initialize an appcache system for this scope. // Construct and initialize an appcache system for this scope.
// A new empty temp directory is created to house any cached // A new empty temp directory is created to house any cached
@ -200,7 +200,11 @@ class BrowserWebKitInit : public webkit_glue::WebKitClientImpl {
return BrowserAppCacheSystem::CreateApplicationCacheHost(client); return BrowserAppCacheSystem::CreateApplicationCacheHost(client);
} }
private: virtual WebKit::WebSharedWorkerRepository* sharedWorkerRepository() {
return NULL;
}
private:
webkit_glue::SimpleWebMimeRegistryImpl mime_registry_; webkit_glue::SimpleWebMimeRegistryImpl mime_registry_;
webkit_glue::WebClipboardImpl clipboard_; webkit_glue::WebClipboardImpl clipboard_;
ScopedTempDir appcache_dir_; ScopedTempDir appcache_dir_;

View File

@ -341,6 +341,9 @@ void BrowserWebViewDelegate::setStatusText(const WebString& text) {
void BrowserWebViewDelegate::setMouseOverURL(const WebURL& url) { void BrowserWebViewDelegate::setMouseOverURL(const WebURL& url) {
} }
void BrowserWebViewDelegate::setKeyboardFocusURL(const WebKit::WebURL& url) {
}
void BrowserWebViewDelegate::setToolTipText( void BrowserWebViewDelegate::setToolTipText(
const WebString& text, WebTextDirection hint) { const WebString& text, WebTextDirection hint) {
} }

View File

@ -103,6 +103,7 @@ class BrowserWebViewDelegate : public WebKit::WebViewClient,
WebKit::WebFrame* frame, const WebKit::WebContextMenuData& data); WebKit::WebFrame* frame, const WebKit::WebContextMenuData& data);
virtual void setStatusText(const WebKit::WebString& text); virtual void setStatusText(const WebKit::WebString& text);
virtual void setMouseOverURL(const WebKit::WebURL& url); virtual void setMouseOverURL(const WebKit::WebURL& url);
virtual void setKeyboardFocusURL(const WebKit::WebURL& url);
virtual void setToolTipText( virtual void setToolTipText(
const WebKit::WebString& text, WebKit::WebTextDirection hint); const WebKit::WebString& text, WebKit::WebTextDirection hint);
virtual void startDragging( virtual void startDragging(