mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update to Chromium revision ad468e8b (#292352).
- Building Chromium using SVN is no longer supported. - Remove CefDOMEvent and CefDOMEventListener (issue #933). - Remove CefRenderHandler::OnScrollOffsetChanged (http://crbug.com/404656). - Remove UR_FLAG_REPORT_LOAD_TIMING (https://codereview.chromium.org/451623002/). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1816 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@@ -7,8 +7,8 @@
|
||||
|
||||
#include "config.h"
|
||||
MSVC_PUSH_WARNING_LEVEL(0);
|
||||
#include "bindings/v8/V8Binding.h"
|
||||
#include "bindings/v8/V8RecursionScope.h"
|
||||
#include "bindings/core/v8/V8Binding.h"
|
||||
#include "bindings/core/v8/V8RecursionScope.h"
|
||||
MSVC_POP_WARNING();
|
||||
#undef ceil
|
||||
#undef FROM_HERE
|
||||
@@ -37,8 +37,9 @@ MSVC_POP_WARNING();
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "chrome/common/chrome_paths.h"
|
||||
#include "chrome/renderer/loadtimes_extension_bindings.h"
|
||||
#include "chrome/renderer/pepper/ppb_pdf_impl.h"
|
||||
#include "chrome/renderer/pepper/chrome_pdf_print_client.h"
|
||||
#include "chrome/renderer/printing/print_web_view_helper.h"
|
||||
#include "components/pdf/renderer/ppb_pdf_impl.h"
|
||||
#include "content/child/child_thread.h"
|
||||
#include "content/child/worker_task_runner.h"
|
||||
#include "content/common/frame_messages.h"
|
||||
@@ -65,7 +66,6 @@ MSVC_POP_WARNING();
|
||||
#include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
|
||||
#include "third_party/WebKit/public/web/WebSecurityPolicy.h"
|
||||
#include "third_party/WebKit/public/web/WebView.h"
|
||||
#include "third_party/WebKit/public/web/WebWorkerInfo.h"
|
||||
#include "v8/include/v8.h"
|
||||
|
||||
#if defined(OS_WIN)
|
||||
@@ -468,6 +468,9 @@ void CefContentRendererClient::RenderThreadStarted() {
|
||||
// Cross-origin entries need to be added after WebKit is initialized.
|
||||
cross_origin_whitelist_entries_ = params.cross_origin_whitelist_entries;
|
||||
|
||||
pdf_print_client_.reset(new ChromePDFPrintClient());
|
||||
pdf::PPB_PDF_Impl::SetPrintClient(pdf_print_client_.get());
|
||||
|
||||
// Notify the render process handler.
|
||||
CefRefPtr<CefApp> application = CefContentClient::Get()->application();
|
||||
if (application.get()) {
|
||||
@@ -650,9 +653,9 @@ void CefContentRendererClient::DidCreateScriptContext(
|
||||
v8::Isolate* isolate = blink::mainThreadIsolate();
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
v8::Context::Scope scope(context);
|
||||
WebCore::V8RecursionScope recursion_scope(
|
||||
blink::V8RecursionScope recursion_scope(
|
||||
isolate,
|
||||
WebCore::toExecutionContext(context));
|
||||
blink::toExecutionContext(context));
|
||||
|
||||
CefRefPtr<CefV8Context> contextPtr(new CefV8ContextImpl(isolate, context));
|
||||
|
||||
@@ -671,7 +674,7 @@ const void* CefContentRendererClient::CreatePPAPIInterface(
|
||||
#if defined(ENABLE_PLUGINS)
|
||||
// Used for in-process PDF plugin.
|
||||
if (interface_name == PPB_PDF_INTERFACE)
|
||||
return PPB_PDF_Impl::GetInterface();
|
||||
return pdf::PPB_PDF_Impl::GetInterface();
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
@@ -693,9 +696,9 @@ void CefContentRendererClient::WillReleaseScriptContext(
|
||||
v8::Isolate* isolate = blink::mainThreadIsolate();
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
v8::Context::Scope scope(context);
|
||||
WebCore::V8RecursionScope recursion_scope(
|
||||
blink::V8RecursionScope recursion_scope(
|
||||
isolate,
|
||||
WebCore::toExecutionContext(context));
|
||||
blink::toExecutionContext(context));
|
||||
|
||||
CefRefPtr<CefV8Context> contextPtr(
|
||||
new CefV8ContextImpl(isolate, context));
|
||||
@@ -746,7 +749,7 @@ void CefContentRendererClient::BrowserCreated(
|
||||
browsers_.insert(std::make_pair(render_view, browser));
|
||||
|
||||
new CefPrerendererClient(render_view);
|
||||
new printing::PrintWebViewHelper(render_view);
|
||||
new printing::PrintWebViewHelper(render_view, false, false);
|
||||
|
||||
// Notify the render process handler.
|
||||
CefRefPtr<CefApp> application = CefContentClient::Get()->application();
|
||||
|
@@ -22,6 +22,7 @@
|
||||
|
||||
class CefRenderProcessObserver;
|
||||
struct Cef_CrossOriginWhiteListEntry_Params;
|
||||
class ChromePDFPrintClient;
|
||||
|
||||
class CefContentRendererClient : public content::ContentRendererClient,
|
||||
public base::MessageLoop::DestructionObserver {
|
||||
@@ -121,6 +122,8 @@ class CefContentRendererClient : public content::ContentRendererClient,
|
||||
typedef std::vector<Cef_CrossOriginWhiteListEntry_Params> CrossOriginList;
|
||||
CrossOriginList cross_origin_whitelist_entries_;
|
||||
|
||||
scoped_ptr<ChromePDFPrintClient> pdf_print_client_;
|
||||
|
||||
int devtools_agent_count_;
|
||||
int uncaught_exception_stack_size_;
|
||||
|
||||
|
@@ -1,154 +0,0 @@
|
||||
// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights
|
||||
// reserved. Use of this source code is governed by a BSD-style license that
|
||||
// can be found in the LICENSE file.
|
||||
|
||||
#include "libcef/renderer/dom_event_impl.h"
|
||||
#include "libcef/renderer/dom_document_impl.h"
|
||||
#include "libcef/renderer/thread_util.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "third_party/WebKit/public/platform/WebString.h"
|
||||
#include "third_party/WebKit/public/web/WebDOMEvent.h"
|
||||
|
||||
using blink::WebDOMEvent;
|
||||
using blink::WebString;
|
||||
|
||||
|
||||
CefDOMEventImpl::CefDOMEventImpl(CefRefPtr<CefDOMDocumentImpl> document,
|
||||
const blink::WebDOMEvent& event)
|
||||
: document_(document),
|
||||
event_(event) {
|
||||
DCHECK(!event_.isNull());
|
||||
}
|
||||
|
||||
CefDOMEventImpl::~CefDOMEventImpl() {
|
||||
CEF_REQUIRE_RT();
|
||||
DCHECK(event_.isNull());
|
||||
}
|
||||
|
||||
CefString CefDOMEventImpl::GetType() {
|
||||
CefString str;
|
||||
if (!VerifyContext())
|
||||
return str;
|
||||
|
||||
const WebString& type = event_.type();
|
||||
if (!type.isNull())
|
||||
str = type;
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
CefDOMEventImpl::Category CefDOMEventImpl::GetCategory() {
|
||||
if (!VerifyContext())
|
||||
return DOM_EVENT_CATEGORY_UNKNOWN;
|
||||
|
||||
int flags = 0;
|
||||
if (event_.isUIEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_UI;
|
||||
if (event_.isMouseEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_MOUSE;
|
||||
if (event_.isMutationEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_MUTATION;
|
||||
if (event_.isKeyboardEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_KEYBOARD;
|
||||
if (event_.isTextEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_TEXT;
|
||||
if (event_.isCompositionEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_COMPOSITION;
|
||||
if (event_.isDragEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_DRAG;
|
||||
if (event_.isClipboardEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_CLIPBOARD;
|
||||
if (event_.isMessageEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_MESSAGE;
|
||||
if (event_.isWheelEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_WHEEL;
|
||||
if (event_.isBeforeTextInsertedEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED;
|
||||
if (event_.isOverflowEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_OVERFLOW;
|
||||
if (event_.isPageTransitionEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_PAGE_TRANSITION;
|
||||
if (event_.isPopStateEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_POPSTATE;
|
||||
if (event_.isProgressEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_PROGRESS;
|
||||
if (event_.isXMLHttpRequestProgressEvent())
|
||||
flags |= DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS;
|
||||
|
||||
return static_cast<Category>(flags);
|
||||
}
|
||||
|
||||
CefDOMEventImpl::Phase CefDOMEventImpl::GetPhase() {
|
||||
if (!VerifyContext())
|
||||
return DOM_EVENT_PHASE_UNKNOWN;
|
||||
|
||||
switch (event_.eventPhase()) {
|
||||
case WebDOMEvent::CapturingPhase:
|
||||
return DOM_EVENT_PHASE_CAPTURING;
|
||||
case WebDOMEvent::AtTarget:
|
||||
return DOM_EVENT_PHASE_AT_TARGET;
|
||||
case WebDOMEvent::BubblingPhase:
|
||||
return DOM_EVENT_PHASE_BUBBLING;
|
||||
}
|
||||
|
||||
return DOM_EVENT_PHASE_UNKNOWN;
|
||||
}
|
||||
|
||||
bool CefDOMEventImpl::CanBubble() {
|
||||
if (!VerifyContext())
|
||||
return false;
|
||||
|
||||
return event_.bubbles();
|
||||
}
|
||||
|
||||
bool CefDOMEventImpl::CanCancel() {
|
||||
if (!VerifyContext())
|
||||
return false;
|
||||
|
||||
return event_.cancelable();
|
||||
}
|
||||
|
||||
CefRefPtr<CefDOMDocument> CefDOMEventImpl::GetDocument() {
|
||||
if (!VerifyContext())
|
||||
return NULL;
|
||||
|
||||
return document_.get();
|
||||
}
|
||||
|
||||
CefRefPtr<CefDOMNode> CefDOMEventImpl::GetTarget() {
|
||||
if (!VerifyContext())
|
||||
return NULL;
|
||||
|
||||
return document_->GetOrCreateNode(event_.target());
|
||||
}
|
||||
|
||||
CefRefPtr<CefDOMNode> CefDOMEventImpl::GetCurrentTarget() {
|
||||
if (!VerifyContext())
|
||||
return NULL;
|
||||
|
||||
return document_->GetOrCreateNode(event_.currentTarget());
|
||||
}
|
||||
|
||||
void CefDOMEventImpl::Detach() {
|
||||
// If you hit this assert it means that you are keeping references to this
|
||||
// event object beyond the valid scope.
|
||||
DCHECK(HasOneRef());
|
||||
|
||||
document_ = NULL;
|
||||
event_.assign(WebDOMEvent());
|
||||
}
|
||||
|
||||
bool CefDOMEventImpl::VerifyContext() {
|
||||
if (!document_.get()) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
if (!document_->VerifyContext())
|
||||
return false;
|
||||
if (event_.isNull()) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
@@ -1,43 +0,0 @@
|
||||
// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights
|
||||
// reserved. Use of this source code is governed by a BSD-style license that
|
||||
// can be found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_DOM_EVENT_IMPL_H_
|
||||
#define CEF_LIBCEF_DOM_EVENT_IMPL_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_dom.h"
|
||||
#include "third_party/WebKit/public/web/WebDOMEvent.h"
|
||||
|
||||
class CefDOMDocumentImpl;
|
||||
|
||||
class CefDOMEventImpl : public CefDOMEvent {
|
||||
public:
|
||||
CefDOMEventImpl(CefRefPtr<CefDOMDocumentImpl> document,
|
||||
const blink::WebDOMEvent& event);
|
||||
virtual ~CefDOMEventImpl();
|
||||
|
||||
// CefDOMEvent methods.
|
||||
virtual CefString GetType() OVERRIDE;
|
||||
virtual Category GetCategory() OVERRIDE;
|
||||
virtual Phase GetPhase() OVERRIDE;
|
||||
virtual bool CanBubble() OVERRIDE;
|
||||
virtual bool CanCancel() OVERRIDE;
|
||||
virtual CefRefPtr<CefDOMDocument> GetDocument() OVERRIDE;
|
||||
virtual CefRefPtr<CefDOMNode> GetTarget() OVERRIDE;
|
||||
virtual CefRefPtr<CefDOMNode> GetCurrentTarget() OVERRIDE;
|
||||
|
||||
// Will be called from CefDOMEventListenerWrapper::handleEvent().
|
||||
void Detach();
|
||||
|
||||
// Verify that the object exists and is being accessed on the UI thread.
|
||||
bool VerifyContext();
|
||||
|
||||
protected:
|
||||
CefRefPtr<CefDOMDocumentImpl> document_;
|
||||
blink::WebDOMEvent event_;
|
||||
|
||||
IMPLEMENT_REFCOUNTING(CefDOMEventImpl);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_DOM_EVENT_IMPL_H_
|
@@ -6,7 +6,6 @@
|
||||
#include "libcef/common/tracker.h"
|
||||
#include "libcef/renderer/browser_impl.h"
|
||||
#include "libcef/renderer/dom_document_impl.h"
|
||||
#include "libcef/renderer/dom_event_impl.h"
|
||||
#include "libcef/renderer/thread_util.h"
|
||||
#include "libcef/renderer/webkit_glue.h"
|
||||
|
||||
@@ -16,7 +15,6 @@
|
||||
#include "third_party/WebKit/public/platform/WebString.h"
|
||||
#include "third_party/WebKit/public/web/WebDocument.h"
|
||||
#include "third_party/WebKit/public/web/WebDOMEvent.h"
|
||||
#include "third_party/WebKit/public/web/WebDOMEventListener.h"
|
||||
#include "third_party/WebKit/public/web/WebElement.h"
|
||||
#include "third_party/WebKit/public/web/WebFrame.h"
|
||||
#include "third_party/WebKit/public/web/WebFormControlElement.h"
|
||||
@@ -26,7 +24,6 @@
|
||||
|
||||
using blink::WebDocument;
|
||||
using blink::WebDOMEvent;
|
||||
using blink::WebDOMEventListener;
|
||||
using blink::WebElement;
|
||||
using blink::WebFrame;
|
||||
using blink::WebFormControlElement;
|
||||
@@ -35,55 +32,6 @@ using blink::WebNode;
|
||||
using blink::WebSelectElement;
|
||||
using blink::WebString;
|
||||
|
||||
namespace {
|
||||
|
||||
// Wrapper implementation for WebDOMEventListener.
|
||||
class CefDOMEventListenerWrapper : public WebDOMEventListener,
|
||||
public CefTrackNode {
|
||||
public:
|
||||
CefDOMEventListenerWrapper(CefBrowserImpl* browser, WebFrame* frame,
|
||||
CefRefPtr<CefDOMEventListener> listener)
|
||||
: browser_(browser),
|
||||
frame_(frame),
|
||||
listener_(listener) {
|
||||
// Cause this object to be deleted immediately before the frame is closed.
|
||||
browser->AddFrameObject(webkit_glue::GetIdentifier(frame), this);
|
||||
}
|
||||
virtual ~CefDOMEventListenerWrapper() {
|
||||
CEF_REQUIRE_RT();
|
||||
}
|
||||
|
||||
virtual void handleEvent(const WebDOMEvent& event) {
|
||||
CefRefPtr<CefDOMDocumentImpl> documentImpl;
|
||||
CefRefPtr<CefDOMEventImpl> eventImpl;
|
||||
|
||||
if (!event.isNull()) {
|
||||
// Create CefDOMDocumentImpl and CefDOMEventImpl objects that are valid
|
||||
// only for the scope of this method.
|
||||
const WebDocument& document = frame_->document();
|
||||
if (!document.isNull()) {
|
||||
documentImpl = new CefDOMDocumentImpl(browser_, frame_);
|
||||
eventImpl = new CefDOMEventImpl(documentImpl, event);
|
||||
}
|
||||
}
|
||||
|
||||
listener_->HandleEvent(eventImpl.get());
|
||||
|
||||
if (eventImpl.get())
|
||||
eventImpl->Detach();
|
||||
if (documentImpl.get())
|
||||
documentImpl->Detach();
|
||||
}
|
||||
|
||||
protected:
|
||||
CefBrowserImpl* browser_;
|
||||
WebFrame* frame_;
|
||||
CefRefPtr<CefDOMEventListener> listener_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
CefDOMNodeImpl::CefDOMNodeImpl(CefRefPtr<CefDOMDocumentImpl> document,
|
||||
const blink::WebNode& node)
|
||||
: document_(document),
|
||||
@@ -331,18 +279,6 @@ CefRefPtr<CefDOMNode> CefDOMNodeImpl::GetLastChild() {
|
||||
return document_->GetOrCreateNode(node_.lastChild());
|
||||
}
|
||||
|
||||
void CefDOMNodeImpl::AddEventListener(const CefString& eventType,
|
||||
CefRefPtr<CefDOMEventListener> listener,
|
||||
bool useCapture) {
|
||||
if (!VerifyContext())
|
||||
return;
|
||||
|
||||
node_.addEventListener(base::string16(eventType),
|
||||
new CefDOMEventListenerWrapper(document_->GetBrowser(),
|
||||
document_->GetFrame(), listener),
|
||||
useCapture);
|
||||
}
|
||||
|
||||
CefString CefDOMNodeImpl::GetElementTagName() {
|
||||
CefString str;
|
||||
if (!VerifyContext())
|
||||
|
@@ -36,9 +36,6 @@ class CefDOMNodeImpl : public CefDOMNode {
|
||||
virtual bool HasChildren() OVERRIDE;
|
||||
virtual CefRefPtr<CefDOMNode> GetFirstChild() OVERRIDE;
|
||||
virtual CefRefPtr<CefDOMNode> GetLastChild() OVERRIDE;
|
||||
virtual void AddEventListener(const CefString& eventType,
|
||||
CefRefPtr<CefDOMEventListener> listener,
|
||||
bool useCapture) OVERRIDE;
|
||||
virtual CefString GetElementTagName() OVERRIDE;
|
||||
virtual bool HasElementAttributes() OVERRIDE;
|
||||
virtual bool HasElementAttribute(const CefString& attrName) OVERRIDE;
|
||||
|
@@ -17,8 +17,8 @@ MSVC_PUSH_WARNING_LEVEL(0);
|
||||
#include "core/frame/Frame.h"
|
||||
#include "core/frame/LocalFrame.h"
|
||||
#include "core/workers/WorkerGlobalScope.h"
|
||||
#include "bindings/v8/ScriptController.h"
|
||||
#include "bindings/v8/V8Binding.h"
|
||||
#include "bindings/core/v8/ScriptController.h"
|
||||
#include "bindings/core/v8/V8Binding.h"
|
||||
MSVC_POP_WARNING();
|
||||
#undef FROM_HERE
|
||||
#undef LOG
|
||||
@@ -551,15 +551,15 @@ v8::Local<v8::Value> CallV8Function(v8::Handle<v8::Context> context,
|
||||
// Execute the function call using the ScriptController so that inspector
|
||||
// instrumentation works.
|
||||
if (CEF_CURRENTLY_ON_RT()) {
|
||||
RefPtr<WebCore::LocalFrame> frame = WebCore::toFrameIfNotDetached(context);
|
||||
RefPtr<blink::LocalFrame> frame = blink::toFrameIfNotDetached(context);
|
||||
DCHECK(frame);
|
||||
if (frame &&
|
||||
frame->script().canExecuteScripts(WebCore::AboutToExecuteScript)) {
|
||||
frame->script().canExecuteScripts(blink::AboutToExecuteScript)) {
|
||||
func_rv = frame->script().callFunction(function, receiver, argc, args);
|
||||
}
|
||||
} else {
|
||||
func_rv = WebCore::ScriptController::callFunction(
|
||||
WebCore::toExecutionContext(context),
|
||||
func_rv = blink::ScriptController::callFunction(
|
||||
blink::toExecutionContext(context),
|
||||
function, receiver, argc, args, isolate);
|
||||
}
|
||||
|
||||
@@ -888,7 +888,7 @@ bool CefV8ContextImpl::Enter() {
|
||||
v8::Isolate* isolate = handle_->isolate();
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
|
||||
WebCore::V8PerIsolateData::from(isolate)->incrementRecursionLevel();
|
||||
blink::V8PerIsolateData::from(isolate)->incrementRecursionLevel();
|
||||
handle_->GetNewV8Handle()->Enter();
|
||||
#ifndef NDEBUG
|
||||
++enter_count_;
|
||||
@@ -904,7 +904,7 @@ bool CefV8ContextImpl::Exit() {
|
||||
|
||||
DLOG_ASSERT(enter_count_ > 0);
|
||||
handle_->GetNewV8Handle()->Exit();
|
||||
WebCore::V8PerIsolateData::from(isolate)->decrementRecursionLevel();
|
||||
blink::V8PerIsolateData::from(isolate)->decrementRecursionLevel();
|
||||
#ifndef NDEBUG
|
||||
--enter_count_;
|
||||
#endif
|
||||
@@ -1712,8 +1712,17 @@ bool CefV8ValueImpl::SetValue(const CefString& key,
|
||||
|
||||
v8::TryCatch try_catch;
|
||||
try_catch.SetVerbose(true);
|
||||
bool set = obj->Set(GetV8String(isolate, key), impl->GetV8Value(true),
|
||||
static_cast<v8::PropertyAttribute>(attribute));
|
||||
bool set;
|
||||
// TODO(cef): This usage may not exactly match the previous implementation.
|
||||
// Set will trigger interceptors and/or accessors whereas ForceSet will not.
|
||||
// It might be better to split this functionality into separate methods.
|
||||
if (attribute == V8_PROPERTY_ATTRIBUTE_NONE) {
|
||||
set = obj->Set(GetV8String(isolate, key), impl->GetV8Value(true));
|
||||
} else {
|
||||
set = obj->ForceSet(GetV8String(isolate, key),
|
||||
impl->GetV8Value(true),
|
||||
static_cast<v8::PropertyAttribute>(attribute));
|
||||
}
|
||||
return (!HasCaught(try_catch) && set);
|
||||
} else {
|
||||
NOTREACHED() << "invalid input parameter";
|
||||
|
@@ -78,7 +78,7 @@ std::string DumpDocumentText(blink::WebFrame* frame) {
|
||||
}
|
||||
|
||||
bool SetNodeValue(blink::WebNode& node, const blink::WebString& value) {
|
||||
WebCore::Node* web_node = node.unwrap<WebCore::Node>();
|
||||
blink::Node* web_node = node.unwrap<blink::Node>();
|
||||
web_node->setNodeValue(value);
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user