Bug 1596133 - AbuseReporter.queryAMOAddonDetails should normalize type 'statictheme' into type 'theme'. r=mixedpuppy a=pascalc
authorLuca Greco <lgreco@mozilla.com>
Wed, 13 Nov 2019 18:02:22 +0000
changeset 560075 b6d13adc8be1ae29bf821bd0d1328d51d526efd5
parent 560074 fd6da23163020fc2f1046a72343e0d9c289cd0c3
child 560076 73a6d9d8995febd9286859b6cc80979fa2455cc3
push id12320
push useropoprus@mozilla.com
push dateMon, 18 Nov 2019 14:50:50 +0000
treeherdermozilla-beta@a25e8472d4ff [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmixedpuppy, pascalc
bugs1596133
milestone71.0
Bug 1596133 - AbuseReporter.queryAMOAddonDetails should normalize type 'statictheme' into type 'theme'. r=mixedpuppy a=pascalc The addon details returned from the AMO API endpoint for webextensions static themes is type "statictheme", but for an installed WebExtension static theme we expect addon.type to be "theme", and so AbuseReporter.queryAMOAddonDetails should normalize the type received to ensure it matches what Firefox expects. This fix is needed to ensure that reporting a "not installed" theme from AMO works as expected (see https://github.com/mozilla/addons-frontend/issues/8762#issuecomment-553430081). Differential Revision: https://phabricator.services.mozilla.com/D52853
toolkit/mozapps/extensions/AbuseReporter.jsm
toolkit/mozapps/extensions/test/xpcshell/test_AbuseReporter.js
--- a/toolkit/mozapps/extensions/AbuseReporter.jsm
+++ b/toolkit/mozapps/extensions/AbuseReporter.jsm
@@ -248,22 +248,27 @@ const AbuseReporter = {
         return value;
       }
       return value && (value[locale] || value["en-US"]);
     };
 
     const getAuthorField = fieldName =>
       details.authors && details.authors[0] && details.authors[0][fieldName];
 
+    // Normalize type "statictheme" (which is the type used on the AMO API side)
+    // into "theme" (because it is the type we use and expect on the Firefox side
+    // for this addon type).
+    const addonType = details.type === "statictheme" ? "theme" : details.type;
+
     return {
       id: addonId,
       name: getTranslatedValue(details.name),
       version: details.current_version.version,
       description: getTranslatedValue(details.summary),
-      type: details.type,
+      type: addonType,
       iconURL: details.icon_url,
       homepageURL: getTranslatedValue(details.homepage),
       supportURL: getTranslatedValue(details.support_url),
       // Set the addon creator to the first author in the AMO details.
       creator: {
         name: getAuthorField("name"),
         url: getAuthorField("url"),
       },
--- a/toolkit/mozapps/extensions/test/xpcshell/test_AbuseReporter.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_AbuseReporter.js
@@ -858,8 +858,23 @@ add_task(async function test_query_amo_d
     addon_name: FAKE_AMO_DETAILS.name["en-US"],
   };
   await assertReportOnAMODetails({ addonId, expectedReport });
 
   Services.prefs.clearUserPref(PREF_REQUIRED_LOCALE);
 
   amoAddonDetailsMap.clear();
 });
+
+add_task(async function test_statictheme_normalized_into_type_theme() {
+  const themeId = "not-installed-statictheme@mochi.test";
+  amoAddonDetailsMap.set(themeId, {
+    ...FAKE_AMO_DETAILS,
+    type: "statictheme",
+  });
+
+  const report = await AbuseReporter.createAbuseReport(themeId, REPORT_OPTIONS);
+
+  equal(report.addon.id, themeId, "Got a report for the expected theme id");
+  equal(report.addon.type, "theme", "Got the expected addon type");
+
+  amoAddonDetailsMap.clear();
+});