Commit 08446af4 authored by Luca Greco's avatar Luca Greco
Browse files

Bug 18263835 - Fix dynamic rules not converted back into Rule class instances...

Bug 18263835 - Fix dynamic rules not converted back into Rule class instances when loaded back from DNR store file. r=robwu

Differential Revision: https://phabricator.services.mozilla.com/D174641
parent 229e52a6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1334,6 +1334,7 @@ class RulesetsStore {
      let ruleQuotaCounter = new lazy.ExtensionDNR.RuleQuotaCounter();
      try {
        ruleQuotaCounter.tryAddRules("_dynamic", validatedDynamicRules);
        data.dynamicRuleset = validatedDynamicRules;
      } catch (e) {
        // This should not happen in practice, because updateDynamicRules
        // rejects quota errors. If we get here, the data on disk may have been
+14 −0
Original line number Diff line number Diff line
@@ -586,6 +586,20 @@ add_task(async function test_save_and_load_dynamic_rules() {
    expectedRules: getSchemaNormalizedRules(extension, rules),
  });

  // Verify the dynamic rules are converted back into Rule class instances
  // as expected when loaded back from the DNR store file
  Assert.ok(
    !!dnrStore._data.get(extUUID).dynamicRuleset.length,
    "Expected dynamic rules to have been loaded back from the DNR store file"
  );
  Assert.deepEqual(
    dnrStore._data
      .get(extUUID)
      .dynamicRuleset.filter(rule => rule.constructor.name !== "Rule"),
    [],
    "Expect dynamic rules loaded back from the DNR store file to be converted to Rule class instances"
  );

  Assert.deepEqual(
    dnrStore._data.get(extUUID).dynamicRuleset,
    getSchemaNormalizedRules(extension, rules),