mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
libcef: Update due to underlying chromium changes & bug fixes.
- Add v8_snapshot_cc project dependency (Issue # 11, fix by: vridosh) - Fix possible crash on exit in browser_resource_loader_bridge.cc (Issue # 12, fix by: vridosh). - localized_strings project renamed to webkit_strings. - GetBitmapResource() in browser_webkit_glue.cc now returns GlueBitmap* instead of GlueBitmap. - GetLocalizedString() in browser_webkit_glue_win.cc now returns string16 instead of std::wstring. - Add BrowserWebViewDelegate::SetStatusbarText() method. - Move BrowserWebViewDelegate::DidMove() from browser_webview_delegate.cc to browser_webview_delegate_win.cc. - Move FromWindow() predefine in webwidget_host out of the header file. git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@15 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@@ -195,78 +195,80 @@ class RequestProxy : public URLRequest::Delegate,
|
||||
void AsyncStart(RequestParams* params) {
|
||||
bool handled = false;
|
||||
|
||||
CefRefPtr<CefHandler> handler = browser_->GetHandler();
|
||||
if(handler.get())
|
||||
{
|
||||
// Build the request object for passing to the handler
|
||||
CefRefPtr<CefRequest> request(new CefRequestImpl());
|
||||
CefRequestImpl* requestimpl = static_cast<CefRequestImpl*>(request.get());
|
||||
if (browser_) {
|
||||
CefRefPtr<CefHandler> handler = browser_->GetHandler();
|
||||
if(handler.get())
|
||||
{
|
||||
// Build the request object for passing to the handler
|
||||
CefRefPtr<CefRequest> request(new CefRequestImpl());
|
||||
CefRequestImpl* requestimpl = static_cast<CefRequestImpl*>(request.get());
|
||||
|
||||
requestimpl->SetURL(UTF8ToWide(params->url.spec()));
|
||||
requestimpl->SetMethod(UTF8ToWide(params->method));
|
||||
|
||||
// TODO(cef): Parse the extra header values from params->headers and
|
||||
// add to the header map.
|
||||
CefRequest::HeaderMap headerMap;
|
||||
headerMap.insert(
|
||||
std::make_pair(L"Referrer", UTF8ToWide(params->referrer.spec())));
|
||||
requestimpl->SetURL(UTF8ToWide(params->url.spec()));
|
||||
requestimpl->SetMethod(UTF8ToWide(params->method));
|
||||
|
||||
// TODO(cef): Parse the extra header values from params->headers and
|
||||
// add to the header map.
|
||||
CefRequest::HeaderMap headerMap;
|
||||
headerMap.insert(
|
||||
std::make_pair(L"Referrer", UTF8ToWide(params->referrer.spec())));
|
||||
|
||||
requestimpl->SetHeaderMap(headerMap);
|
||||
requestimpl->SetHeaderMap(headerMap);
|
||||
|
||||
scoped_refptr<net::UploadData> upload = params->upload;
|
||||
CefRefPtr<CefPostData> postdata;
|
||||
if(upload.get()) {
|
||||
postdata = new CefPostDataImpl();
|
||||
static_cast<CefPostDataImpl*>(postdata.get())->Set(*upload.get());
|
||||
requestimpl->SetPostData(postdata);
|
||||
}
|
||||
scoped_refptr<net::UploadData> upload = params->upload;
|
||||
CefRefPtr<CefPostData> postdata;
|
||||
if(upload.get()) {
|
||||
postdata = new CefPostDataImpl();
|
||||
static_cast<CefPostDataImpl*>(postdata.get())->Set(*upload.get());
|
||||
requestimpl->SetPostData(postdata);
|
||||
}
|
||||
|
||||
int loadFlags = params->load_flags;
|
||||
int loadFlags = params->load_flags;
|
||||
|
||||
// Handler output will be returned in these variables
|
||||
std::wstring redirectUrl;
|
||||
CefRefPtr<CefStreamReader> resourceStream;
|
||||
std::wstring mimeType;
|
||||
|
||||
CefHandler::RetVal rv = handler->HandleBeforeResourceLoad(
|
||||
browser_, request, redirectUrl, resourceStream, mimeType, loadFlags);
|
||||
if(rv == CefHandler::RV_HANDLED) {
|
||||
// cancel the resource load
|
||||
handled = true;
|
||||
OnCompletedRequest(URLRequestStatus(URLRequestStatus::CANCELED, 0));
|
||||
} else if(!redirectUrl.empty()) {
|
||||
// redirect to the specified URL
|
||||
params->url = GURL(WideToUTF8(redirectUrl));
|
||||
OnReceivedRedirect(params->url);
|
||||
} else if(resourceStream.get()) {
|
||||
// load from the provided resource stream
|
||||
handled = true;
|
||||
// Handler output will be returned in these variables
|
||||
std::wstring redirectUrl;
|
||||
CefRefPtr<CefStreamReader> resourceStream;
|
||||
std::wstring mimeType;
|
||||
|
||||
CefHandler::RetVal rv = handler->HandleBeforeResourceLoad(
|
||||
browser_, request, redirectUrl, resourceStream, mimeType, loadFlags);
|
||||
if(rv == CefHandler::RV_HANDLED) {
|
||||
// cancel the resource load
|
||||
handled = true;
|
||||
OnCompletedRequest(URLRequestStatus(URLRequestStatus::CANCELED, 0));
|
||||
} else if(!redirectUrl.empty()) {
|
||||
// redirect to the specified URL
|
||||
params->url = GURL(WideToUTF8(redirectUrl));
|
||||
OnReceivedRedirect(params->url);
|
||||
} else if(resourceStream.get()) {
|
||||
// load from the provided resource stream
|
||||
handled = true;
|
||||
|
||||
long offset = resourceStream->Seek(0, SEEK_END);
|
||||
resourceStream->Seek(0, SEEK_SET);
|
||||
long offset = resourceStream->Seek(0, SEEK_END);
|
||||
resourceStream->Seek(0, SEEK_SET);
|
||||
|
||||
resource_stream_ = resourceStream;
|
||||
resource_stream_ = resourceStream;
|
||||
|
||||
ResourceLoaderBridge::ResponseInfo info;
|
||||
info.content_length = static_cast<int64>(offset);
|
||||
if(!mimeType.empty())
|
||||
info.mime_type = WideToUTF8(mimeType);
|
||||
OnReceivedResponse(info, false);
|
||||
AsyncReadData();
|
||||
ResourceLoaderBridge::ResponseInfo info;
|
||||
info.content_length = static_cast<int64>(offset);
|
||||
if(!mimeType.empty())
|
||||
info.mime_type = WideToUTF8(mimeType);
|
||||
OnReceivedResponse(info, false);
|
||||
AsyncReadData();
|
||||
}
|
||||
}
|
||||
|
||||
if(!handled)
|
||||
{
|
||||
request_.reset(new URLRequest(params->url, this));
|
||||
request_->set_method(params->method);
|
||||
request_->set_policy_url(params->policy_url);
|
||||
request_->set_referrer(params->referrer.spec());
|
||||
request_->SetExtraRequestHeaders(params->headers);
|
||||
request_->set_load_flags(params->load_flags);
|
||||
request_->set_upload(params->upload.get());
|
||||
request_->set_context(request_context);
|
||||
request_->Start();
|
||||
}
|
||||
}
|
||||
|
||||
if(!handled)
|
||||
{
|
||||
request_.reset(new URLRequest(params->url, this));
|
||||
request_->set_method(params->method);
|
||||
request_->set_policy_url(params->policy_url);
|
||||
request_->set_referrer(params->referrer.spec());
|
||||
request_->SetExtraRequestHeaders(params->headers);
|
||||
request_->set_load_flags(params->load_flags);
|
||||
request_->set_upload(params->upload.get());
|
||||
request_->set_context(request_context);
|
||||
request_->Start();
|
||||
}
|
||||
|
||||
delete params;
|
||||
|
@@ -104,7 +104,12 @@ std::string GetDataResource(int resource_id) {
|
||||
}
|
||||
}
|
||||
|
||||
GlueBitmap GetBitmapResource(int resource_id) {
|
||||
#if defined(OS_MACOSX)
|
||||
SkBitmap*
|
||||
#else
|
||||
GlueBitmap*
|
||||
#endif
|
||||
GetBitmapResource(int resource_id) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@@ -28,7 +28,7 @@ MSVC_POP_WARNING();
|
||||
|
||||
namespace webkit_glue {
|
||||
|
||||
std::wstring GetLocalizedString(int message_id) {
|
||||
string16 GetLocalizedString(int message_id) {
|
||||
const ATLSTRINGRESOURCEIMAGE* image =
|
||||
AtlGetStringResourceImage(_AtlBaseModule.GetModuleInstance(),
|
||||
message_id);
|
||||
@@ -37,7 +37,7 @@ std::wstring GetLocalizedString(int message_id) {
|
||||
NOTREACHED();
|
||||
return L"No string for this identifier!";
|
||||
}
|
||||
return std::wstring(image->achString, image->nLength);
|
||||
return string16(image->achString, image->nLength);
|
||||
}
|
||||
|
||||
HCURSOR LoadCursor(int cursor_id) {
|
||||
|
@@ -31,11 +31,11 @@
|
||||
#include "webkit/glue/webkit_glue.h"
|
||||
#include "webkit/glue/webview.h"
|
||||
#include "webkit/glue/plugins/plugin_list.h"
|
||||
#include "webkit/glue/plugins/webplugin_delegate_impl.h"
|
||||
#include "webkit/glue/window_open_disposition.h"
|
||||
|
||||
#if defined(OS_WIN)
|
||||
// TODO(port): make these files work everywhere.
|
||||
#include "webkit/glue/plugins/webplugin_delegate_impl.h"
|
||||
#include "browser_drag_delegate.h"
|
||||
#include "browser_drop_delegate.h"
|
||||
#endif
|
||||
@@ -348,6 +348,11 @@ bool BrowserWebViewDelegate::RunJavaScriptPrompt(WebView* webview,
|
||||
return retval;
|
||||
}
|
||||
|
||||
void BrowserWebViewDelegate::SetStatusbarText(WebView* webview,
|
||||
const std::wstring& message) {
|
||||
|
||||
}
|
||||
|
||||
void BrowserWebViewDelegate::StartDragging(WebView* webview,
|
||||
const WebDropData& drop_data) {
|
||||
#if defined(OS_WIN)
|
||||
@@ -499,37 +504,6 @@ void BrowserWebViewDelegate::Blur(WebWidget* webwidget) {
|
||||
browser_->UIT_SetFocus(host, false);
|
||||
}
|
||||
|
||||
|
||||
void BrowserWebViewDelegate::DidMove(WebWidget* webwidget,
|
||||
const WebPluginGeometry& move) {
|
||||
#if defined(OS_WIN)
|
||||
HRGN hrgn = ::CreateRectRgn(move.clip_rect.x(),
|
||||
move.clip_rect.y(),
|
||||
move.clip_rect.right(),
|
||||
move.clip_rect.bottom());
|
||||
gfx::SubtractRectanglesFromRegion(hrgn, move.cutout_rects);
|
||||
|
||||
// Note: System will own the hrgn after we call SetWindowRgn,
|
||||
// so we don't need to call DeleteObject(hrgn)
|
||||
::SetWindowRgn(move.window, hrgn, FALSE);
|
||||
|
||||
unsigned long flags = 0;
|
||||
if (move.visible)
|
||||
flags |= SWP_SHOWWINDOW;
|
||||
else
|
||||
flags |= SWP_HIDEWINDOW;
|
||||
|
||||
::SetWindowPos(move.window,
|
||||
NULL,
|
||||
move.window_rect.x(),
|
||||
move.window_rect.y(),
|
||||
move.window_rect.width(),
|
||||
move.window_rect.height(),
|
||||
flags);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
bool BrowserWebViewDelegate::IsHidden() {
|
||||
return false;
|
||||
}
|
||||
|
@@ -71,6 +71,8 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
|
||||
const std::wstring& message,
|
||||
const std::wstring& default_value,
|
||||
std::wstring* result);
|
||||
virtual void SetStatusbarText(WebView* webview,
|
||||
const std::wstring& message);
|
||||
virtual void AddMessageToConsole(WebView* webview,
|
||||
const std::wstring& message,
|
||||
unsigned int line_no,
|
||||
@@ -272,7 +274,7 @@ class BrowserWebViewDelegate : public base::RefCounted<BrowserWebViewDelegate>,
|
||||
GdkCursorType cursor_type_;
|
||||
#endif
|
||||
|
||||
DISALLOW_EVIL_CONSTRUCTORS(BrowserWebViewDelegate);
|
||||
DISALLOW_COPY_AND_ASSIGN(BrowserWebViewDelegate);
|
||||
};
|
||||
|
||||
#endif // _BROWSER_WEBVIEW_DELEGATE_H
|
||||
|
@@ -19,6 +19,8 @@
|
||||
#include <shlobj.h>
|
||||
#include <shlwapi.h>
|
||||
|
||||
#include "base/gfx/gdi_util.h"
|
||||
#include "base/gfx/native_widget_types.h"
|
||||
#include "base/gfx/point.h"
|
||||
#include "base/message_loop.h"
|
||||
#include "base/string_util.h"
|
||||
@@ -130,6 +132,34 @@ void BrowserWebViewDelegate::GetRootWindowResizerRect(WebWidget* webwidget,
|
||||
*out_rect = gfx::Rect();
|
||||
}
|
||||
|
||||
void BrowserWebViewDelegate::DidMove(WebWidget* webwidget,
|
||||
const WebPluginGeometry& move) {
|
||||
HRGN hrgn = ::CreateRectRgn(move.clip_rect.x(),
|
||||
move.clip_rect.y(),
|
||||
move.clip_rect.right(),
|
||||
move.clip_rect.bottom());
|
||||
gfx::SubtractRectanglesFromRegion(hrgn, move.cutout_rects);
|
||||
|
||||
// Note: System will own the hrgn after we call SetWindowRgn,
|
||||
// so we don't need to call DeleteObject(hrgn)
|
||||
::SetWindowRgn(move.window, hrgn, FALSE);
|
||||
|
||||
unsigned long flags = 0;
|
||||
if (move.visible)
|
||||
flags |= SWP_SHOWWINDOW;
|
||||
else
|
||||
flags |= SWP_HIDEWINDOW;
|
||||
|
||||
::SetWindowPos(move.window,
|
||||
NULL,
|
||||
move.window_rect.x(),
|
||||
move.window_rect.y(),
|
||||
move.window_rect.width(),
|
||||
move.window_rect.height(),
|
||||
flags);
|
||||
|
||||
}
|
||||
|
||||
void BrowserWebViewDelegate::RunModal(WebWidget* webwidget) {
|
||||
Show(webwidget, NEW_WINDOW);
|
||||
|
||||
|
@@ -46,7 +46,7 @@ WebWidgetHost* WebWidgetHost::Create(HWND parent_view,
|
||||
}
|
||||
|
||||
/*static*/
|
||||
WebWidgetHost* WebWidgetHost::FromWindow(HWND view) {
|
||||
static WebWidgetHost* FromWindow(HWND view) {
|
||||
return reinterpret_cast<WebWidgetHost*>(win_util::GetWindowUserData(view));
|
||||
}
|
||||
|
||||
|
@@ -27,7 +27,6 @@ class WebWidgetHost {
|
||||
static WebWidgetHost* Create(gfx::NativeView parent_view,
|
||||
WebWidgetDelegate* delegate);
|
||||
|
||||
static WebWidgetHost* FromWindow(gfx::NativeView view);
|
||||
#if defined(OS_MACOSX)
|
||||
static void HandleEvent(gfx::NativeView view, NSEvent *event);
|
||||
#endif
|
||||
@@ -83,7 +82,8 @@ class WebWidgetHost {
|
||||
// parent: a GtkBox to pack the new widget at the end of
|
||||
// host: a pointer to a WebWidgetHost (or subclass thereof)
|
||||
// ---------------------------------------------------------------------------
|
||||
static gfx::NativeView CreateWindow(gfx::NativeView parent_view, void* host);
|
||||
static gfx::NativeView CreateWindow(gfx::NativeView parent_view,
|
||||
WebWidgetHost* host);
|
||||
void WindowDestroyed();
|
||||
void Resize(const gfx::Size& size);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user