OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007-2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2007-2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 DevToolsHost* devtoolsHost = V8DevToolsHost::toImpl(info.Holder()); | 123 DevToolsHost* devtoolsHost = V8DevToolsHost::toImpl(info.Holder()); |
124 Vector<ContextMenuItem> items = menu.items(); | 124 Vector<ContextMenuItem> items = menu.items(); |
125 devtoolsHost->showContextMenu(event, items); | 125 devtoolsHost->showContextMenu(event, items); |
126 } | 126 } |
127 | 127 |
128 void V8DevToolsHost::showContextMenuAtPointMethodCustom(const v8::FunctionCallba
ckInfo<v8::Value>& info) | 128 void V8DevToolsHost::showContextMenuAtPointMethodCustom(const v8::FunctionCallba
ckInfo<v8::Value>& info) |
129 { | 129 { |
130 if (info.Length() < 3) | 130 if (info.Length() < 3) |
131 return; | 131 return; |
132 | 132 |
133 v8::Local<v8::Value> x = v8::Local<v8::Value>::Cast(info[0]); | 133 ExceptionState exceptionState(ExceptionState::ExecutionContext, "showContext
MenuAtPoint", "DevToolsHost", info.Holder(), info.GetIsolate()); |
134 if (!x->IsNumber()) | |
135 return; | |
136 | 134 |
137 v8::Local<v8::Value> y = v8::Local<v8::Value>::Cast(info[1]); | 135 TONATIVE_VOID_EXCEPTIONSTATE(float, x, toRestrictedFloat(info[0], exceptionS
tate), exceptionState); |
138 if (!y->IsNumber()) | 136 TONATIVE_VOID_EXCEPTIONSTATE(float, y, toRestrictedFloat(info[1], exceptionS
tate), exceptionState); |
139 return; | |
140 | 137 |
141 v8::Local<v8::Value> array = v8::Local<v8::Value>::Cast(info[2]); | 138 v8::Local<v8::Value> array = v8::Local<v8::Value>::Cast(info[2]); |
142 if (!array->IsArray()) | 139 if (!array->IsArray()) |
143 return; | 140 return; |
144 ContextMenu menu; | 141 ContextMenu menu; |
145 if (!populateContextMenuItems(v8::Local<v8::Array>::Cast(array), menu, info.
GetIsolate())) | 142 if (!populateContextMenuItems(v8::Local<v8::Array>::Cast(array), menu, info.
GetIsolate())) |
146 return; | 143 return; |
147 | 144 |
148 Document* document = nullptr; | 145 Document* document = nullptr; |
149 if (info.Length() >= 4 && v8::Local<v8::Value>::Cast(info[3])->IsObject()) { | 146 if (info.Length() >= 4 && v8::Local<v8::Value>::Cast(info[3])->IsObject()) { |
150 v8::Local<v8::Object> documentWrapper = v8::Local<v8::Object>::Cast(info
[3]); | 147 v8::Local<v8::Object> documentWrapper = v8::Local<v8::Object>::Cast(info
[3]); |
151 if (!V8HTMLDocument::wrapperTypeInfo.equals(toWrapperTypeInfo(documentWr
apper))) | 148 if (!V8HTMLDocument::wrapperTypeInfo.equals(toWrapperTypeInfo(documentWr
apper))) |
152 return; | 149 return; |
153 document = V8HTMLDocument::toImpl(documentWrapper); | 150 document = V8HTMLDocument::toImpl(documentWrapper); |
154 } else { | 151 } else { |
155 v8::Isolate* isolate = info.GetIsolate(); | 152 v8::Isolate* isolate = info.GetIsolate(); |
156 v8::Handle<v8::Object> windowWrapper = V8Window::findInstanceInPrototype
Chain(isolate->GetEnteredContext()->Global(), isolate); | 153 v8::Handle<v8::Object> windowWrapper = V8Window::findInstanceInPrototype
Chain(isolate->GetEnteredContext()->Global(), isolate); |
157 if (windowWrapper.IsEmpty()) | 154 if (windowWrapper.IsEmpty()) |
158 return; | 155 return; |
159 DOMWindow* window = V8Window::toImpl(windowWrapper); | 156 DOMWindow* window = V8Window::toImpl(windowWrapper); |
160 document = window ? toLocalDOMWindow(window)->document() : nullptr; | 157 document = window ? toLocalDOMWindow(window)->document() : nullptr; |
161 } | 158 } |
162 if (!document || !document->frame()) | 159 if (!document || !document->frame()) |
163 return; | 160 return; |
164 | 161 |
165 DevToolsHost* devtoolsHost = V8DevToolsHost::toImpl(info.Holder()); | 162 DevToolsHost* devtoolsHost = V8DevToolsHost::toImpl(info.Holder()); |
166 Vector<ContextMenuItem> items = menu.items(); | 163 Vector<ContextMenuItem> items = menu.items(); |
167 devtoolsHost->showContextMenu(document->frame(), static_cast<float>(x->Numbe
rValue()), static_cast<float>(y->NumberValue()), items); | 164 devtoolsHost->showContextMenu(document->frame(), x, y, items); |
168 } | 165 } |
169 | 166 |
170 } // namespace blink | 167 } // namespace blink |
171 | 168 |
OLD | NEW |