Here are a couple bugs talking about "full screen/kiosk mode": http://bugzilla.mozilla.org/show_bug.cgi?id=3341 http://bugzilla.mozilla.org/show_bug.cgi?id=15324 They address the UI/chrome look and feel of such a mode which is different from providing a "roating" profile in the backend. User's need the ability to walk up to a "kiosk" machine (say in a library) and log in/out ad-naseum. We could do this by hooking up profile data caches (cookies, wallet, chrome, etc) to another listener (say CLEAR_PROFILE_CACHE or something), or by blowing away the default profile dir, then recreating it (considering that an operation that occurs for each log out).
Mozilla 0.8 builds started today. We would consider taking reviewed low risk fixes if they are available today (Wednesday, 7/Feb/01) or tomorrow (Thursday, 8/Feb/01). Otherwise, please set the target milestone to Mozilla 0.9. Thanks.
*** Bug 68471 has been marked as a duplicate of this bug. ***
The patch provides the ability to log out of the current profile. There are two supported modes of logging out: (1) SHUTDOWN_PERSIST in which profile change observers write their data out before the current profile goes away. (2) SHUTDOWN_CLEANSE in which profile change observers delete their persistent data from the current profile. The kiosk app will use SHUTDOWN_CLEANSE. It should have one profile for this purpose called "guest" (or whatever) When the user logs out, the app will call nsIProfile::ShutDownCurrentProfile(SHUTDOWN_CLEANSE). This will wipe clean the current profile. Then the kiosk app will modally wait for the next user and then call nsIProfile::SetCurrentProfile("guest"). That profile will now be completely clean.
These changes look good to me. The only question is whether or not the Topic dependencies should be made explicit via #includes. we'll be hashing this out on pork. Whatever we decide there, should be integrated into these patches, then we're good to go. r=valeski.
Whatever we decide about where to declare observer topics can be dealt with by some copy/paste and adjusting the REQUIRES line of Unix makefiles. Shouldn't cause much change. Whatever change that does cause, I'll put up an updated patch.
FYI: One thing we may want to consider in the PROFILE_CLEANSE case is to ensure that the profiles also get blown away on restart of the client, as it's possible that a prematurely exiting client would cause the cleanup routines to not be called, and therefore leave data hanging around (this is a lesson learned from the previous "roaming" exercise in Nav 4.5)
Good point. I'll look into that. Something could be written into the profile's registry entry that it needed to be cleansed until we succeeded in doing so. That would require adding an additional routine to nsIProfile - say createGuestProfile(), which would mark the profile as such. That's the only way I can see to tag such a profile to be marked for cleanup later. Right now, client code can call shutDownCurrentProfile(SHUTDOWN_CLEANSE) on any profile. It's up to the client code to make sure it's on the right "temp" profile which it created for this purpose.
The updated patch also changes the use of observer topics to no longer be #defined in nsIProfileChangeStatus.idl. This allowed the removal of "profile" from many REQUIRES sections in Unix makefiles. In doing this, I found serveral extraneous includes of nsIProfile which caused further dependencies and removed them. Tested this by building on Linux with MOZ_TRACK_MODULE_DEPS=1 in the build config.
The partial update fixes a bug in nsProfile.cpp (in an untested path of execution) and clarifies some comments.
sorry for the delay - I reviewed this the other day but got bitten by SERA & bugzilla logins, so my comments never appeared here. sr=alecf
targeting 0.8.1 It's reviewed and ready to go - just have to land it.
This just landed, marking fixed
What's the UI for the guest profile? Has anyone filed a bug about that? I assume we'd make it work like it did in 4.x. (Permanent selection, can't delete it, shown outside the grouping of user created profiles, etc.)
no UI, the underlying functionality is there though. embedding clients needed the support, but they're using their own UI. If 6.x needs this exposed via UI, I'm not sure who would own that.
verified code fix
UI for "guest mode": bug 155300.