| Index: Source/bindings/core/v8/custom/V8InjectedScriptHostCustom.cpp
|
| diff --git a/Source/bindings/core/v8/custom/V8InjectedScriptHostCustom.cpp b/Source/bindings/core/v8/custom/V8InjectedScriptHostCustom.cpp
|
| index 17e238d1d7cc8cdee7ef7b121163b136ca644f3c..471b44867b5847a0a9b709f8767a7447fdcbc93f 100644
|
| --- a/Source/bindings/core/v8/custom/V8InjectedScriptHostCustom.cpp
|
| +++ b/Source/bindings/core/v8/custom/V8InjectedScriptHostCustom.cpp
|
| @@ -139,24 +139,16 @@ void V8InjectedScriptHost::internalConstructorNameMethodCustom(const v8::Functio
|
| v8SetReturnValue(info, result);
|
| }
|
|
|
| -void V8InjectedScriptHost::isHTMLAllCollectionMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| +void V8InjectedScriptHost::isDOMWrapperMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| if (info.Length() < 1)
|
| return;
|
|
|
| - if (!info[0]->IsObject()) {
|
| - v8SetReturnValue(info, false);
|
| - return;
|
| - }
|
| -
|
| - v8SetReturnValue(info, V8HTMLAllCollection::hasInstance(info[0], info.GetIsolate()));
|
| + v8SetReturnValue(info, V8DOMWrapper::isWrapper(info.GetIsolate(), info[0]));
|
| }
|
|
|
| -void V8InjectedScriptHost::isPopularDOMObjectMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| +void V8InjectedScriptHost::isHTMLAllCollectionMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| - // FIXME: Stop using this function (whilelisting) once we come up with a way
|
| - // to distinguish DOM wrappers from other obejcts.
|
| -
|
| if (info.Length() < 1)
|
| return;
|
|
|
| @@ -165,27 +157,7 @@ void V8InjectedScriptHost::isPopularDOMObjectMethodCustom(const v8::FunctionCall
|
| return;
|
| }
|
|
|
| - v8::Local<v8::Value> object = info[0];
|
| - v8::Isolate* isolate = info.GetIsolate();
|
| - bool isPopularDOMObject = false;
|
| - static bool (*hasInstances[])(v8::Local<v8::Value>, v8::Isolate*) = {
|
| - V8Blob::hasInstance,
|
| - V8DOMError::hasInstance,
|
| - V8DOMException::hasInstance,
|
| - V8Element::hasInstance,
|
| - V8Event::hasInstance,
|
| - V8EventTarget::hasInstance,
|
| - V8Location::hasInstance,
|
| - V8Navigator::hasInstance,
|
| - };
|
| - for (size_t i = 0; i < sizeof hasInstances / sizeof *hasInstances; ++i) {
|
| - if (hasInstances[i](object, isolate)) {
|
| - isPopularDOMObject = true;
|
| - break;
|
| - }
|
| - }
|
| -
|
| - v8SetReturnValue(info, isPopularDOMObject);
|
| + v8SetReturnValue(info, V8HTMLAllCollection::hasInstance(info[0], info.GetIsolate()));
|
| }
|
|
|
| void V8InjectedScriptHost::isTypedArrayMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| @@ -580,6 +552,30 @@ void V8InjectedScriptHost::setNonEnumPropertyMethodCustom(const v8::FunctionCall
|
| object->ForceSet(info[1], info[2], v8::DontEnum);
|
| }
|
|
|
| +void V8InjectedScriptHost::getDOMAttributesWithObservableSideEffectOnGetMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| +{
|
| + // Returns DOM attributes which have observable side effect on getter,
|
| + // in the form of
|
| + // {interfaceName1: {attributeName1: true,
|
| + // attributeName2: true,
|
| + // ...},
|
| + // interfaceName2: {...},
|
| + // ...}
|
| + // These attributes should not be evaluated in the Inspector.
|
| +
|
| + typedef Vector<std::pair<String, bool>> AttributeSet;
|
| + AttributeSet requestAttributes;
|
| + requestAttributes.append(std::make_pair("body", true));
|
| + AttributeSet responseAttributes;
|
| + responseAttributes.append(std::make_pair("body", true));
|
| +
|
| + Vector<std::pair<String, AttributeSet>> attributesWithSideEffect;
|
| + attributesWithSideEffect.append(std::make_pair("Request", requestAttributes));
|
| + attributesWithSideEffect.append(std::make_pair("Response", responseAttributes));
|
| +
|
| + v8SetReturnValue(info, toV8(attributesWithSideEffect, info.Holder(), info.GetIsolate()));
|
| +}
|
| +
|
| void V8InjectedScriptHost::bindMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
|
| {
|
| if (info.Length() < 2 || !info[1]->IsString())
|
|
|