summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions/extension_process_bindings.cc
diff options
context:
space:
mode:
authorjcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-26 17:26:16 +0000
committerjcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-26 17:26:16 +0000
commit3a605e80b401878e493ba82c4d5b58b2c47b11db (patch)
treefedd5d347828779466e65878e8c102a426ea3eb7 /chrome/renderer/extensions/extension_process_bindings.cc
parente99ca5111f19b5401f0e18e52a0ebbddc8a36f78 (diff)
downloadchromium_src-3a605e80b401878e493ba82c4d5b58b2c47b11db.zip
chromium_src-3a605e80b401878e493ba82c4d5b58b2c47b11db.tar.gz
chromium_src-3a605e80b401878e493ba82c4d5b58b2c47b11db.tar.bz2
(Relanding this, exact same CL as the previous one.)
Adding the first one of the saveAs extension APIs. The saveAsMHTML allows saving a tab as MHTML. BUG=97306 TEST=Run the browser tests. TBR=asargent,ahendrickson,jam Review URL: http://codereview.chromium.org/8027001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102750 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions/extension_process_bindings.cc')
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc
index 0be7757..2b0485e 100644
--- a/chrome/renderer/extensions/extension_process_bindings.cc
+++ b/chrome/renderer/extensions/extension_process_bindings.cc
@@ -16,6 +16,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/string_number_conversions.h"
#include "base/string_util.h"
+#include "base/utf_string_conversions.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_action.h"
#include "chrome/common/extensions/extension_constants.h"
@@ -38,6 +39,7 @@
#include "content/renderer/render_view_visitor.h"
#include "grit/common_resources.h"
#include "grit/renderer_resources.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebBlob.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
@@ -196,6 +198,8 @@ class ExtensionImpl : public ExtensionBase {
return v8::FunctionTemplate::New(GetLocalFileSystem);
} else if (name->Equals(v8::String::New("DecodeJPEG"))) {
return v8::FunctionTemplate::New(DecodeJPEG, v8::External::New(this));
+ } else if (name->Equals(v8::String::New("CreateBlob"))) {
+ return v8::FunctionTemplate::New(CreateBlob, v8::External::New(this));
}
return ExtensionBase::GetNativeFunction(name);
@@ -354,6 +358,17 @@ class ExtensionImpl : public ExtensionBase {
return bitmap_array;
}
+ // Creates a Blob with the content of the specified file.
+ static v8::Handle<v8::Value> CreateBlob(const v8::Arguments& args) {
+ CHECK(args.Length() == 2);
+ CHECK(args[0]->IsString());
+ CHECK(args[1]->IsInt32());
+ WebKit::WebString path(UTF8ToUTF16(*v8::String::Utf8Value(args[0])));
+ WebKit::WebBlob blob =
+ WebKit::WebBlob::createFromFile(path, args[1]->Int32Value());
+ return blob.toV8Value();
+ }
+
// Creates a new messaging channel to the tab with the given ID.
static v8::Handle<v8::Value> OpenChannelToTab(const v8::Arguments& args) {
// Get the current RenderView so that we can send a routed IPC message from