| Index: extensions/renderer/blob_native_handler.cc
|
| diff --git a/extensions/renderer/blob_native_handler.cc b/extensions/renderer/blob_native_handler.cc
|
| index c887af63f67aa23d73089ac876e0db794f9ec451..0a4a554db513f93f48d3fe6a5054f8e5760de6dd 100644
|
| --- a/extensions/renderer/blob_native_handler.cc
|
| +++ b/extensions/renderer/blob_native_handler.cc
|
| @@ -5,6 +5,9 @@
|
| #include "extensions/renderer/blob_native_handler.h"
|
|
|
| #include "base/bind.h"
|
| +#include "content/public/renderer/render_view.h"
|
| +#include "extensions/common/extension_messages.h"
|
| +#include "extensions/renderer/script_context.h"
|
| #include "third_party/WebKit/public/platform/WebCString.h"
|
| #include "third_party/WebKit/public/platform/WebURL.h"
|
| #include "third_party/WebKit/public/web/WebBlob.h"
|
| @@ -19,6 +22,26 @@ void GetBlobUuid(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| v8::String::NewFromUtf8(args.GetIsolate(), blob.uuid().utf8().data()));
|
| }
|
|
|
| +// Take ownership of a Blob created on the browser process. Expects the Blob's
|
| +// UUID, type, and size as arguments. Returns the Blob we just took to
|
| +// Javascript.
|
| +void TakeBrowserProcessBlob(extensions::ScriptContext* context,
|
| + const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| + DCHECK_EQ(3, args.Length());
|
| + DCHECK(args[0]->IsString());
|
| + DCHECK(args[1]->IsString());
|
| + DCHECK(args[2]->IsInt32());
|
| + std::string uuid(*v8::String::Utf8Value(args[0]->ToString()));
|
| + std::string type(*v8::String::Utf8Value(args[1]->ToString()));
|
| + blink::WebBlob blob = blink::WebBlob::createFromUUID(
|
| + blink::WebString::fromUTF8(uuid), blink::WebString::fromUTF8(type),
|
| + args[2]->Int32Value());
|
| + args.GetReturnValue().Set(blob.toV8Value());
|
| +
|
| + context->GetRenderView()->Send(new ExtensionHostMsg_BlobOwnershipTaken(
|
| + context->GetRenderView()->GetRoutingID(), uuid));
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace extensions {
|
| @@ -26,6 +49,8 @@ namespace extensions {
|
| BlobNativeHandler::BlobNativeHandler(ScriptContext* context)
|
| : ObjectBackedNativeHandler(context) {
|
| RouteFunction("GetBlobUuid", base::Bind(&GetBlobUuid));
|
| + RouteFunction("TakeBrowserProcessBlob",
|
| + base::Bind(&TakeBrowserProcessBlob, context));
|
| }
|
|
|
| } // namespace extensions
|
|
|