diff --git a/browser/api/atom_api_protocol.cc b/browser/api/atom_api_protocol.cc index 843e15342cd6..258081251902 100644 --- a/browser/api/atom_api_protocol.cc +++ b/browser/api/atom_api_protocol.cc @@ -39,6 +39,19 @@ void EmitEventInUI(const std::string& event, const std::string& parameter) { node::MakeCallback(g_protocol_object, "emit", arraysize(argv), argv); } +// Convert the URLRequest object to V8 object. +v8::Handle ConvertURLRequestToV8Object( + const net::URLRequest* request) { + v8::Local obj = v8::Object::New(); + obj->Set(v8::String::New("method"), + v8::String::New(request->method().c_str())); + obj->Set(v8::String::New("url"), + v8::String::New(request->url().spec().c_str())); + obj->Set(v8::String::New("referrer"), + v8::String::New(request->referrer().c_str())); + return obj; +} + net::URLRequestJobFactoryImpl* GetRequestJobFactory() { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); // Get the job factory. @@ -158,8 +171,7 @@ class AdapterRequestJob : public net::URLRequestJob { // Call the JS handler. v8::HandleScope scope; v8::Handle argv[] = { - v8::String::New(request()->url().spec().c_str()), - v8::String::New(request()->referrer().c_str()), + ConvertURLRequestToV8Object(request()), }; v8::Handle result = g_handlers[request()->url().scheme()]->Call( v8::Context::GetCurrent()->Global(), arraysize(argv), argv); diff --git a/spec/api/protocol.coffee b/spec/api/protocol.coffee index 222846f81067..ab90cb9018a2 100644 --- a/spec/api/protocol.coffee +++ b/spec/api/protocol.coffee @@ -12,9 +12,9 @@ describe 'protocol API', -> protocol.unregisterProtocol 'test1' it 'calls the callback when scheme is visited', (done) -> - protocol.registerProtocol 'test2', (url, referrer) -> - assert.equal url, 'test2://test2' - assert.equal referrer, window.location.toString() + protocol.registerProtocol 'test2', (request) -> + assert.equal request.url, 'test2://test2' + assert.equal request.referrer, window.location.toString() protocol.unregisterProtocol 'test2' done() $.get 'test2://test2', ->