Isn't it still undefined what following does:

ProfileControl {
   profile: "foo"
   editMode: ProfileControl.EditInactiveProfile
}

If profile setter gets called first, the device profile is changed, but if editMode setter is called, then not.

Also, API-wise EditInactiveProfile mode is not necessarily modifying inactive profile. Can be active or not depending on system state.

Suggestion: how about instead of using "profile" property to set editing target, have explicit editTarget which would only control where modifications go to. "profile" kept for only changing the active profile.

It would still be undefined if ProfileControl is instantiated with declaring ringtone as something at the same time, but then again such usage does not make too much sense.