Add const to content extension parser
[WebKit-https.git] / Source / WebCore / contentextensions / ContentExtensionParser.cpp
index 7bf56e7..5063bfb 100644 (file)
@@ -57,17 +57,16 @@ static bool containsOnlyASCIIWithNoUppercase(const String& domain)
     return true;
 }
     
-static std::error_code getDomainList(ExecState& exec, JSObject* arrayObject, Vector<String>& vector)
+static std::error_code getDomainList(ExecState& exec, const JSObject* arrayObject, Vector<String>& vector)
 {
     ASSERT(vector.isEmpty());
     if (!arrayObject || !isJSArray(arrayObject))
         return ContentExtensionError::JSONInvalidDomainList;
-    JSArray* array = jsCast<JSArray*>(arrayObject);
+    const JSArray* array = jsCast<const JSArray*>(arrayObject);
     
     unsigned length = array->length();
     for (unsigned i = 0; i < length; ++i) {
-        // FIXME: JSObject::getIndex should be marked as const.
-        JSValue value = array->getIndex(&exec, i);
+        const JSValue value = array->getIndex(&exec, i);
         if (exec.hadException() || !value.isString())
             return ContentExtensionError::JSONInvalidDomainList;
         
@@ -87,15 +86,15 @@ static std::error_code getTypeFlags(ExecState& exec, const JSValue& typeValue, R
     if (!typeValue.isObject())
         return { };
 
-    JSObject* object = typeValue.toObject(&exec);
+    const JSObject* object = typeValue.toObject(&exec);
     if (!isJSArray(object))
         return ContentExtensionError::JSONInvalidTriggerFlagsArray;
 
-    JSArray* array = jsCast<JSArray*>(object);
+    const JSArray* array = jsCast<const JSArray*>(object);
     
     unsigned length = array->length();
     for (unsigned i = 0; i < length; ++i) {
-        JSValue value = array->getIndex(&exec, i);
+        const JSValue value = array->getIndex(&exec, i);
         if (exec.hadException() || !value)
             return ContentExtensionError::JSONInvalidObjectInTriggerFlagsArray;
         
@@ -110,13 +109,13 @@ static std::error_code getTypeFlags(ExecState& exec, const JSValue& typeValue, R
     return { };
 }
     
-static std::error_code loadTrigger(ExecState& exec, JSObject& ruleObject, Trigger& trigger)
+static std::error_code loadTrigger(ExecState& exec, const JSObject& ruleObject, Trigger& trigger)
 {
-    JSValue triggerObject = ruleObject.get(&exec, Identifier::fromString(&exec, "trigger"));
+    const JSValue triggerObject = ruleObject.get(&exec, Identifier::fromString(&exec, "trigger"));
     if (!triggerObject || exec.hadException() || !triggerObject.isObject())
         return ContentExtensionError::JSONInvalidTrigger;
     
-    JSValue urlFilterObject = triggerObject.get(&exec, Identifier::fromString(&exec, "url-filter"));
+    const JSValue urlFilterObject = triggerObject.get(&exec, Identifier::fromString(&exec, "url-filter"));
     if (!urlFilterObject || exec.hadException() || !urlFilterObject.isString())
         return ContentExtensionError::JSONInvalidURLFilterInTrigger;
 
@@ -126,11 +125,11 @@ static std::error_code loadTrigger(ExecState& exec, JSObject& ruleObject, Trigge
 
     trigger.urlFilter = urlFilter;
 
-    JSValue urlFilterCaseValue = triggerObject.get(&exec, Identifier::fromString(&exec, "url-filter-is-case-sensitive"));
+    const JSValue urlFilterCaseValue = triggerObject.get(&exec, Identifier::fromString(&exec, "url-filter-is-case-sensitive"));
     if (urlFilterCaseValue && !exec.hadException() && urlFilterCaseValue.isBoolean())
         trigger.urlFilterIsCaseSensitive = urlFilterCaseValue.toBoolean(&exec);
 
-    JSValue resourceTypeValue = triggerObject.get(&exec, Identifier::fromString(&exec, "resource-type"));
+    const JSValue resourceTypeValue = triggerObject.get(&exec, Identifier::fromString(&exec, "resource-type"));
     if (!exec.hadException() && resourceTypeValue.isObject()) {
         auto typeFlagsError = getTypeFlags(exec, resourceTypeValue, trigger.flags, readResourceType);
         if (typeFlagsError)
@@ -138,7 +137,7 @@ static std::error_code loadTrigger(ExecState& exec, JSObject& ruleObject, Trigge
     } else if (!resourceTypeValue.isUndefined())
         return ContentExtensionError::JSONInvalidTriggerFlagsArray;
 
-    JSValue loadTypeValue = triggerObject.get(&exec, Identifier::fromString(&exec, "load-type"));
+    const JSValue loadTypeValue = triggerObject.get(&exec, Identifier::fromString(&exec, "load-type"));
     if (!exec.hadException() && loadTypeValue.isObject()) {
         auto typeFlagsError = getTypeFlags(exec, loadTypeValue, trigger.flags, readLoadType);
         if (typeFlagsError)
@@ -146,7 +145,7 @@ static std::error_code loadTrigger(ExecState& exec, JSObject& ruleObject, Trigge
     } else if (!loadTypeValue.isUndefined())
         return ContentExtensionError::JSONInvalidTriggerFlagsArray;
 
-    JSValue ifDomain = triggerObject.get(&exec, Identifier::fromString(&exec, "if-domain"));
+    const JSValue ifDomain = triggerObject.get(&exec, Identifier::fromString(&exec, "if-domain"));
     if (!exec.hadException() && ifDomain.isObject()) {
         auto ifDomainError = getDomainList(exec, asObject(ifDomain), trigger.domains);
         if (ifDomainError)
@@ -158,7 +157,7 @@ static std::error_code loadTrigger(ExecState& exec, JSObject& ruleObject, Trigge
     } else if (!ifDomain.isUndefined())
         return ContentExtensionError::JSONInvalidDomainList;
     
-    JSValue unlessDomain = triggerObject.get(&exec, Identifier::fromString(&exec, "unless-domain"));
+    const JSValue unlessDomain = triggerObject.get(&exec, Identifier::fromString(&exec, "unless-domain"));
     if (!exec.hadException() && unlessDomain.isObject()) {
         if (trigger.domainCondition != Trigger::DomainCondition::None)
             return ContentExtensionError::JSONUnlessAndIfDomain;
@@ -174,13 +173,13 @@ static std::error_code loadTrigger(ExecState& exec, JSObject& ruleObject, Trigge
     return { };
 }
 
-static std::error_code loadAction(ExecState& exec, JSObject& ruleObject, Action& action)
+static std::error_code loadAction(ExecState& exec, const JSObject& ruleObject, Action& action)
 {
-    JSValue actionObject = ruleObject.get(&exec, Identifier::fromString(&exec, "action"));
+    const JSValue actionObject = ruleObject.get(&exec, Identifier::fromString(&exec, "action"));
     if (!actionObject || exec.hadException() || !actionObject.isObject())
         return ContentExtensionError::JSONInvalidAction;
 
-    JSValue typeObject = actionObject.get(&exec, Identifier::fromString(&exec, "type"));
+    const JSValue typeObject = actionObject.get(&exec, Identifier::fromString(&exec, "type"));
     if (!typeObject || exec.hadException() || !typeObject.isString())
         return ContentExtensionError::JSONInvalidActionType;
 
@@ -204,7 +203,7 @@ static std::error_code loadAction(ExecState& exec, JSObject& ruleObject, Action&
     return { };
 }
 
-static std::error_code loadRule(ExecState& exec, JSObject& ruleObject, Vector<ContentExtensionRule>& ruleList)
+static std::error_code loadRule(ExecState& exec, const JSObject& ruleObject, Vector<ContentExtensionRule>& ruleList)
 {
     Trigger trigger;
     auto triggerError = loadTrigger(exec, ruleObject, trigger);
@@ -223,7 +222,7 @@ static std::error_code loadRule(ExecState& exec, JSObject& ruleObject, Vector<Co
 static std::error_code loadEncodedRules(ExecState& exec, const String& rules, Vector<ContentExtensionRule>& ruleList)
 {
     // FIXME: JSONParse should require callbacks instead of an ExecState.
-    JSValue decodedRules = JSONParse(&exec, rules);
+    const JSValue decodedRules = JSONParse(&exec, rules);
 
     if (exec.hadException() || !decodedRules)
         return ContentExtensionError::JSONInvalid;
@@ -231,14 +230,14 @@ static std::error_code loadEncodedRules(ExecState& exec, const String& rules, Ve
     if (!decodedRules.isObject())
         return ContentExtensionError::JSONTopLevelStructureNotAnObject;
 
-    JSObject* topLevelObject = decodedRules.toObject(&exec);
+    const JSObject* topLevelObject = decodedRules.toObject(&exec);
     if (!topLevelObject || exec.hadException())
         return ContentExtensionError::JSONTopLevelStructureNotAnObject;
     
     if (!isJSArray(topLevelObject))
         return ContentExtensionError::JSONTopLevelStructureNotAnArray;
 
-    JSArray* topLevelArray = jsCast<JSArray*>(topLevelObject);
+    const JSArray* topLevelArray = jsCast<const JSArray*>(topLevelObject);
 
     Vector<ContentExtensionRule> localRuleList;
 
@@ -247,11 +246,11 @@ static std::error_code loadEncodedRules(ExecState& exec, const String& rules, Ve
     if (length > maxRuleCount)
         return ContentExtensionError::JSONTooManyRules;
     for (unsigned i = 0; i < length; ++i) {
-        JSValue value = topLevelArray->getIndex(&exec, i);
+        const JSValue value = topLevelArray->getIndex(&exec, i);
         if (exec.hadException() || !value)
             return ContentExtensionError::JSONInvalidObjectInTopLevelArray;
 
-        JSObject* ruleObject = value.toObject(&exec);
+        const JSObject* ruleObject = value.toObject(&exec);
         if (!ruleObject || exec.hadException())
             return ContentExtensionError::JSONInvalidRule;