Firefox 3.6 does not honour lockPref

Bug #541951 reported by Torsten Spindler
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mozilla Firefox
Fix Released
Medium
firefox (Ubuntu)
Fix Released
Medium
Chris Coulson

Bug Description

Binary package hint: firefox

In firefox 3.5 the following worked:
Set
lockPref("network.proxy.type", 5);
in /etc/firefox-3.5/pref/firefox.js

Setting lockPref in /etc/firefox/pref/firefox.js in firefox 3.6 does not lock down the proxy.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Created an attachment (id=326061)
patch

Obviously, neither the debian changelog nor the fprintf should be in the patch. The first patch doesn't exist. You haven't seen it. The only patch existing is this one.

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

Because I apparently inherited ownership of this code by default, I'm going to need some more summary here:

* what is the motivation for this change?
* where did lockPref use to work? In what new cases are we making it work?
* I'm going to need tests. I think writing an xpcshell test for this shouldn't be too hard.

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

(From update of attachment 326061)
canceling review request until questions are answered

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

(In reply to comment #2)
> Because I apparently inherited ownership of this code by default, I'm going to
> need some more summary here:
>
> * what is the motivation for this change?
> * where did lockPref use to work? In what new cases are we making it work?

lockPref is an exclusive feature of the autoconfig stuff right now. Autoconfig uses a single file, located in the application directory, and which name is given by the general.config.filename preference, with pseudo security featured by a general.config.obscure_value preference.

Autoconfig also allows to use javascript constructs, contrary to standard pref files that are limited to pref() and user_pref().

The problem we had in debian is that we need to lock some preferences, to avoid users to harm themselves with bad preferences. app.update.enable, for instance. The first solution was to use the general.config.filename/obscure_value pair to just do that. The problem is that this file being provided by the package, it is also overwritten on any package upgrade, which means admins needing to use autoconfig just can't.

I found it a convenient way to solve this by allowing standard preferences to lock preferences.

I'm pretty sure you can find some other uses to this feature.

> * I'm going to need tests. I think writing an xpcshell test for this shouldn't
> be too hard.

Can you still review the patch without the tests ?

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

Frankly, to solve the specific case of Debian users trying to enable updates, I think the best course of action is to get rid of the app.update.url pref from the Debian builds: then even if the user were to turn updates on, nothing bad could happen.

I'm trying to find somebody to help walk through the twisted jungle here; this is not likely to make it for FF3.1 because it touches something close to PAC, which is some of our most fragile code.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

This has nothing to do with app.update.url, but with admins wanting to lock some prefs to their users without fidling with general.config.filename.

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

Which may be a worthwhile use case, but I'm pretty sure we don't want extensions to be able to lock preferences (for example), and it's not clear to me that we distinguish between admins and extensions very well.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Actually, AFAIK, an extension can already lock preferences...

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

(From update of attachment 326061)
At least extensions should not be allowed to set locked prefs, so r-. I'm not sure what the right design is.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

As I said, extensions can already lock preferences...

Revision history for this message
In , Reed Loden (reed) wrote :

(From update of attachment 326061)
Re-requesting review due to glandium's overlooked comment.

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

How can an extension lock preferences?

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Created an attachment (id=347810)
extension locking a pref

This is one way i was thinking of for an extension to lock a preference. There are, I guess, many others.

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

*** Bug 467738 has been marked as a duplicate of this bug. ***

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

(From update of attachment 326061)
ok, yes, extensions can do anything. I don't think we want them doing this, and this will be an attractive nuisance.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

The point is, extensions already can lock prefs, so why not allow this patch, which doesn't change that, and file another bug to prevent extensions from locking prefs ?

Revision history for this message
Torsten Spindler (tspindler) wrote :

Binary package hint: firefox

In firefox 3.5 the following worked:
Set
lockPref("network.proxy.type", 5);
in /etc/firefox-3.5/pref/firefox.js

Setting lockPref in /etc/firefox/pref/firefox.js in firefox 3.6 does not lock down the proxy.

Revision history for this message
Torsten Spindler (tspindler) wrote :

Putting the lockPref in /usr/lib/firefox/firefox.txt seems to work.

Revision history for this message
Torsten Spindler (tspindler) wrote :

unfortunately the work around above does not work reliably, today the preference in question is no longer locked.

Revision history for this message
Torsten Spindler (tspindler) wrote :

The attached patch taken from xulrunner-1.9.2 enables lockdown of preferences for firefox 3.6+nobinonly-0ubuntu6. I merely changed the path names from xulrunner to mozilla.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

(From update of attachment 326061)
Re-requesting review per comment #16

Revision history for this message
Josh Holland (jshholland) wrote :

I will apply the patch to the Firefox package and upload it in a branch shortly.

Changed in firefox (Ubuntu):
status: New → In Progress
assignee: nobody → Josh Holland (jshholland)
Revision history for this message
Micah Gersten (micahg) wrote :

Reassigning to Chris Coulson

Changed in firefox (Ubuntu):
assignee: Josh Holland (jshholland) → Chris Coulson (chrisccoulson)
importance: Undecided → Medium
Changed in firefox:
status: Unknown → In Progress
Changed in firefox (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package firefox - 3.6.3+nobinonly-0ubuntu2

---------------
firefox (3.6.3+nobinonly-0ubuntu2) lucid; urgency=low

  [ Chris Coulson <email address hidden> ]
  * Fix LP: #526291 - abrowser menu entry has Firefox icon. After changing the
    branding in common-post-build-arch, ensure that the firefox icons in
    dist/bin/icons are replaced with the abrowser icons
    - update debian/rules
  * Fix LP: #408238 - does not provide gnome-www-browser
    - update debian/firefox-gnome-support.postinst.in
    - add debian/firefox-gnome-support.prerm.in
    - update debian/rules
  * Update Google and Yahoo! search URL's
    - add debian/patches/ubuntu_codes_google.patch
    - update debian/patches/series
    - update debian/firefox.js
  * Fix LP: #520166 - Restore ability to set a preferred plugin for a given
    mime-type, which regressed since we are not using the system xulrunner
    - add debian/patches/bzXXX_plugin_for_mimetype_pref.patch
    - update debian/patches/series
  * Fix LP: #557640 - nrf-003 testcase failed Default "Welcome to Ubuntu" page
    doesn't appear without connectivity - re-enable the NetworkManager
    integration
    - update debian/firefox.js
  * Fix LP: #541951 - Firefox 3.6 does not honour lockPref - resurrect the
    patch used in xulrunner to reimplement this
    - add debian/patches/bz467738_att351145_lockPref_everywhere.patch
    - update debian/patches/series

  [ Jamie Strandboge <email address hidden> ]
  * AppArmor:
    - add apturl (LP: #558432)
 -- Chris Coulson <email address hidden> Fri, 09 Apr 2010 12:29:53 +0100

Changed in firefox (Ubuntu):
status: Fix Committed → Fix Released
Changed in firefox:
importance: Unknown → Medium
Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

Comment on attachment 326061
patch

I cannot review this without spending boatloads of time understanding the use cases and code, which I don't think is worth my time at this point. Sorry :-(

Revision history for this message
In , Cowthct (cowthct) wrote :

Just voted for this bug. We are locking certain prefs in the default installation (for example browser and extension updates are done via packages, so we diable eg "app.update.enabled").

Debian is shipping a patch in their packages, Ubuntu isn't (see https://bugs.launchpad.net/ubuntu/+source/thunderbird/+bug/623844).

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Created attachment 572068
Allow .js preference files to set locked prefs with lockPref()

Refreshed after the PRBool/bool change.

Now, as bsmedberg won't review it, and dwitte is essentially not around anymore, who can review this?

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Created attachment 576542
Allow .js preference files to set locked prefs with lockPref()

Sorry for the noise, just testing "hg bzexport". I'm still interested to know who could review this, though.

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

This is a fly by night review.

I don't think it should be "lockPref" like autoconfig. With autoconfig, it's a function call.

With the default pref files, you're specifying a preference.

so:

locked_pref("foo", "bar")

makes more sense it that context (the same as user_pref)

Looking through the code, it looks like you've assumed that if a pref is locked, it becomes a default as well, is that correct?

The code looks good to me, but I'm not the right person to do this.

I think this is a good solution to the problem you are seeing and makes it a lot easier for enterprises to lock prefs, so this would be a good thing to have.

Revision history for this message
In , Chris Coulson (chrisccoulson) wrote :

*** Bug 788481 has been marked as a duplicate of this bug. ***

Revision history for this message
In , Mkmelin+mozilla (mkmelin+mozilla) wrote :

(In reply to Benjamin Smedberg [:bsmedberg] (Away 24-25 October) from comment #18)
> Comment on attachment 326061
> patch
>
> I cannot review this without spending boatloads of time understanding the
> use cases and code, which I don't think is worth my time at this point.
> Sorry :-(

In that case, can you suggest someone that could review it?

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

No, at this point I don't think there is anyone who can own and review this.

Revision history for this message
In , Chofmann (chofmann) wrote :

seems like there is some interest in this bug over in

 https://bugzilla.mozilla.org/show_bug.cgi?id=984012#c15
 https://bugzilla.mozilla.org/show_bug.cgi?id=984012#c17

to help protect international users from getting phished into changing the pref named security.turn_off_all_security_so_that_viruses_can_take_over_this_computer

and not necessarily understanding the ramifications of that action if they don't understand English.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Created attachment 8613433
Allow .js preference files to set locked prefs with lockPref()

Refreshed after bug 1098343. Benjamin, would you like to review this, this time, considering comment 26?

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

You didn't address my comments.

I really don't want it being called lockPref. That will confuse it with the autoconfig "lockPref" function.

There is already enough confusion with pref()

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

(In reply to Mike Kaply [:mkaply] from comment #28)
> I really don't want it being called lockPref. That will confuse it with the
> autoconfig "lockPref" function.

What is confusing? It's the same syntax. The only difference aiui, is the execution environment, which means autoconf can do more javascript-y things, which, as you point out, is already a source of confusion. I'd argue that having two different names is what would be confusing.

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

It's not the same syntax, that's my point.

pref() in a prefs.js file is NOT the same as pref() in an AutoConfig.js file.

pref() in prefs.js sets the default pref, defaultPref() in an Autoconfig sets a default pref.

user_pref() in prefs.js sets a user pref, pref() in an AutoConfig file sets a user preference.

So what you're doing is making it look like autoconfig.js and prefs.js use the same syntax, when they do not.

Revision history for this message
In , Z-nathan-1 (z-nathan-1) wrote :

(In reply to Mike Kaply [:mkaply] from comment #30)
> It's not the same syntax, that's my point.

I tend to agree here. I think this could be a useful patch (I'd use it instead of doing autoconfig stuff) but it's kind of silly to be hung up on naming...

I do think that "lockPref" sticks out relative to the calls for "default_pref", and "sticky_pref". I'm a +1 for calling it "locked_pref".

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

The syntax is a triviality of the patch. The core problem here is that there's no one to review the patch so that it possibly lands.

Revision history for this message
In , Z-nathan-1 (z-nathan-1) wrote :

:(

Ideally, I'd like to favor this patch over the one I proposed at https://bugzilla.mozilla.org/show_bug.cgi?id=976334 - since it has been tried and tested for so long...and that just adds another use case for this: ease of locking preferences for android distributions (which aren't as straightforward when it comes to specifying the autoconfig file in the install directory)

Is it just a matter of having someone sign off on it, or were there outstanding concerns outside of the syntax? It seemed like it kind of just got dropped due to time constraints 2+ years ago, but that there now are actually some compelling use cases for it.

Can't the fact that it's been needed and used by Debian for so long be an indication of the stability and/or utility of the patch? just an appeal to *someone* to perhaps move this along...

Aside from that, :glandium - how often does this patch "break"...that is, how many times have you had to rework it because of changes in the upstream code? I ask because I actually would consider applying this patch and using it in my own distribution - even if it never lands.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

From a quick glance at the history of the patch in Debian, in the past 5 years, I had to do actual but trivial code changes twice, and adapt to context changes twice (one of them having been the change from PRBool to bool)

Revision history for this message
In , Ehsan-mozilla (ehsan-mozilla) wrote :

(In reply to Mike Hommey [:glandium] (VAC: 31 Dec - 11 Jan) from comment #32)
> The syntax is a triviality of the patch. The core problem here is that
> there's no one to review the patch so that it possibly lands.

Can I help review?

Revision history for this message
In , Benjamin Smedberg (Mozilla) [:bs] (benjamin-smedbergs) wrote :

Comment on attachment 8613433
Allow .js preference files to set locked prefs with lockPref()

Because this came up on the mailing list, I'll try to be explicit about the decision here. I don't think we should allow extensions to lock preferences, and we don't even have a clear description (other than this code) of what it means to "lock" a preference: whether changes to the default value are still allowed, or the user value, etc.

The code is the incidental part of this; it's the basic problem and solution space that's totally unclear.

Revision history for this message
In , Z-nathan-1 (z-nathan-1) wrote :

(In reply to Benjamin Smedberg [:bsmedberg] from comment #36)
> Because this came up on the mailing list

Which mailing list is that? (just so I can make sure I'm following the right one)

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

(In reply to Benjamin Smedberg [:bsmedberg] from comment #36)
> Comment on attachment 8613433
> Allow .js preference files to set locked prefs with lockPref()
>
> Because this came up on the mailing list, I'll try to be explicit about the
> decision here. I don't think we should allow extensions to lock preferences,

As mentioned in the long history of this bug, extensions can already lock preferences. See the attached xpi.

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

To expound on what :glandium said:

Extensions can lock preferences with:

  Components.classes["@mozilla.org/preferences-service;1"]
            .getService(Components.interfaces.nsIPrefService)
            .getBranch(null)
            .lockPref("name_of_pref");

Locking a preference doesn't affect the value, it just locks the preference to the user. Obviously any extension could unlock a preference and do what they want with that value.

Locking preferences is not for the benefit of preventing other extensions from messing with things, it's to keep users from messing with things.

Oddly, this document:

https://developer.mozilla.org/en-US/docs/Mozilla/Preferences/A_brief_guide_to_Mozilla_preferences

Says we already support lockPref in JS files?

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

(In reply to Mike Kaply [:mkaply] from comment #39)
> Oddly, this document:
>
> https://developer.mozilla.org/en-US/docs/Mozilla/Preferences/
> A_brief_guide_to_Mozilla_preferences
>
> Says we already support lockPref in JS files?

It says: "All preferences files may call pref(), user_pref() and sticky_pref(), while the config file in addition may call lockPref()."
which is about autoconf.

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

(In reply to Mike Hommey (VAC: 31 Dec - 11 Jan) [:glandium] from comment #40)
> (In reply to Mike Kaply [:mkaply] from comment #39)
> > Oddly, this document:
> >
> > https://developer.mozilla.org/en-US/docs/Mozilla/Preferences/
> > A_brief_guide_to_Mozilla_preferences
> >
> > Says we already support lockPref in JS files?
>
> It says: "All preferences files may call pref(), user_pref() and
> sticky_pref(), while the config file in addition may call lockPref()."
> which is about autoconf.

You'd think I would have noticed that. I really don't like a document that combines the two. pref behaves differently on both, user_pref doesn't work in autoconfig and sticky_pref doesn't work in autoconfig. This shouldn't reference autoconfig at all.

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :
Download full text (7.7 KiB)

Comment on attachment 8613433
Allow .js preference files to set locked prefs with lockPref()

>From b8015e0754742650a4877de9ebe7d6db2671970d Mon Sep 17 00:00:00 2001
>From: Mike Hommey <email address hidden>
>Date: Sat, 21 Jun 2008 02:48:46 +0200
>Subject: [PATCH] Allow .js preference files to set locked prefs with
> lockPref()
>
>---
> modules/libpref/prefapi.cpp | 5 ++++-
> modules/libpref/prefapi.h | 3 ++-
> modules/libpref/prefread.cpp | 12 +++++++++---
> modules/libpref/prefread.h | 4 +++-
> 4 files changed, 18 insertions(+), 6 deletions(-)
>
>diff --git a/modules/libpref/prefapi.cpp b/modules/libpref/prefapi.cpp
>index e898433..081c922 100644
>--- a/modules/libpref/prefapi.cpp
>+++ b/modules/libpref/prefapi.cpp
>@@ -1002,16 +1002,19 @@ static nsresult pref_DoCallback(const char* changed_pref)
> return rv;
> }
>
> void PREF_ReaderCallback(void *closure,
> const char *pref,
> PrefValue value,
> PrefType type,
> bool isDefault,
>- bool isStickyDefault)
>+ bool isStickyDefault,
>+ bool isLocked)
> {
> uint32_t flags = isDefault ? kPrefSetDefault : kPrefForceSet;
> if (isDefault && isStickyDefault) {
> flags |= kPrefStickyDefault;
> }
> pref_HashPref(pref, value, type, flags);
>+ if (isLocked)
>+ PREF_LockPref(pref, true);
> }
>diff --git a/modules/libpref/prefapi.h b/modules/libpref/prefapi.h
>index f1e412a..24618a7 100644
>--- a/modules/libpref/prefapi.h
>+++ b/modules/libpref/prefapi.h
>@@ -181,14 +181,15 @@ nsresult PREF_UnregisterCallback( const char* domain,
> /*
> * Used by nsPrefService as the callback function of the 'pref' parser
> */
> void PREF_ReaderCallback( void *closure,
> const char *pref,
> PrefValue value,
> PrefType type,
> bool isDefault,
>- bool isStickyDefault);
>+ bool isStickyDefault,
>+ bool isLocked);
>
> #ifdef __cplusplus
> }
> #endif
> #endif
>diff --git a/modules/libpref/prefread.cpp b/modules/libpref/prefread.cpp
>index 6c4d339..16c5057 100644
>--- a/modules/libpref/prefread.cpp
>+++ b/modules/libpref/prefread.cpp
>@@ -38,16 +38,17 @@ enum {
> PREF_PARSE_UNTIL_EOL
> };
>
> #define UTF16_ESC_NUM_DIGITS 4
> #define HEX_ESC_NUM_DIGITS 2
> #define BITS_PER_HEX_DIGIT 4
>
> static const char kUserPref[] = "user_pref";
>+static const char kLockPref[] = "lockPref";
> static const char kPref[] = "pref";
> static const char kPrefSticky[] = "sticky_pref";
> static const char kTrue[] = "true";
> static const char kFalse[] = "false";
>
> /**
> * pref_GrowBuf
> *
>@@ -126,17 +127,17 @@ pref_DoCallback(PrefParseState *ps)
> break;
> case PREF_BOOL:
> value.boolVal = (ps->vb == kTrue);
> break;
> default:
> break;
> }
> (*ps->reader)(ps->closure, ps->lb, value, ps->vtype, ps->fdefault,
>- ...

Read more...

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Created attachment 8931547
Bug 440908 - Allow preference files to set locked prefs.

Review commit: https://reviewboard.mozilla.org/r/202672/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/202672/

Revision history for this message
In , Nicholas Nethercote (n-nethercote) wrote :

Comment on attachment 8931547
Bug 440908 - Allow preference files to set locked prefs.

https://reviewboard.mozilla.org/r/202672/#review208008

As per our IRC discussion, I think this is a good feature, and the patch does a good job of implementing it. But before doing this I'd like to officially split the prefs file format in two -- one format for default prefs, and one for user prefs -- and then only support `locked_pref` in default prefs files. And I want to need to think about that for a bit, just to make sure it's a good idea.

::: modules/libpref/Preferences.cpp:238
(Diff revision 1)
> enum
> {
> kPrefSetDefault = 1,
> kPrefForceSet = 2,
> kPrefSticky = 4,
> + kPrefLocked = 8,

The patches in bug 1394578 are going to bitrot this again. Sorry :(

::: modules/libpref/Preferences.cpp:949
(Diff revision 1)
> char* mLbEnd; // line buffer end
> char* mVb; // value buffer (ptr into mLb)
> Maybe<PrefType> mVtype; // pref value type
> bool mIsDefault; // true if (default) pref
> bool mIsSticky; // true if (sticky) pref
> + bool mIsLocked; // true if (locked) pref

It would be nice to replace these three bools with a single enum that has the following alternatives: Default, StickyDefault, LockedDefault, User. That would simplify some of the code below.

::: modules/libpref/test/unit/test_lockedprefs.js:20
(Diff revision 1)
> +}
> +
> +add_test(function notChangedFromAPI() {
> + resetAndLoad(["data/testPrefLocked.js"]);
> + Assert.strictEqual(ps.getBoolPref("testPref.unlocked.bool"), true);
> + Assert.strictEqual(ps.getBoolPref("testPref.locked.bool"), false);

Keeping track of the true and false values here is tricky. If you changed it to an int you could make the "testPref.locked.int" use 100 and 101, and "testPref.unlocked.int" use 200 and 201, or something like that, and it would be a bit easier to read.

::: modules/libpref/test/unit/test_lockedprefs.js:24
(Diff revision 1)
> + Assert.strictEqual(ps.getBoolPref("testPref.unlocked.bool"), true);
> + Assert.strictEqual(ps.getBoolPref("testPref.locked.bool"), false);
> +
> + ps.setBoolPref("testPref.unlocked.bool", false);
> + Assert.ok(ps.prefHasUserValue("testPref.unlocked.bool"),
> + "should be able to set an unlocked pref");

This string comment isn't quite right, because you can set a locked pref.

::: modules/libpref/test/unit/test_lockedprefs.js:29
(Diff revision 1)
> + "should be able to set an unlocked pref");
> + Assert.strictEqual(ps.getBoolPref("testPref.unlocked.bool"), false);
> +
> + ps.setBoolPref("testPref.locked.bool", true);
> + Assert.ok(ps.prefHasUserValue("testPref.locked.bool"),
> + "somehow, the user value is still set");

This comment string is a bit weird too.

Revision history for this message
In , herrold (herrold) wrote :

This bug seems to be stalled

Is there anything I may do to help get it advanced?

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

The preferences code is being heavily refactored, and this needs to wait a bit for things to settle first. That being said, I do think the ideal timing for this would be to get it into 60. Nick, what do you think?

Revision history for this message
In , Stransky (stransky) wrote :

Looking forward to see the patch landed as we use it at Fedora.

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

> Looking forward to see the patch landed as we use it at Fedora.

For what purpose? user.js shouldn't be used for anything mission critical at all.

Revision history for this message
In , herrold (herrold) wrote :

@glandium

I see Comment #46 speaks of a FF 60 ESR release; but effort expended to a continuation '.js' amendments to configurations appears to conflict with the the '.json' configuration management direction outlined for 60 as well, at:

> https://wiki.mozilla.org/Firefox/EnterprisePolicies

Policies

The list of policies to support is still being defined, and is based on previous experience with what enterprises have asked in the past. Stay tuned for an official list of policies to be announced in the near term.

Some possibilities that are being discussed are:

    Disabling access to internal configuration features like about:config, about:addons, etc.
    Adding a set of bookmarks to the toolbar and the bookmarks menu
    Displaying the menu bar by default
    Disabling Telemetry
    Disabling features such as Pocket, Firefox Screenshots, Printing, Copy&Paste, etc.
    Whitelist and blocklist of domains to be allowed to be accessed
    Pre-populated permissions around cookies, storage, popups, plugins, etc.

-------

I wish a Statement of Roadmap were more clear -- I ran through the tracker bug on: EnterprisePolicies and it seems pretty far along

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

user.js was never intended to be an enterprise level feature for configuration of Firefox. I don't recommend using it for that.

For enterprise configuration, we have provided Autoconfig since day one, and we are working on a better solution involving JSON, GPO and possibly authors.

Our goal is to move away from the various hack solutions that folks have created in order to configure Firefox.

What specific customizations are you looking to do with Firefox? You can see the policies we are working on here:

https://bugzilla.mozilla.org/show_bug.cgi?id=1428920

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

The ability to lock prefs at the .js level is not *only* for enterprise customization. Specifically, we have many "prefs" that are meant to allow e.g. per channel (release, beta, nightly) tweaks but are not meant for users to change. There are multiple such footguns that would be avoided by having firefox ship those as locked.

Revision history for this message
In , Mozilla-kaply (mozilla-kaply) wrote :

I was only referring to the use of user.js for enterprise. I do understand that it's worthwhile to have locking of prefs in JS file for Firefox purposes.

Revision history for this message
In , Nicholas Nethercote (n-nethercote) wrote :

(In reply to Mike Hommey [:glandium] from comment #46)
> The preferences code is being heavily refactored, and this needs to wait a
> bit for things to settle first. That being said, I do think the ideal timing
> for this would be to get it into 60. Nick, what do you think?

If things go well with the prefs changes this might be possible in 60, it just depends how quickly the work goes.

Revision history for this message
In , Nicholas Nethercote (n-nethercote) wrote :

Created attachment 8956309
Bug 440908 - Remove gIsAnyPrefLocked.

It optimizes Preferences::IsLocked(), but that function is called fewer than
200 times while starting the browser and opening a range of tabs.

Review commit: https://reviewboard.mozilla.org/r/225182/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/225182/

Revision history for this message
In , Nicholas Nethercote (n-nethercote) wrote :

Created attachment 8956310
Bug 440908 - Add support for `sticky` and `locked` attributes to default prefs.

Sticky prefs are already specifiable with `sticky_pref`, but this is a more
general attribute mechanism. The ability to specify a locked pref in the data
file is new.

The patch also adds nsIPrefService.readDefaultPrefsFromFile, to match the
existing nsIPrefService.readUserPrefsFromFile method, and converts a number of
the existing tests to use it.

Review commit: https://reviewboard.mozilla.org/r/225184/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/225184/

Revision history for this message
In , Nicholas Nethercote (n-nethercote) wrote :

Created attachment 8956311
Bug 440908 - Convert sticky prefs in default pref files to the new syntax.

Review commit: https://reviewboard.mozilla.org/r/225186/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/225186/

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Comment on attachment 8956309
Bug 440908 - Remove gIsAnyPrefLocked.

https://reviewboard.mozilla.org/r/225182/#review231210

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Comment on attachment 8956310
Bug 440908 - Add support for `sticky` and `locked` attributes to default prefs.

https://reviewboard.mozilla.org/r/225184/#review231212

::: modules/libpref/Preferences.cpp:3982
(Diff revision 1)
> - Preferences::GetCString(kChannelPref, updateChannelPrefValue,
> - PrefValueKind::Default);
> + Preferences::GetCString(
> + kChannelPref, updateChannelPrefValue, PrefValueKind::Default);
> releaseCandidateOnBeta = updateChannelPrefValue.EqualsLiteral("beta");
> }
>
> if (!strcmp(NS_STRINGIFY(MOZ_UPDATE_CHANNEL), "nightly") ||
> !strcmp(NS_STRINGIFY(MOZ_UPDATE_CHANNEL), "aurora") ||
> - !strcmp(NS_STRINGIFY(MOZ_UPDATE_CHANNEL), "beta") ||
> + !strcmp(NS_STRINGIFY(MOZ_UPDATE_CHANNEL), "beta") || developerBuild ||

clang-format changed its mind, I guess?

::: modules/libpref/parser/src/lib.rs:282
(Diff revision 1)
> struct KeywordInfo {
> string: &'static [u8],
> token: Token,
> }
>
> -const KEYWORD_INFOS: &[KeywordInfo; 5] = &[
> +const KEYWORD_INFOS: &[KeywordInfo; 7] = &[

In passing, AFAIK, this could actually me [KeywordInfo; 7] (without the ref)

Revision history for this message
In , Mh+mozilla (mh+mozilla) wrote :

Comment on attachment 8956311
Bug 440908 - Convert sticky prefs in default pref files to the new syntax.

https://reviewboard.mozilla.org/r/225186/#review231216

Revision history for this message
In , Nicholas Nethercote (n-nethercote) wrote :

> clang-format changed its mind, I guess?

No, chutten changed that code in bug 1435753. I generally run `./mach clang-format -p modules/libpref`. Perhaps I should just run `./mach clang-format` instead...

Revision history for this message
In , Nicholas Nethercote (n-nethercote) wrote :
Revision history for this message
In , Aryx-bugmail (aryx-bugmail) wrote :
Changed in firefox:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.