Closed Bug 1465952 Opened 2 years ago Closed 2 years ago

Make about:support display the parsed policies json

Categories

(Firefox :: Enterprise Policies, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
Firefox 63
Tracking Status
firefox62 --- wontfix
firefox63 --- fixed

People

(Reporter: Felipe, Assigned: kanika16047)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

Before we have a nice and functional about:policies page, there's an easy intermediate step that we can make to fulfill the gap.

about:support currently displays the status of the policy engine (see "Enterprise Policies" in about:support).

We could make that a clickable link that displays the parsed JSON in a new window using the built-in JSON viewer that we have.

This only requires bug 1452533 and bug 1465950 to be implemented.

To open the JSON viewer I have some code that I experimented with a while ago that I saved:

```
> let jsonblob = new Blob([JSON.stringify({foo: "bar"})], {type:"application/json"});
> let jsonurl = URL.createObjectURL(jsonblob);
> window.open(jsonurl);
```
Priority: -- → P2
Assignee: nobody → ksaini
Status: NEW → ASSIGNED
Comment on attachment 8987819 [details]
Bug 1465952 - about:support displays JSON of successfully parsed policies

https://reviewboard.mozilla.org/r/253096/#review260240

::: toolkit/content/aboutSupport.js:98
(Diff revision 1)
>          default:
>            policiesText = strings.GetStringFromName("policies.error");
>            break;
>        }
> -      $("policies-status").textContent = policiesText;
> +      $("policies-status").textContent = "(" + policiesText + ") ";
> +      let aboutPolicies = $.new("a", "about:policies", null, {href: "about:policies"});

it's weird that this button has both the href to about:policies, and the click event listener.

Before we have a functional about:policies page, let's use a different text for this link.

I think you can just make the `policiesText` link be clickable. In other words, <a>policiesText</a>

But I think it'd be nice this was only a clickable link if the status of the engine is active. I know it makes things a tad more complicated, but it will look better.

::: toolkit/content/aboutSupport.js:100
(Diff revision 1)
>            break;
>        }
> -      $("policies-status").textContent = policiesText;
> +      $("policies-status").textContent = "(" + policiesText + ") ";
> +      let aboutPolicies = $.new("a", "about:policies", null, {href: "about:policies"});
> +      aboutPolicies.addEventListener("click", function(event) {
> +        let activePoliciesJsonBlob = new Blob([JSON.stringify(Services.policies.getActivePolicies())], {type: "application/json"});

getActivePolicies() returns an object like this:

`{ BlockAboutSupport: true, BlockAboutConfig: true }`

(which is a fine behavior for getActivePolicies)


but the input json that the user provided has this wrapped in a policies object, like so:

`{ policies: { ... } }`

So it would be nice if you did the same here before stringifying, in order to make it look like the input given by the user.

::: toolkit/content/aboutSupport.js:101
(Diff revision 1)
> +        let jsonUrl = URL.createObjectURL(activePoliciesJsonBlob);
> +        window.open(jsonUrl);

after calling window.open, you should call URL.revokeObjectURL with the jsonUrl var.
Attachment #8987819 - Flags: review?(felipc)
Comment on attachment 8987819 [details]
Bug 1465952 - about:support displays JSON of successfully parsed policies

https://reviewboard.mozilla.org/r/253096/#review260368

::: toolkit/content/aboutSupport.js:97
(Diff revision 2)
>  
>          default:
>            policiesText = strings.GetStringFromName("policies.error");
>            break;
>        }
> +      if (policiesText == "Active") {

checking for the text "Active" here won't work for Firefox in other languages. So instead it should use the data.policiesStatus value.


nit: add a newline before this if

::: toolkit/content/aboutSupport.js:102
(Diff revision 2)
> +      if (policiesText == "Active") {
> +        let activePolicies = $.new("a", policiesText);
> +        activePolicies.addEventListener("click", function(event) {
> +          let activePoliciesJson = {};
> +          activePoliciesJson.policies = Services.policies.getActivePolicies();
> +          let activePoliciesJsonBlob = new Blob([JSON.stringify(activePoliciesJson)], {type: "application/json"});

nit: try to break this line into multiple ones so that it doesn't go beyond 100 chars

::: toolkit/content/aboutSupport.js:103
(Diff revision 2)
> +        let activePolicies = $.new("a", policiesText);
> +        activePolicies.addEventListener("click", function(event) {
> +          let activePoliciesJson = {};
> +          activePoliciesJson.policies = Services.policies.getActivePolicies();
> +          let activePoliciesJsonBlob = new Blob([JSON.stringify(activePoliciesJson)], {type: "application/json"});
> +          let jsonUrl = URL.createObjectURL(activePoliciesJsonBlob);

nit: name this variable jsonURL
Attachment #8987819 - Flags: review?(felipc)
Comment on attachment 8987819 [details]
Bug 1465952 - about:support displays JSON of successfully parsed policies

https://reviewboard.mozilla.org/r/253096/#review260838
Attachment #8987819 - Flags: review?(felipc) → review+
Pushed by felipc@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/1cb2bf41a61f
about:support displays JSON of successfully parsed policies r=Felipe
https://hg.mozilla.org/mozilla-central/rev/1cb2bf41a61f
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 63
Depends on: 1473157
Depends on: 1473159
Depends on: 1497928
You need to log in before you can comment on or make changes to this bug.