| Index: content/renderer/web_intents_host.cc
 | 
| diff --git a/content/renderer/web_intents_host.cc b/content/renderer/web_intents_host.cc
 | 
| index 6f2e05abd5e132e160377bdfd753603610d56a83..1bba7815965e89e1be6eb6098aa29fc0f8aca5fb 100644
 | 
| --- a/content/renderer/web_intents_host.cc
 | 
| +++ b/content/renderer/web_intents_host.cc
 | 
| @@ -10,6 +10,7 @@
 | 
|  #include "content/renderer/render_view_impl.h"
 | 
|  #include "ipc/ipc_message.h"
 | 
|  #include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h"
 | 
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebBlob.h"
 | 
|  #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
 | 
|  #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentRequest.h"
 | 
|  #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
 | 
| @@ -19,6 +20,7 @@
 | 
|  #include "webkit/glue/cpp_bound_class.h"
 | 
|  
 | 
|  using WebKit::WebBindings;
 | 
| +using WebKit::WebBlob;
 | 
|  using WebKit::WebCString;
 | 
|  using WebKit::WebFrame;
 | 
|  using WebKit::WebIntentRequest;
 | 
| @@ -31,26 +33,35 @@ using WebKit::WebSerializedScriptValue;
 | 
|  // browser-provided Javascript API objects on |window|.
 | 
|  class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
 | 
|   public:
 | 
| -  BoundDeliveredIntent(const string16& action,
 | 
| -                       const string16& type,
 | 
| -                       const string16& data,
 | 
| +  BoundDeliveredIntent(const webkit_glue::WebIntentData& intent,
 | 
|                         WebIntentsHost* parent,
 | 
|                         WebFrame* frame) {
 | 
| -    action_ = WebString(action).utf8();
 | 
| -    type_ = WebString(type).utf8();
 | 
| +    action_ = WebString(intent.action).utf8();
 | 
| +    type_ = WebString(intent.type).utf8();
 | 
|      parent_ = parent;
 | 
|  
 | 
|      v8::HandleScope scope;
 | 
|      v8::Local<v8::Context> ctx = frame->mainWorldScriptContext();
 | 
|      v8::Context::Scope cscope(ctx);
 | 
| -    WebSerializedScriptValue ssv =
 | 
| -        WebSerializedScriptValue::fromString(WebString(data));
 | 
| -    // TODO(gbillock): use an exception handler instead? Need to
 | 
| -    // pass back error state to caller? This is a pretty unexpected
 | 
| -    // internal error...
 | 
| -    CHECK(!ssv.isNull());
 | 
| -    v8::Local<v8::Value> data_obj =
 | 
| -        v8::Local<v8::Value>::New(ssv.deserialize());
 | 
| +    v8::Local<v8::Value> data_obj;
 | 
| +
 | 
| +    if (intent.data_type == webkit_glue::WebIntentData::SERIALIZED) {
 | 
| +      WebSerializedScriptValue ssv =
 | 
| +          WebSerializedScriptValue::fromString(WebString(intent.data));
 | 
| +      // TODO(gbillock): use an exception handler instead? Need to
 | 
| +      // pass back error state to caller? This is a pretty unexpected
 | 
| +      // internal error...
 | 
| +      CHECK(!ssv.isNull());
 | 
| +      data_obj = v8::Local<v8::Value>::New(ssv.deserialize());
 | 
| +    } else if (intent.data_type == webkit_glue::WebIntentData::UNSERIALIZED) {
 | 
| +      data_obj = v8::String::New(intent.unserialized_data.data(),
 | 
| +                                 intent.unserialized_data.length());
 | 
| +    } else {
 | 
| +      CHECK(intent.data_type == webkit_glue::WebIntentData::BLOB);
 | 
| +      WebBlob web_blob = WebBlob::createFromFile(
 | 
| +          WebString::fromUTF8(intent.blob_file), intent.blob_length);
 | 
| +      data_obj = v8::Local<v8::Value>::New(web_blob.toV8Value());
 | 
| +    }
 | 
|  
 | 
|      data_val_.reset(new CppVariant);
 | 
|      WebBindings::toNPVariant(data_obj, frame->windowObject(), data_val_.get());
 | 
| @@ -195,7 +206,7 @@ void WebIntentsHost::DidClearWindowObject(WebFrame* frame) {
 | 
|    if (intent_.get() == NULL || frame->top() != frame)
 | 
|      return;
 | 
|  
 | 
| -  delivered_intent_.reset(new BoundDeliveredIntent(
 | 
| -      intent_->action, intent_->type, intent_->data, this, frame));
 | 
| +  delivered_intent_.reset(
 | 
| +      new BoundDeliveredIntent(*(intent_.get()), this, frame));
 | 
|    delivered_intent_->BindToJavascript(frame, "intent");
 | 
|  }
 | 
| 
 |