 Chromium Code Reviews
 Chromium Code Reviews Issue 
            6659006:
    flimflam: add support for multiple profiles  (Closed)
    
  
    Issue 
            6659006:
    flimflam: add support for multiple profiles  (Closed) 
  | Descriptionflimflam: add support for multiple profiles
Add a stack of profiles and support for per-user profiles (stored in the
cryptohome).  This also adds support for operation without a profile so 
no persistent state is recorded (meant mostly for testing).
Changes include:
o add PushProfile, PopProfile, and PopAnyProfile D-bus directives to
  the Manager interface
o on object load (Service, Device, etc.) walk the stack of profiles
  until an entry is found for the object (replace direct storage
  load/store of objects by calls to the profile code)
o object save always write to the active profile which is the top of
  stack; if there is no active profile do nothing
o have Service objects track the active profile where state was last saved;
  this is used when pop'ing a profile to invalidate in-memory state for
  the service (e.g. security credentials)
o include Services in a Profile's properties only if it is the active
  profile
o more correctly implement the notion that OfflineMode is accessible only
  in the Default profile (e.g. don't return it in a Profile's properties,
  disallow setting the property directly)
o drop setting the ActiveProfile property; it does not make sense with the
  new model (use Push/Pop instead)
o drop reading in all global profiles are startup; the old connman model
  does not make a lot of sense for us
o change the storage layer to better support multiple profiles:
  - add a connman_storage_ident structure for file names which may include
    a user name; per-user storage is placed in a subdirectory of the user's
    home directory so creating files will fail unless the directory exists
  - revamp storage <object>_load/save methods so the storage_open/close
    work is done in the storage layer; this consolidates this logic in the
    storage code and better assures consistent error returns to the profile
    code so it can decide when to stop walking the profile stack on load
  - stop passing the profile name to the crypto routines; this was not
    being used; if we want to enable/disable crypto based on the profile
    this looks to be better done one layer up
BUG=chromium-os:12948
TEST=manual:using test scripts; automated tests TBA
Committed: http://chrome-svn/viewvc/chromeos?view=rev&revision=99c34cc
   Patch Set 1 #
      Total comments: 8
      
     Patch Set 2 : respond to njw comments #Patch Set 3 : fix possible race in profile changed handling #Patch Set 4 : construct hidden ssid set from all profiles #Patch Set 5 : fix dbus method spec for PopProfile #Patch Set 6 : fix cleanup path and change services_changed to fix potential race #Patch Set 7 : add --push option for restart after crash #Patch Set 8 : many fixups #Patch Set 9 : rebase #
      Total comments: 28
      
     Patch Set 10 : response to ers comments #Patch Set 11 : rebase #Patch Set 12 : more ers comments #
 Messages
    Total messages: 17 (0 generated)
     | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||