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

Side by Side Diff: third_party/WebKit/Source/core/inspector/InjectedScriptNative.cpp

Issue 1648523002: DevTools: move InjectedScript* to inspector/v8. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "core/inspector/InjectedScriptNative.h"
6
7 #include "platform/JSONValues.h"
8 #include "wtf/Vector.h"
9 #include "wtf/text/WTFString.h"
10
11 namespace blink {
12
13 InjectedScriptNative::InjectedScriptNative(v8::Isolate* isolate)
14 : m_lastBoundObjectId(1)
15 , m_isolate(isolate)
16 , m_idToWrappedObject(m_isolate)
17 {
18 }
19
20 static const char privateKeyName[] = "v8-inspector#injectedScript";
21
22 InjectedScriptNative::~InjectedScriptNative() { }
23
24 void InjectedScriptNative::setOnInjectedScriptHost(v8::Local<v8::Object> injecte dScriptHost)
25 {
26 v8::HandleScope handleScope(m_isolate);
27 v8::Local<v8::External> external = v8::External::New(m_isolate, this);
28 v8::Local<v8::Private> privateKey = v8::Private::ForApi(m_isolate, v8::Strin g::NewFromUtf8(m_isolate, privateKeyName));
29 injectedScriptHost->SetPrivate(m_isolate->GetCurrentContext(), privateKey, e xternal);
30 }
31
32 InjectedScriptNative* InjectedScriptNative::fromInjectedScriptHost(v8::Local<v8: :Object> injectedScriptObject)
33 {
34 v8::Isolate* isolate = injectedScriptObject->GetIsolate();
35 v8::HandleScope handleScope(isolate);
36 v8::Local<v8::Context> context = isolate->GetCurrentContext();
37 v8::Local<v8::Private> privateKey = v8::Private::ForApi(isolate, v8::String: :NewFromUtf8(isolate, privateKeyName));
38 v8::Local<v8::Value> value;
39 RELEASE_ASSERT(injectedScriptObject->GetPrivate(context, privateKey).ToLocal (&value));
40 v8::Local<v8::External> external = value.As<v8::External>();
41 void* ptr = external->Value();
42 ASSERT(ptr);
43 return static_cast<InjectedScriptNative*>(ptr);
44 }
45
46 int InjectedScriptNative::bind(v8::Local<v8::Value> value, const String& groupNa me)
47 {
48 if (m_lastBoundObjectId <= 0)
49 m_lastBoundObjectId = 1;
50 int id = m_lastBoundObjectId++;
51 m_idToWrappedObject.Set(id, value);
52 addObjectToGroup(id, groupName);
53 return id;
54 }
55
56 void InjectedScriptNative::unbind(int id)
57 {
58 m_idToWrappedObject.Remove(id);
59 m_idToObjectGroupName.remove(id);
60 }
61
62 v8::Local<v8::Value> InjectedScriptNative::objectForId(int id)
63 {
64 return m_idToWrappedObject.Get(id);
65 }
66
67 void InjectedScriptNative::addObjectToGroup(int objectId, const String& groupNam e)
68 {
69 if (groupName.isEmpty())
70 return;
71 if (objectId <= 0)
72 return;
73 m_idToObjectGroupName.set(objectId, groupName);
74 NameToObjectGroup::iterator groupIt = m_nameToObjectGroup.find(groupName);
75 if (groupIt == m_nameToObjectGroup.end())
76 m_nameToObjectGroup.set(groupName, Vector<int>()).storedValue->value.app end(objectId);
77 else
78 groupIt->value.append(objectId);
79 }
80
81 void InjectedScriptNative::releaseObjectGroup(const String& groupName)
82 {
83 if (groupName.isEmpty())
84 return;
85 NameToObjectGroup::iterator groupIt = m_nameToObjectGroup.find(groupName);
86 if (groupIt == m_nameToObjectGroup.end())
87 return;
88 for (int id : groupIt->value)
89 unbind(id);
90 m_nameToObjectGroup.remove(groupIt);
91 }
92
93 String InjectedScriptNative::groupName(int objectId) const
94 {
95 if (objectId <= 0)
96 return String();
97 return m_idToObjectGroupName.get(objectId);
98 }
99
100 } // namespace blink
101
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698