OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/renderer/extensions/extension_process_bindings.h" | 5 #include "chrome/renderer/extensions/extension_process_bindings.h" |
6 | 6 |
7 #include "base/singleton.h" | 7 #include "base/singleton.h" |
8 #include "chrome/common/render_messages.h" | 8 #include "chrome/common/render_messages.h" |
9 #include "chrome/renderer/extensions/bindings_utils.h" | 9 #include "chrome/renderer/extensions/bindings_utils.h" |
10 #include "chrome/renderer/extensions/event_bindings.h" | 10 #include "chrome/renderer/extensions/event_bindings.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 static std::set<std::string>* GetFunctionNameSet() { | 62 static std::set<std::string>* GetFunctionNameSet() { |
63 return &Singleton<SingletonData>()->function_names_; | 63 return &Singleton<SingletonData>()->function_names_; |
64 } | 64 } |
65 | 65 |
66 static v8::Handle<v8::Value> GetNextCallbackId(const v8::Arguments& args) { | 66 static v8::Handle<v8::Value> GetNextCallbackId(const v8::Arguments& args) { |
67 static int next_callback_id = 0; | 67 static int next_callback_id = 0; |
68 return v8::Integer::New(next_callback_id++); | 68 return v8::Integer::New(next_callback_id++); |
69 } | 69 } |
70 | 70 |
71 static v8::Handle<v8::Value> StartRequest(const v8::Arguments& args) { | 71 static v8::Handle<v8::Value> StartRequest(const v8::Arguments& args) { |
72 WebFrame* webframe = WebFrame::RetrieveActiveFrame(); | 72 // Get the current RenderView so that we can send a routed IPC message from |
73 RenderView* renderview = GetActiveRenderView(); | 73 // the correct source. |
| 74 WebFrame* webframe = WebFrame::RetrieveFrameForCurrentContext(); |
| 75 RenderView* renderview = GetRenderViewForCurrentContext(); |
74 if (!webframe || !renderview) | 76 if (!webframe || !renderview) |
75 return v8::Undefined(); | 77 return v8::Undefined(); |
76 | 78 |
77 if (args.Length() != 2 || !args[0]->IsString() || !args[1]->IsInt32()) | 79 if (args.Length() != 2 || !args[0]->IsString() || !args[1]->IsInt32()) |
78 return v8::Undefined(); | 80 return v8::Undefined(); |
79 | 81 |
80 int callback_id = args[1]->Int32Value(); | 82 int callback_id = args[1]->Int32Value(); |
81 renderview->SendExtensionRequest( | 83 renderview->SendExtensionRequest( |
82 std::string(*v8::String::AsciiValue(args.Data())), | 84 std::string(*v8::String::AsciiValue(args.Data())), |
83 std::string(*v8::String::Utf8Value(args[0])), | 85 std::string(*v8::String::Utf8Value(args[0])), |
(...skipping 21 matching lines...) Expand all Loading... |
105 code += ", '"; | 107 code += ", '"; |
106 | 108 |
107 size_t offset = code.length(); | 109 size_t offset = code.length(); |
108 code += response; | 110 code += response; |
109 ReplaceSubstringsAfterOffset(&code, offset, "\\", "\\\\"); | 111 ReplaceSubstringsAfterOffset(&code, offset, "\\", "\\\\"); |
110 ReplaceSubstringsAfterOffset(&code, offset, "'", "\\'"); | 112 ReplaceSubstringsAfterOffset(&code, offset, "'", "\\'"); |
111 code += "')"; | 113 code += "')"; |
112 | 114 |
113 frame->ExecuteScript(WebScriptSource(WebString::fromUTF8(code))); | 115 frame->ExecuteScript(WebScriptSource(WebString::fromUTF8(code))); |
114 } | 116 } |
OLD | NEW |