Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: chrome/renderer/extensions/chrome_v8_extension.cc

Issue 8277020: Stop copying extension bindings scripts. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/chrome_v8_extension.h" 5 #include "chrome/renderer/extensions/chrome_v8_extension.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 21 matching lines...) Expand all
32 typedef std::map<int, std::string> StringMap; 32 typedef std::map<int, std::string> StringMap;
33 static base::LazyInstance<StringMap> g_string_map(base::LINKER_INITIALIZED); 33 static base::LazyInstance<StringMap> g_string_map(base::LINKER_INITIALIZED);
34 34
35 static base::LazyInstance<ChromeV8Extension::InstanceSet> g_instances( 35 static base::LazyInstance<ChromeV8Extension::InstanceSet> g_instances(
36 base::LINKER_INITIALIZED); 36 base::LINKER_INITIALIZED);
37 37
38 } // namespace 38 } // namespace
39 39
40 40
41 // static 41 // static
42 const char* ChromeV8Extension::GetStringResource(int resource_id) { 42 base::StringPiece
43 StringMap* strings = g_string_map.Pointer(); 43 ChromeV8Extension::GetStringResourceAsStringPiece(int resource_id) {
44 StringMap::iterator it = strings->find(resource_id); 44 return ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id);
45 if (it == strings->end()) { 45 }
46 it = strings->insert(std::make_pair( 46
47 resource_id, 47 int ChromeV8Extension::GetStringResourceLength(int resource_id) {
48 ResourceBundle::GetSharedInstance().GetRawDataResource( 48 return ChromeV8Extension::GetStringResourceAsStringPiece(resource_id).size();
49 resource_id).as_string())).first;
50 }
51 return it->second.c_str();
52 } 49 }
53 50
54 // static 51 // static
55 content::RenderView* ChromeV8Extension::GetCurrentRenderView() { 52 content::RenderView* ChromeV8Extension::GetCurrentRenderView() {
56 WebFrame* webframe = WebFrame::frameForCurrentContext(); 53 WebFrame* webframe = WebFrame::frameForCurrentContext();
57 DCHECK(webframe) << "RetrieveCurrentFrame called when not in a V8 context."; 54 DCHECK(webframe) << "RetrieveCurrentFrame called when not in a V8 context.";
58 if (!webframe) 55 if (!webframe)
59 return NULL; 56 return NULL;
60 57
61 WebView* webview = webframe->view(); 58 WebView* webview = webframe->view();
62 if (!webview) 59 if (!webview)
63 return NULL; // can happen during closing 60 return NULL; // can happen during closing
64 61
65 content::RenderView* renderview = content::RenderView::FromWebView(webview); 62 content::RenderView* renderview = content::RenderView::FromWebView(webview);
66 DCHECK(renderview) << "Encountered a WebView without a WebViewDelegate"; 63 DCHECK(renderview) << "Encountered a WebView without a WebViewDelegate";
67 return renderview; 64 return renderview;
68 } 65 }
69 66
70 ChromeV8Extension::ChromeV8Extension(const char* name, int resource_id, 67 ChromeV8Extension::ChromeV8Extension(const char* name, int resource_id,
71 ExtensionDispatcher* extension_dispatcher) 68 ExtensionDispatcher* extension_dispatcher)
72 : v8::Extension(name, 69 : v8::Extension(name,
73 GetStringResource(resource_id), 70 GetStringResourceAsStringPiece(resource_id).data(),
74 0, // num dependencies 71 0, // num dependencies
75 NULL), // dependencies array 72 NULL, // dependencies array
73 GetStringResourceLength(resource_id)), // source length
76 extension_dispatcher_(extension_dispatcher) { 74 extension_dispatcher_(extension_dispatcher) {
77 g_instances.Get().insert(this); 75 g_instances.Get().insert(this);
78 } 76 }
79 77
80 ChromeV8Extension::ChromeV8Extension(const char* name, int resource_id, 78 ChromeV8Extension::ChromeV8Extension(const char* name, int resource_id,
81 int dependency_count, 79 int dependency_count,
82 const char** dependencies, 80 const char** dependencies,
83 ExtensionDispatcher* extension_dispatcher) 81 ExtensionDispatcher* extension_dispatcher)
84 : v8::Extension(name, 82 : v8::Extension(name,
85 GetStringResource(resource_id), 83 GetStringResourceAsStringPiece(resource_id).data(),
86 dependency_count, 84 dependency_count,
87 dependencies), 85 dependencies,
86 GetStringResourceLength(resource_id)),
88 extension_dispatcher_(extension_dispatcher) { 87 extension_dispatcher_(extension_dispatcher) {
89 g_instances.Get().insert(this); 88 g_instances.Get().insert(this);
90 } 89 }
91 90
92 ChromeV8Extension::~ChromeV8Extension() { 91 ChromeV8Extension::~ChromeV8Extension() {
93 g_instances.Get().erase(this); 92 g_instances.Get().erase(this);
94 } 93 }
95 94
96 // static 95 // static
97 const ChromeV8Extension::InstanceSet& ChromeV8Extension::GetAll() { 96 const ChromeV8Extension::InstanceSet& ChromeV8Extension::GetAll() {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 if (args.Length() < 1) 212 if (args.Length() < 1)
214 return v8::Undefined(); 213 return v8::Undefined();
215 214
216 std::vector<std::string> components; 215 std::vector<std::string> components;
217 for (int i = 0; i < args.Length(); ++i) 216 for (int i = 0; i < args.Length(); ++i)
218 components.push_back(*v8::String::Utf8Value(args[i]->ToString())); 217 components.push_back(*v8::String::Utf8Value(args[i]->ToString()));
219 218
220 LOG(ERROR) << JoinString(components, ','); 219 LOG(ERROR) << JoinString(components, ',');
221 return v8::Undefined(); 220 return v8::Undefined();
222 } 221 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698