PropertyQueryFlags JavascriptStringObject::GetPropertyQuery(Var originalInstance, PropertyId propertyId, Var* value, PropertyValueInfo* info, ScriptContext* requestContext) { BOOL result; if (GetPropertyBuiltIns(propertyId, value, requestContext, &result)) { return JavascriptConversion::BooleanToPropertyQueryFlags(result); } if (JavascriptConversion::PropertyQueryFlagsToBoolean(DynamicObject::GetPropertyQuery(originalInstance, propertyId, value, info, requestContext))) { return PropertyQueryFlags::Property_Found; } // For NumericPropertyIds check that index is less than JavascriptString length ScriptContext*scriptContext = GetScriptContext(); uint32 index; if (scriptContext->IsNumericPropertyId(propertyId, &index)) { JavascriptString* str = this->InternalUnwrap(); str = JavascriptString::FromVar(CrossSite::MarshalVar(requestContext, str, scriptContext)); return JavascriptConversion::BooleanToPropertyQueryFlags(str->GetItemAt(index, value)); } *value = requestContext->GetMissingPropertyResult(); return PropertyQueryFlags::Property_NotFound; }
BOOL JavascriptStringObject::GetProperty(Var originalInstance, PropertyId propertyId, Var* value, PropertyValueInfo* info, ScriptContext* requestContext) { BOOL result; if (GetPropertyBuiltIns(propertyId, value, requestContext, &result)) { return result; } if (DynamicObject::GetProperty(originalInstance, propertyId, value, info, requestContext)) { return true; } // For NumericPropertyIds check that index is less than JavascriptString length ScriptContext*scriptContext = GetScriptContext(); uint32 index; if (scriptContext->IsNumericPropertyId(propertyId, &index)) { JavascriptString* str = JavascriptString::FromVar(CrossSite::MarshalVar(requestContext, this->InternalUnwrap())); return str->GetItemAt(index, value); } *value = requestContext->GetMissingPropertyResult(); return false; }
BOOL JavascriptStringObject::GetItem(Var originalInstance, uint32 index, Var* value, ScriptContext* requestContext) { JavascriptString* str = JavascriptString::FromVar(CrossSite::MarshalVar(requestContext, this->InternalUnwrap())); if (str->GetItemAt(index, value)) { return true; } return DynamicObject::GetItem(originalInstance, index, value, requestContext); }
PropertyQueryFlags JavascriptStringObject::GetItemQuery(Var originalInstance, uint32 index, Var* value, ScriptContext* requestContext) { Var strObject = CrossSite::MarshalVar(requestContext, this->InternalUnwrap(), this->GetScriptContext()); JavascriptString* str = JavascriptString::FromVar(strObject); if (str->GetItemAt(index, value)) { return PropertyQueryFlags::Property_Found; } return DynamicObject::GetItemQuery(originalInstance, index, value, requestContext); }