diff options
author | ericcheng@google.com <ericcheng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-26 01:27:35 +0000 |
---|---|---|
committer | ericcheng@google.com <ericcheng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-26 01:27:35 +0000 |
commit | 1cc87964e944939380107ed86107868344adb304 (patch) | |
tree | 0ea2ec036516062e51da919edb3af0604f6e2a3f /webkit/glue | |
parent | f3bb0346579cd4eb431c45e43041e139876015e8 (diff) | |
download | chromium_src-1cc87964e944939380107ed86107868344adb304.zip chromium_src-1cc87964e944939380107ed86107868344adb304.tar.gz chromium_src-1cc87964e944939380107ed86107868344adb304.tar.bz2 |
Some more glue code for the personalization module.
Added ability to invoke a method on an NPObject wrapped in
a CppVariant.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1359 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/cpp_variant.cc | 14 | ||||
-rw-r--r-- | webkit/glue/cpp_variant.h | 7 | ||||
-rw-r--r-- | webkit/glue/webframeloaderclient_impl.cc | 8 | ||||
-rw-r--r-- | webkit/glue/webview_delegate.h | 4 |
4 files changed, 33 insertions, 0 deletions
diff --git a/webkit/glue/cpp_variant.cc b/webkit/glue/cpp_variant.cc index a33986d..efa90e7 100644 --- a/webkit/glue/cpp_variant.cc +++ b/webkit/glue/cpp_variant.cc @@ -250,3 +250,17 @@ std::vector<std::wstring> CppVariant::ToStringVector() const { return wstring_vector; } +bool CppVariant::Invoke(const std::string& method, const CppVariant* args, + uint32 arg_count, CppVariant& result) const { + DCHECK(isObject()); + NPIdentifier method_name = NPN_GetStringIdentifier(method.c_str()); + NPObject* np_object = value.objectValue; + if (NPN_HasMethod(NULL, np_object, method_name)) { + NPVariant r; + bool status = NPN_Invoke(NULL, np_object, method_name, args, arg_count, &r); + result.Set(r); + return status; + } else { + return false; + } +} diff --git a/webkit/glue/cpp_variant.h b/webkit/glue/cpp_variant.h index c1eb795..f8a4c2e 100644 --- a/webkit/glue/cpp_variant.h +++ b/webkit/glue/cpp_variant.h @@ -98,6 +98,13 @@ class CppVariant : public NPVariant { // for converting a JavaScript array of strings into a vector of strings. std::vector<std::wstring> ToStringVector() const; + // Invoke method of the given name on an object with the supplied arguments. + // The first argument should be the object on which the method is to be + // invoked. Returns whether the method was successfully invoked. If the + // method was invoked successfully, any return value is stored in the + // CppVariant specified by result. + bool Invoke(const std::string& method, const CppVariant* args, + uint32 arg_count, CppVariant& result) const; }; #endif // WEBKIT_GLUE_CPP_VARIANT_H__ diff --git a/webkit/glue/webframeloaderclient_impl.cc b/webkit/glue/webframeloaderclient_impl.cc index 4303598..7ba384a 100644 --- a/webkit/glue/webframeloaderclient_impl.cc +++ b/webkit/glue/webframeloaderclient_impl.cc @@ -1253,7 +1253,15 @@ void WebFrameLoaderClient::transitionToCommittedFromCachedPage(WebCore::CachedPa ASSERT_NOT_REACHED(); } +// Called when the FrameLoader goes into a state in which a new page load +// will occur. void WebFrameLoaderClient::transitionToCommittedForNewPage() { + WebViewImpl* webview = webframe_->webview_impl(); + WebViewDelegate* d = webview->delegate(); + // Notify the RenderView. + if (d) { + d->TransitionToCommittedForNewPage(); + } makeDocumentView(); } diff --git a/webkit/glue/webview_delegate.h b/webkit/glue/webview_delegate.h index 6e39316..1f313b3 100644 --- a/webkit/glue/webview_delegate.h +++ b/webkit/glue/webview_delegate.h @@ -709,6 +709,10 @@ class WebViewDelegate : virtual public WebWidgetDelegate { virtual void WebInspectorOpened(int num_resources) { } + // Called when the FrameLoader goes into a state in which a new page load + // will occur. + virtual void TransitionToCommittedForNewPage() { } + WebViewDelegate() { } virtual ~WebViewDelegate() { } |