The features xml plays two roles:
1) To allow sdk interface (constructor) to throw when system
service is unavailable. This allows for clearer platform
development debugging.
2) To allow for simpler disambiguation of what services to
instrument in a modular environment.
Change-Id: I41f4ac60af076743909c6090fd50c3ad045bc9e1
Since PerformanceManager is strictly a CyanogenMod construct,
it doesn't make sense to enforce the interfaces with an android
specific permission (even though the implementation is delegated
to power manager). To keep consistency with the other api's,
modify the enforcing permission to a cm specific declaration.
Also add test cases for the PerformanceManager public interfaces.
Change-Id: I430b69dbee73bf94bb60932d1942ab97e3ba193e
When going from perfmanager -> powermanager we need to clear the calling
identity otherwise you get :
Bad call: specified package android under uid 10031 but it is really 1000
CYNGNOS-786
Change-Id: Iacd310f56d6538b0f7a4779f89b4451f6a203c5b
Fix edge cases such as :
1) Toggling to power save when plugged in (Should reject)
2) Plugging in to power while in power save should toggle to
balanced.
3) Toggling from power save to anything else should disable
low power mode (Orange system bars...etc)
CYNGNOS-786
Change-Id: If6a4c08843673a6d02c38c94ed44d36230c0cb81
It's sometimes useful to know what physical device you're using.
CMHW SerialNumber and an "ro.serialno" property already exists, but
are not guaranteed to be unique. Different OEM may use overlapping
numbering schemes, and sometimes placeholder like "012345ABCDE" are
used.
Attempt to work around these shortcomings by defining a new
UniqueDeviceId class that provides a globally unique device ID that
is both deterministic for a given device and designed not to overlap
with IDs of any other devices.
Change-Id: I3f426972558394ba8e78261273ac8521aa603327
This fixes the following errors during bootup:
QSTileHost: Error creating tile for spec: visualizer
QSTileHost: java.lang.IllegalArgumentException: Bad tile spec: visualizer
CYNGNOS-1722
Change-Id: Idd45ef73beb004fb4afb310bb335f3cc85b08330
Some of this exists in the PersistentStorage implementation, but it
was never formally documented in the APIs. Inherit the cmhw implementation
error checking & move it into the service.
Add tests to validate the new restrictions & a test that was previously
failing.
Change-Id: I3ecda29fdd28bbc4e6d8ccce7511c4644065ea46
Lower protection level of THIRD_PARTY_KEYGUARD permission from
signature|privileged to normal.
Change-Id: I464daba67a66e88efe6219cec2663a07d15ab3ed
TICKET: CYNGNOS-1689
Add setZenModeWithDuration API call with long durationMills
Use NotificationManager.setZenMode with Condition URI
specifying end time.
Update settings/CMPartnerInterfaceTest
TODO: unit test to be added in:
tests/src/org/cyanogenmod/tests/settings/unit.
FOR-156
Change-Id: I18dd661fc07419a7019b6372e81df430a70f86e9
For CM13, the third party keyguard permission is being added to
the cmsdk rather than frameworks/base. This patch also introduces
CmLockPatternUtils, a subclass of LockPatternUtils, which allows us
to make use of the new third party keyguard permissions in cmsdk.
Change-Id: I91fadfaae79e3f146e9ae73929cea91294ef8d87
Rework profile handling to address the following issues:
- When app specific profiles are enabled, the perf service silently
changes the profile to BALANCED when the user revisits settings.
The service and Settings UI still show whatever pref the user had
selected. The user is now unable to change the setting to BALANCED.
The perf service ignores the change because the current profile
(selected by app profiles) did not change.
- When low power mode (battery saver) activates or deactivates, the
user selected profile is overwritten.
All runtime decisions regarding active profiles have been consolidated
in to a single applyProfile() function that handles low power mode,
user and app-specific profile rules.
App specific profiles are applied only if the power profile is
BALANCED.
setPowerProfileInternal has been changed to save the user pref even if
the active pref is unchanged.
Fixes SAMBAR-1088
Change-Id: Iac658959130f08452f5e41ce3339fe4603ac474e
The MODIFY_NETWORK_SETTINGS and MODIFY_SOUND_SETTINGS permissions were
not descriptive enough. Improve the strings to enumerate exactly what
settings these permissions protect.
Fixes FOR-23.
Change-Id: Idd64738c21d879462a7e7e6c65ceefdc771f1bcd
Added in custom Resolver to handle providing suggestions.
Added in Service to handle providing suggestions to custom resolver.
Added in ability to provider suggestions through a Proxy to another
application which must be installed during compile time if one is
to be used. This is a similar implementation to how the Location
Services work.
Change-Id: Id960260596b7bb6485caa1e1d07744e387a4c6e9
* Add support for reading and writing values from/to persistent
storage. Requires the MANAGE_PERSISTENT_STORAGE permission, which
should not be available for general use by applications.
Change-Id: I8a793396d207f23fcda851c172372f2073778eec
- Add ACTION_HOTWORD_INPUT_CHANGED broadcast action and related extras.
- Add getCurrentHotwordPackageName() API to SettingsManager to query the
current package name of the application that controls the HOTWORD
input.
- Rename SettingsManager to PartnerInterface.
Change-Id: I5987499cd32908c47a7e8e95d644c483dc32914c
We cannot create a new WindowManagerPolicy every time since the method
isn't called from the main thread every time, which could lead to
exceptions being thrown when trying to create PhoneWindowManager.
Instead of creating a new policy, bind to the keyguard service on bind,
and then pass it to the profile to operate on.
Ref: NIGHTLIES-1640
Change-Id: I3ac58bfa534755eaa73890cc5ddf05987a7d0d8c
Signed-off-by: Roman Birg <roman@cyngn.com>
- Add a new permission cyanogenmod.permission.MODIFY_SOUND_SETTINGS.
- Only allowed when the caller holds
cyanogenmod.permission.MODIFY_SOUND_SETTINGS.
- Allows the user to set zen mode to the off, priority interruptions
only, or no interruptions modes.
- For each mode change, the end condition will be set to null so that
the mode remains active indefinitely.
Change-Id: Id465509a8cc8d98953bf8cbe06cacff02b9f75a0
Add new APIs for changing a subset of system settings.
Protected by cyanogenmod.permission.MODIFY_NETWORK_SETTINGS:
- Add ability to toggle airplane mode on/off.
- Add ability to toggle mobile data on/off.
Protected by android.permission.REBOOT:
- Add ability to shutdown or reboot the device.
Change-Id: I5e943be11260c58afa664f1702c0ecb4413528fe
If a new listener is created, then notified all custom tiles that was previously registered
Change-Id: I9e8d9a1fa84d54b00ea7fd8ed400e172f17f06cc
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
Saved the context passed to CustomTile.Builder in other to differenciate from the context
used to publish the tile. This allow to load resources (icons) from other packages
Change-Id: I8e40bc59a66f371f3a02f0182e25c6e9eca73c63
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
org.cyanogenmod.platform-res provides resources that,
if public, are globally accessible.
This allows us to declare public and internal permissions as
well as reference permissions declared by the android framework
core
Change-Id: Ia7d541f4b403585f7479ecd87895987b8471005b
Create a simple CustomTile object with builder which lets a 3rd party
application publish a quick settings tile to the status bar panel.
An example CustomTile build:
CustomTile customTile = new CustomTile.Builder(mContext)
.setLabel("custom label")
.setContentDescription("custom description")
.setOnClickIntent(pendingIntent)
.setOnClickUri(Uri.parse("custom uri"))
.setIcon(R.drawable.ic_launcher)
.build();
Which can be published to the status bar panel via CMStatusBarManager#publishTile.
The CustomTile contains a click intent and click uri which can be
sent or broadcasted when the CustomQSTile's handleClick is fired.
This implementation closely mirrors that of NotificationManager#notify for
notifications. In that each CMStatusBarManager#publishTile can have an appended
id which can be kept by the 3rd party application to either update the tile with,
or to remove the tile via CMStatusBarManager#removeTile.
Change-Id: I4b8a50e4e53ef2ececc9c7fc9c8d0ec6acfd0c0e