Project import
diff --git a/system_api/LICENSE b/system_api/LICENSE
new file mode 100644
index 0000000..d6ec73d
--- /dev/null
+++ b/system_api/LICENSE
@@ -0,0 +1,27 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/system_api/MODULE_LICENSE_BSD b/system_api/MODULE_LICENSE_BSD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/system_api/MODULE_LICENSE_BSD
diff --git a/system_api/OWNERS b/system_api/OWNERS
new file mode 100644
index 0000000..126836f
--- /dev/null
+++ b/system_api/OWNERS
@@ -0,0 +1,7 @@
+set noparent
+
+# Please get a review from someone who's knowledgeable (per commit history)
+# about the component whose constants you're changing.
+derat@chromium.org
+pstew@chromium.org
+wad@chromium.org
diff --git a/system_api/README b/system_api/README
new file mode 100644
index 0000000..0347fe7
--- /dev/null
+++ b/system_api/README
@@ -0,0 +1,19 @@
+This repository (system_api.git) contains constants and definitions like
+D-Bus service names that are shared between Chromium and Chromium OS.
+
+This repository is only for things like headers and .proto files.
+No implementation should be added.
+
+When writting a .proto file make sure to use:
+"option optimize_for = LITE_RUNTIME;"
+
+This will force usage of a lite protobuf instead of a full/heavy weight
+protobuf. The browser only links against the light version, so you will get
+cryptic link errors about missing parts of Message if you define a protobuf here
+and then try to use it in Chrome. Currently CrOS links against the full
+protobuffer library, but that might change in the future.
+
+When declaring a protobuf, avoid use of required unless it is exactly what you
+mean. "Required is Forever" and very rarely should actually be used. Consult
+http://code.google.com/apis/protocolbuffers/docs/cpptutorial.html for a detailed
+of this issue.
\ No newline at end of file
diff --git a/system_api/codereview.settings b/system_api/codereview.settings
new file mode 100644
index 0000000..d7c8d39
--- /dev/null
+++ b/system_api/codereview.settings
@@ -0,0 +1,4 @@
+# This file is used by gcl to get repository specific information.
+GERRIT_HOST: chromium-review.googlesource.com
+GERRIT_PORT: 29418
+CODE_REVIEW_SERVER: chromium-review.googlesource.com
diff --git a/system_api/constants/cryptohome.h b/system_api/constants/cryptohome.h
new file mode 100644
index 0000000..8238aa9
--- /dev/null
+++ b/system_api/constants/cryptohome.h
@@ -0,0 +1,17 @@
+// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONSTANTS_CRYPTOHOME_H_
+#define CONSTANTS_CRYPTOHOME_H_
+
+#include <stdint.h>
+
+namespace cryptohome {
+
+// Cleanup is trigerred if the amount of free disk space goes below this value.
+const int64_t kMinFreeSpaceInBytes = 512 * 1LL << 20;
+
+}  // namespace cryptohome
+
+#endif  // CONSTANTS_CRYPTOHOME_H_
diff --git a/system_api/dbus/apmanager/dbus-constants.h b/system_api/dbus/apmanager/dbus-constants.h
new file mode 100644
index 0000000..96d180d
--- /dev/null
+++ b/system_api/dbus/apmanager/dbus-constants.h
@@ -0,0 +1,62 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_APMANAGER_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_APMANAGER_DBUS_CONSTANTS_H_
+
+namespace apmanager {
+const char kServiceName[] = "org.chromium.apmanager";
+const char kManagerInterface[] = "org.chromium.apmanager.Manager";
+const char kManagerPath[] = "/manager";
+const char kManagerError[] = "org.chromium.apmanager.Manager.Error";
+const char kServiceInterface[] = "org.chromium.apmanager.Service";
+const char kServiceError[] = "org.chromium.apmanager.Service.Error";
+const char kConfigInterface[] = "org.chromium.apmanager.Config";
+const char kConfigError[] = "org.chromium.apmanager.Config.Error";
+const char kClientInterface[] = "org.chromium.apmanager.Client";
+const char kDeviceInterface[] = "org.chromium.apmanager.Device";
+
+// Manager Methods.
+const char kCreateServiceMethod[] = "CreateService";
+const char kRemoveServiceMethod[] = "RemoveService";
+
+// Config Properties.
+const char kConfigSSIDProperty[] = "Ssid";
+const char kConfigInterfaceNameProperty[] = "InterfaceName";
+const char kConfigSecurityModeProperty[] = "SecurityMode";
+const char kConfigPassphraseProperty[] = "Passphrase";
+const char kConfigHwModeProperty[] = "HwMode";
+const char kConfigOperationModeProperty[] = "OperationMode";
+const char kConfigChannelProperty[] = "Channel";
+const char kConfigHiddenNetworkProperty[] = "HiddenNetwork";
+const char kConfigBridgeInterfaceProperty[] = "BridgeInterface";
+const char kConfigServerAddressIndexProperty[] = "ServerAddressIndex";
+
+// Security modes.
+const char kSecurityModeNone[] = "none";
+const char kSecurityModeRSN[] = "rsn";
+
+// Hardware modes.
+const char kHwMode80211a[] = "802.11a";
+const char kHwMode80211b[] = "802.11b";
+const char kHwMode80211g[] = "802.11g";
+const char kHwMode80211n[] = "802.11n";
+const char kHwMode80211ac[] = "802.11ac";
+
+// Operation modes.
+const char kOperationModeServer[] = "server";
+const char kOperationModeBridge[] = "bridge";
+
+// D-Bus error codes.
+const char kErrorInternalError[] =
+    "org.chromium.apmanager.Error.InternalError";
+const char kErrorInvalidArguments[] =
+    "org.chromium.apmanager.Error.InvalidArguments";
+const char kErrorInvalidConfiguration[] =
+    "org.chromium.apmanager.Error.InvalidConfiguration";
+const char kErrorSuccess[] = "org.chromium.apmanager.Error.Success";
+
+}  // namespace apmanager
+
+#endif  // SYSTEM_API_DBUS_APMANAGER_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/cros-disks/dbus-constants.h b/system_api/dbus/cros-disks/dbus-constants.h
new file mode 100644
index 0000000..c58af38
--- /dev/null
+++ b/system_api/dbus/cros-disks/dbus-constants.h
@@ -0,0 +1,119 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_CROS_DISKS_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_CROS_DISKS_DBUS_CONSTANTS_H_
+
+namespace cros_disks {
+const char kCrosDisksInterface[] = "org.chromium.CrosDisks";
+const char kCrosDisksServicePath[] = "/org/chromium/CrosDisks";
+const char kCrosDisksServiceName[] = "org.chromium.CrosDisks";
+const char kCrosDisksServiceError[] = "org.chromium.CrosDisks.Error";
+
+// Methods.
+const char kEnumerateAutoMountableDevices[] = "EnumerateAutoMountableDevices";
+const char kEnumerateMountEntries[] = "EnumerateMountEntries";
+const char kFormat[] = "Format";
+const char kGetDeviceProperties[] = "GetDeviceProperties";
+const char kMount[] = "Mount";
+const char kUnmount[] = "Unmount";
+
+// Signals.
+const char kDeviceAdded[] = "DeviceAdded";
+const char kDeviceScanned[] = "DeviceScanned";
+const char kDeviceRemoved[] = "DeviceRemoved";
+const char kDiskAdded[] = "DiskAdded";
+const char kDiskChanged[] = "DiskChanged";
+const char kDiskRemoved[] = "DiskRemoved";
+const char kFormatCompleted[] = "FormatCompleted";
+const char kMountCompleted[] = "MountCompleted";
+
+// Properties.
+// TODO(benchan): Rename 'DeviceIs*' property to 'DiskIs*' as the latter is more
+// accurate.
+const char kDeviceFile[] = "DeviceFile";
+const char kDeviceIsDrive[] = "DeviceIsDrive";
+const char kDeviceIsMediaAvailable[] = "DeviceIsMediaAvailable";
+const char kDeviceIsMounted[] = "DeviceIsMounted";
+const char kDeviceIsOnBootDevice[] = "DeviceIsOnBootDevice";
+const char kDeviceIsOnRemovableDevice[] = "DeviceIsOnRemovableDevice";
+const char kDeviceIsReadOnly[] = "DeviceIsReadOnly";
+const char kDeviceIsVirtual[] = "DeviceIsVirtual";
+const char kDeviceMediaType[] = "DeviceMediaType";
+const char kDeviceMountPaths[] = "DeviceMountPaths";
+const char kDevicePresentationHide[] = "DevicePresentationHide";
+const char kDeviceSize[] = "DeviceSize";
+const char kDriveIsRotational[] = "DriveIsRotational";
+const char kDriveModel[] = "DriveModel";
+const char kExperimentalFeaturesEnabled[] = "ExperimentalFeaturesEnabled";
+const char kIdLabel[] = "IdLabel";
+const char kIdUuid[] = "IdUuid";
+const char kVendorId[] = "VendorId";
+const char kVendorName[] = "VendorName";
+const char kProductId[] = "ProductId";
+const char kProductName[] = "ProductName";
+const char kNativePath[] = "NativePath";
+
+// Enum values.
+// DeviceMediaType enum values are reported through UMA.
+// All values but DEVICE_MEDIA_NUM_VALUES should not be changed or removed.
+// Additional values can be added but DEVICE_MEDIA_NUM_VALUES should always
+// be the last value in the enum.
+enum DeviceMediaType {
+  DEVICE_MEDIA_UNKNOWN = 0,
+  DEVICE_MEDIA_USB = 1,
+  DEVICE_MEDIA_SD = 2,
+  DEVICE_MEDIA_OPTICAL_DISC = 3,
+  DEVICE_MEDIA_MOBILE = 4,
+  DEVICE_MEDIA_DVD = 5,
+  DEVICE_MEDIA_NUM_VALUES,
+};
+
+enum FormatErrorType {
+  FORMAT_ERROR_NONE = 0,
+  FORMAT_ERROR_UNKNOWN = 1,
+  FORMAT_ERROR_INTERNAL = 2,
+  FORMAT_ERROR_INVALID_DEVICE_PATH = 3,
+  FORMAT_ERROR_DEVICE_BEING_FORMATTED = 4,
+  FORMAT_ERROR_UNSUPPORTED_FILESYSTEM = 5,
+  FORMAT_ERROR_FORMAT_PROGRAM_NOT_FOUND = 6,
+  FORMAT_ERROR_FORMAT_PROGRAM_FAILED = 7,
+  FORMAT_ERROR_DEVICE_NOT_ALLOWED = 8,
+};
+
+// TODO(benchan): After both Chrome and cros-disks use these enum values,
+// make these error values contiguous so that they can be directly reported
+// via UMA.
+enum MountErrorType {
+  MOUNT_ERROR_NONE = 0,
+  MOUNT_ERROR_UNKNOWN = 1,
+  MOUNT_ERROR_INTERNAL = 2,
+  MOUNT_ERROR_INVALID_ARGUMENT = 3,
+  MOUNT_ERROR_INVALID_PATH = 4,
+  MOUNT_ERROR_PATH_ALREADY_MOUNTED = 5,
+  MOUNT_ERROR_PATH_NOT_MOUNTED = 6,
+  MOUNT_ERROR_DIRECTORY_CREATION_FAILED = 7,
+  MOUNT_ERROR_INVALID_MOUNT_OPTIONS = 8,
+  MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS = 9,
+  MOUNT_ERROR_INSUFFICIENT_PERMISSIONS = 10,
+  MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND = 11,
+  MOUNT_ERROR_MOUNT_PROGRAM_FAILED = 12,
+  MOUNT_ERROR_INVALID_DEVICE_PATH = 100,
+  MOUNT_ERROR_UNKNOWN_FILESYSTEM = 101,
+  MOUNT_ERROR_UNSUPPORTED_FILESYSTEM = 102,
+  MOUNT_ERROR_INVALID_ARCHIVE = 201,
+  MOUNT_ERROR_UNSUPPORTED_ARCHIVE = 202,
+};
+
+// MountSourceType enum values are solely used by Chrome/CrosDisks in
+// the MountCompleted signal, and currently not reported through UMA.
+enum MountSourceType {
+  MOUNT_SOURCE_INVALID = 0,
+  MOUNT_SOURCE_REMOVABLE_DEVICE = 1,
+  MOUNT_SOURCE_ARCHIVE = 2,
+  MOUNT_SOURCE_NETWORK_STORAGE = 3,
+};
+}  // namespace cros_disks
+
+#endif  // SYSTEM_API_DBUS_CROS_DISKS_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/cryptohome/dbus-constants.h b/system_api/dbus/cryptohome/dbus-constants.h
new file mode 100644
index 0000000..fcaa99b
--- /dev/null
+++ b/system_api/dbus/cryptohome/dbus-constants.h
@@ -0,0 +1,146 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_CRYPTOHOME_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_CRYPTOHOME_DBUS_CONSTANTS_H_
+
+namespace cryptohome {
+const char kCryptohomeInterface[] = "org.chromium.CryptohomeInterface";
+const char kCryptohomeServicePath[] = "/org/chromium/Cryptohome";
+const char kCryptohomeServiceName[] = "org.chromium.Cryptohome";
+// Methods
+const char kCryptohomeAsyncAddKey[] = "AsyncAddKey";
+const char kCryptohomeCheckKey[] = "CheckKey";
+const char kCryptohomeMigrateKey[] = "MigrateKey";
+const char kCryptohomeRemove[] = "Remove";
+const char kCryptohomeGetSystemSalt[] = "GetSystemSalt";
+const char kCryptohomeGetSanitizedUsername[] = "GetSanitizedUsername";
+const char kCryptohomeIsMounted[] = "IsMounted";
+const char kCryptohomeMount[] = "Mount";
+const char kCryptohomeMountGuest[] = "MountGuest";
+const char kCryptohomeMountPublic[] = "MountPublic";
+const char kCryptohomeUnmount[] = "Unmount";
+const char kCryptohomeTpmIsReady[] = "TpmIsReady";
+const char kCryptohomeTpmIsEnabled[] = "TpmIsEnabled";
+const char kCryptohomeTpmIsOwned[] = "TpmIsOwned";
+const char kCryptohomeTpmIsBeingOwned[] = "TpmIsBeingOwned";
+const char kCryptohomeTpmGetPassword[] = "TpmGetPassword";
+const char kCryptohomeTpmCanAttemptOwnership[] = "TpmCanAttemptOwnership";
+const char kCryptohomeTpmClearStoredPassword[] = "TpmClearStoredPassword";
+const char kCryptohomePkcs11GetTpmTokenInfo[] = "Pkcs11GetTpmTokenInfo";
+const char kCryptohomePkcs11GetTpmTokenInfoForUser[] =
+    "Pkcs11GetTpmTokenInfoForUser";
+const char kCryptohomePkcs11IsTpmTokenReady[] = "Pkcs11IsTpmTokenReady";
+const char kCryptohomePkcs11IsTpmTokenReadyForUser[] =
+    "Pkcs11IsTpmTokenReadyForUser";
+const char kCryptohomeAsyncCheckKey[] = "AsyncCheckKey";
+const char kCryptohomeAsyncMigrateKey[] = "AsyncMigrateKey";
+const char kCryptohomeAsyncMount[] = "AsyncMount";
+const char kCryptohomeAsyncMountGuest[] = "AsyncMountGuest";
+const char kCryptohomeAsyncMountPublic[] = "AsyncMountPublic";
+const char kCryptohomeAsyncRemove[] = "AsyncRemove";
+const char kCryptohomeGetStatusString[] = "GetStatusString";
+const char kCryptohomeRemoveTrackedSubdirectories[] =
+    "RemoveTrackedSubdirectories";
+const char kCryptohomeAsyncRemoveTrackedSubdirectories[] =
+    "AsyncRemoveTrackedSubdirectories";
+const char kCryptohomeDoAutomaticFreeDiskSpaceControl[] =
+    "DoAutomaticFreeDiskSpaceControl";
+const char kCryptohomeAsyncDoAutomaticFreeDiskSpaceControl[] =
+    "AsyncDoAutomaticFreeDiskSpaceControl";
+const char kCryptohomeAsyncDoesUsersExist[] = "AsyncDoesUsersExist";
+const char kCryptohomeInstallAttributesGet[] = "InstallAttributesGet";
+const char kCryptohomeInstallAttributesSet[] = "InstallAttributesSet";
+const char kCryptohomeInstallAttributesCount[] = "InstallAttributesCount";
+const char kCryptohomeInstallAttributesFinalize[] =
+    "InstallAttributesFinalize";
+const char kCryptohomeInstallAttributesIsReady[] = "InstallAttributesIsReady";
+const char kCryptohomeInstallAttributesIsSecure[] =
+    "InstallAttributesIsSecure";
+const char kCryptohomeInstallAttributesIsInvalid[] =
+    "InstallAttributesIsInvalid";
+const char kCryptohomeInstallAttributesIsFirstInstall[] =
+    "InstallAttributesIsFirstInstall";
+const char kCryptohomeStoreEnrollmentState[] =
+    "StoreEnrollmentState";
+const char kCryptohomeLoadEnrollmentState[] =
+    "LoadEnrollmentState";
+const char kCryptohomeTpmIsAttestationPrepared[] = "TpmIsAttestationPrepared";
+const char kCryptohomeTpmIsAttestationEnrolled[] = "TpmIsAttestationEnrolled";
+const char kCryptohomeAsyncTpmAttestationCreateEnrollRequest[] =
+    "AsyncTpmAttestationCreateEnrollRequest";
+const char kCryptohomeAsyncTpmAttestationCreateEnrollRequestNew[] =
+    "AsyncTpmAttestationCreateEnrollRequestNew";
+const char kCryptohomeAsyncTpmAttestationEnroll[] = "AsyncTpmAttestationEnroll";
+const char kCryptohomeAsyncTpmAttestationEnrollNew[] =
+    "AsyncTpmAttestationEnrollNew";
+const char kCryptohomeAsyncTpmAttestationCreateCertRequest[] =
+    "AsyncTpmAttestationCreateCertRequest";
+const char kCryptohomeAsyncTpmAttestationCreateCertRequestByProfile[] =
+    "AsyncTpmAttestationCreateCertRequestByProfile";
+const char kCryptohomeAsyncTpmAttestationFinishCertRequest[] =
+    "AsyncTpmAttestationFinishCertRequest";
+const char kCryptohomeTpmAttestationDoesKeyExist[] =
+    "TpmAttestationDoesKeyExist";
+const char kCryptohomeTpmAttestationGetCertificate[] =
+    "TpmAttestationGetCertificate";
+const char kCryptohomeTpmAttestationGetPublicKey[] =
+    "TpmAttestationGetPublicKey";
+const char kCryptohomeTpmAttestationRegisterKey[] = "TpmAttestationRegisterKey";
+const char kCryptohomeTpmAttestationSignEnterpriseChallenge[] =
+    "TpmAttestationSignEnterpriseChallenge";
+const char kCryptohomeTpmAttestationSignSimpleChallenge[] =
+    "TpmAttestationSignSimpleChallenge";
+const char kCryptohomeTpmAttestationGetKeyPayload[] =
+    "TpmAttestationGetKeyPayload";
+const char kCryptohomeTpmAttestationSetKeyPayload[] =
+    "TpmAttestationSetKeyPayload";
+const char kCryptohomeTpmAttestationDeleteKeys[] =
+    "TpmAttestationDeleteKeys";
+const char kCryptohomeGetKeyDataEx[] = "GetKeyDataEx";
+const char kCryptohomeCheckKeyEx[] = "CheckKeyEx";
+const char kCryptohomeMountEx[] = "MountEx";
+const char kCryptohomeAddKeyEx[] = "AddKeyEx";
+const char kCryptohomeUpdateKeyEx[] = "UpdateKeyEx";
+const char kCryptohomeRemoveKeyEx[] = "RemoveKeyEx";
+const char kCryptohomeSignBootLockbox[] = "SignBootLockbox";
+const char kCryptohomeVerifyBootLockbox[] = "VerifyBootLockbox";
+const char kCryptohomeFinalizeBootLockbox[] = "FinalizeBootLockbox";
+const char kCryptohomeGetBootAttribute[] = "GetBootAttribute";
+const char kCryptohomeSetBootAttribute[] = "SetBootAttribute";
+const char kCryptohomeFlushAndSignBootAttributes[] =
+    "FlushAndSignBootAttributes";
+const char kCryptohomeGetLoginStatus[] = "GetLoginStatus";
+const char kCryptohomeGetTpmStatus[] = "GetTpmStatus";
+const char kCryptohomeGetEndorsementInfo[] = "GetEndorsementInfo";
+const char kCryptohomeRenameCryptohome[] = "RenameCryptohome";
+const char kCryptohomeGetAccountDiskUsage[] = "GetAccountDiskUsage";
+const char kCryptohomeGetFirmwareManagementParameters[] =
+    "GetFirmwareManagementParameters";
+const char kCryptohomeSetFirmwareManagementParameters[] =
+    "SetFirmwareManagementParameters";
+const char kCryptohomeRemoveFirmwareManagementParameters[] =
+    "RemoveFirmwareManagementParameters";
+
+// Signals
+const char kSignalAsyncCallStatus[] = "AsyncCallStatus";
+const char kSignalAsyncCallStatusWithData[] = "AsyncCallStatusWithData";
+const char kSignalTpmInitStatus[] = "TpmInitStatus";
+const char kSignalCleanupUsersRemoved[] = "CleanupUsersRemoved";
+const char kSignalLowDiskSpace[] = "LowDiskSpace";
+// Error code
+enum MountError {
+  MOUNT_ERROR_NONE = 0,
+  MOUNT_ERROR_FATAL = 1 << 0,
+  MOUNT_ERROR_KEY_FAILURE = 1 << 1,
+  MOUNT_ERROR_MOUNT_POINT_BUSY = 1 << 2,
+  MOUNT_ERROR_TPM_COMM_ERROR = 1 << 3,
+  MOUNT_ERROR_TPM_DEFEND_LOCK = 1 << 4,
+  MOUNT_ERROR_USER_DOES_NOT_EXIST = 1 << 5,
+  MOUNT_ERROR_TPM_NEEDS_REBOOT = 1 << 6,
+  MOUNT_ERROR_RECREATED = 1 << 31,
+};
+}  // namespace cryptohome
+
+#endif  // SYSTEM_API_DBUS_CRYPTOHOME_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/cryptohome/key.proto b/system_api/dbus/cryptohome/key.proto
new file mode 100644
index 0000000..fb95b48
--- /dev/null
+++ b/system_api/dbus/cryptohome/key.proto
@@ -0,0 +1,97 @@
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Provides wire-type for cryptohome Key objects.  It does not
+// represent the entirety of the bookkeeping data needed by Cryptohome.
+//
+// Anything in this file may be persisted on disk.  Update carefully!
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package cryptohome;
+
+message KeyAuthorizationSecretUsage {
+  optional bool encrypt = 1;
+  optional bool sign = 2;
+}
+
+message KeyAuthorizationSecret {
+  optional KeyAuthorizationSecretUsage usage = 1;
+  optional bytes symmetric_key = 2;
+  optional bytes public_key = 3;
+  // Indicates if the symmetric_key is wrapped.
+  optional bool wrapped = 4 [default=false];
+}
+
+message KeyAuthorizationData {
+  enum KeyAuthorizationType {
+    KEY_AUTHORIZATION_TYPE_HMACSHA256 = 0;
+    KEY_AUTHORIZATION_TYPE_AES256CBC_HMACSHA256 = 1;
+  }
+  optional KeyAuthorizationType type = 1;
+  repeated KeyAuthorizationSecret secrets = 2;
+}
+
+// Software-enforced privileges.
+message KeyPrivileges {
+  // Allows the key to mount the cryptohome.
+  optional bool mount = 1 [default=true];
+  // Allows new keys to be added.
+  optional bool add = 2 [default=true];
+  // Allows other existing keys to be removed.
+  optional bool remove = 3 [default=true];
+  // Allows the key to update itself.
+  optional bool update = 4 [default=true];
+  // Allows a key to update itself iff the requested change
+  // is authorized as per KeyAuthorizationData.
+  optional bool authorized_update = 5 [default=false];
+}
+
+// Public metadata stored on behalf of the KeyProvider.
+message KeyProviderData {
+  message Entry {
+    optional string name = 1;
+    optional int64 number = 2;
+    optional bytes bytes = 3;
+  }
+  repeated Entry entry = 1;
+}
+
+message KeyData {
+  // The KeyType should specify the handling needed by Cryptohome
+  // and not a provider KeyType.
+  enum KeyType {
+    KEY_TYPE_PASSWORD = 0;
+  }
+  optional KeyType type = 1;
+  // All keys must be labeled when persisted to disk, but when KeyData
+  // is used in an UpdateKeyRequest, only defined fields are necessary
+  // (so that the caller doesn't need the full KeyData first).
+  optional string label = 2;
+  // If undefined, use the default settings.
+  optional KeyPrivileges privileges = 3;
+  optional int64 revision = 4;
+  // At present, only support for one authorization mechanism is implemented.
+  repeated KeyAuthorizationData authorization_data = 5;
+  // Data stored for use by the provider of the key, often for pre-processing
+  // of passwords or custom provider key typing.
+  // This will be size-limited by serialized size (e.g., 4096 bytes).
+  optional KeyProviderData provider_data = 6;
+}
+
+// Key is not presently persisted to disk, but it acts as the single authority
+// for what comprises a key.
+message Key {
+  // In most cases, |data| is required.  When used in an UpdateKeyRequest, it
+  // is only required if KeyData is changing.  If only the |secret| is changing,
+  // this field may be left unset.
+  optional KeyData data = 1;
+  // |secret| is required for many requests, like AddKeyRequest, but not all.
+  // An UpdateKeyRequest only requires the changes to the Key that was
+  // was authorized in the AuthorizationRequest. Making |secret| required would
+  // logically force a key rotation even if the values were the same.
+  optional bytes secret = 2;
+}
diff --git a/system_api/dbus/cryptohome/rpc.proto b/system_api/dbus/cryptohome/rpc.proto
new file mode 100644
index 0000000..84fb203
--- /dev/null
+++ b/system_api/dbus/cryptohome/rpc.proto
@@ -0,0 +1,325 @@
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// The messages in this file comprise the DBus/Proto interface for
+// Cryptohome where there is an AccountIdentifer argument, an
+// AuthorizationRequest (if needed for the call), and the call's
+// parameters as <Call>Request.
+//
+// 'optional' annotations are used heavily in the RPC definition
+// because the RPC endpoints most properly sanity check the contents
+// for application-specific logic, and the more optional-with-default
+// parameters exist, the less data is actually transferred on the wire
+// in "default" situations.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package cryptohome;
+
+import "key.proto";
+
+// Error codes do not need to be sequential per-call.
+// Prefixes by Request/Reply type should be used to help
+// callers know if specialized errors apply.
+enum CryptohomeErrorCode {
+  // 0 is the default value of BaseReply::error. It
+  // should never be used.
+  CRYPTOHOME_ERROR_NOT_SET = 0;
+
+  CRYPTOHOME_ERROR_ACCOUNT_NOT_FOUND = 1;
+  CRYPTOHOME_ERROR_AUTHORIZATION_KEY_NOT_FOUND = 2;
+  CRYPTOHOME_ERROR_AUTHORIZATION_KEY_FAILED = 3;
+  CRYPTOHOME_ERROR_NOT_IMPLEMENTED = 4;
+  CRYPTOHOME_ERROR_MOUNT_FATAL = 5;
+  CRYPTOHOME_ERROR_MOUNT_MOUNT_POINT_BUSY = 6;
+  CRYPTOHOME_ERROR_TPM_COMM_ERROR = 7;
+  CRYPTOHOME_ERROR_TPM_DEFEND_LOCK = 8;
+  CRYPTOHOME_ERROR_TPM_NEEDS_REBOOT = 9;
+  CRYPTOHOME_ERROR_AUTHORIZATION_KEY_DENIED = 10;
+  CRYPTOHOME_ERROR_KEY_QUOTA_EXCEEDED = 11;
+  CRYPTOHOME_ERROR_KEY_LABEL_EXISTS = 12;
+  CRYPTOHOME_ERROR_BACKING_STORE_FAILURE = 13;
+  CRYPTOHOME_ERROR_UPDATE_SIGNATURE_INVALID = 14;
+  CRYPTOHOME_ERROR_KEY_NOT_FOUND = 15;
+  CRYPTOHOME_ERROR_LOCKBOX_SIGNATURE_INVALID = 16;
+  CRYPTOHOME_ERROR_LOCKBOX_CANNOT_SIGN = 17;
+  CRYPTOHOME_ERROR_BOOT_ATTRIBUTE_NOT_FOUND = 18;
+  CRYPTOHOME_ERROR_BOOT_ATTRIBUTES_CANNOT_SIGN = 19;
+  CRYPTOHOME_ERROR_TPM_EK_NOT_AVAILABLE = 20;
+  CRYPTOHOME_ERROR_ATTESTATION_NOT_READY = 21;
+  CRYPTOHOME_ERROR_CANNOT_CONNECT_TO_CA = 22;
+  CRYPTOHOME_ERROR_CA_REFUSED_ENROLLMENT = 23;
+  CRYPTOHOME_ERROR_CA_REFUSED_CERTIFICATE = 24;
+  CRYPTOHOME_ERROR_INTERNAL_ATTESTATION_ERROR = 25;
+  CRYPTOHOME_ERROR_FIRMWARE_MANAGEMENT_PARAMETERS_INVALID = 26;
+  CRYPTOHOME_ERROR_FIRMWARE_MANAGEMENT_PARAMETERS_CANNOT_STORE = 27;
+  CRYPTOHOME_ERROR_FIRMWARE_MANAGEMENT_PARAMETERS_CANNOT_REMOVE = 28;
+}
+
+message AccountIdentifier {
+  // |email| is deprecated. Don't use it.
+  optional string email = 1;
+
+  optional string account_id = 2;
+}
+
+message AuthorizationRequest {
+  // |key| must supply at least a |key.secret()|.  If no |key.data()| or
+  // |key.data().label()| is supplied, the |key.secret()| will be tested
+  // against all compatible |key.data().type()| keys, where
+  // KEY_TYPE_PASSWORD is the default type.  If
+  // |key.data().label()| is supplied, then the |key.secret()| will only be
+  // tested against the matching VaultKeyset.
+  optional Key key = 1;
+};
+
+// These parameters are for inbound data to Cryptohome RPC
+// interfaces.  When calls are added that return data, a
+// <Call>Response should be defined.
+message MountRequest {
+  // Perform an ephemeral mount only.
+  optional bool require_ephemeral = 1 [default=false];
+  // If defined, the account will be created if it does not exist.
+  // Additionally, a failed AuthorizationRequest will be expected as
+  // there will be no existing keys.
+  optional CreateRequest create = 2;
+}
+
+// A BaseReply type is used for all cryptohomed responses. A shared base class
+// is used because all calls will always reply with no-error or an error value.
+// A centralized definition allows for a reusable reply handler for cases where
+// there is no Request-specific reply data.  Any specialized data will live in
+// an extension as per MountReply below:
+//   if (reply.HasExtension(MountReply::reply)) { ... }
+//
+message BaseReply {
+  // If a call was successful, error will not be defined (clear_error()).
+  // If a call failed, it must set an error code (set_error(CODE)).
+  // In either case, call-specific data may be added as an extension.
+  optional CryptohomeErrorCode error = 1;
+
+  extensions 1000 to max;
+}
+
+// The MountRequest call may return more than just success or failure
+// so it embeds itself in a BaseReply as an extension.
+message MountReply {
+  extend BaseReply {
+    optional MountReply reply = 1000;
+  }
+  // |recreated| is set when the cryptohome had to be wiped
+  // because the key or data was an unrecoverable.  It does not imply
+  // failure to Mount nor is it 'true' when a CreateRequest creates
+  // a cryptohome for the first time.
+  optional bool recreated = 1 [default=false];
+  // Returns the filesystem-sanitized username.
+  optional string sanitized_username = 2;
+};
+
+message CreateRequest {
+  repeated Key keys = 1;
+  // Explicitly use the |key| from the AuthorizationRequest.
+  // Setting this value means that the KeyData is filled as it
+  // would be with a Key above or in an AddKeyRequest.
+  optional bool copy_authorization_key = 2 [default=false];
+  // In the future, this will contain account-wide data like
+  // the deletion priority or the IdP's origin.
+}
+
+message AddKeyRequest {
+  optional Key key = 1;
+  optional bool clobber_if_exists = 2 [default=false];
+}
+
+message UpdateKeyRequest {
+  optional Key changes = 1;
+  optional bytes authorization_signature = 2;
+}
+
+message CheckKeyRequest {
+}
+
+message RemoveKeyRequest {
+  // Only key.data().label() is used at present.
+  optional Key key = 1;
+}
+
+message SignBootLockboxRequest {
+  // The data to be signed.
+  optional bytes data = 1;
+}
+
+message SignBootLockboxReply {
+  extend BaseReply {
+    optional SignBootLockboxReply reply = 1001;
+  }
+  optional bytes signature = 1;
+}
+
+message VerifyBootLockboxRequest {
+  // The signed data to be verified.
+  optional bytes data = 1;
+  // The signature to be verified.
+  optional bytes signature = 2;
+}
+
+message FinalizeBootLockboxRequest {
+}
+
+message GetKeyDataRequest {
+  // |key| must supply at least one attribute and all others will be treated as
+  // wildcards.  Currently only |key.data().label()| may be supplied.  Like
+  // AuthorizationRequest, support can be added for queries by
+  // |key.data().type()| to return all keys of a certain class, testing
+  // |key.secret()|, or |key.data().provider_data()| entries.
+  optional Key key = 1;
+}
+
+message GetKeyDataReply {
+  extend BaseReply {
+    optional GetKeyDataReply reply = 1002;
+  }
+  repeated KeyData key_data = 1;
+}
+
+message GetBootAttributeRequest {
+  optional string name = 1;
+}
+
+message GetBootAttributeReply {
+  extend BaseReply {
+    optional GetBootAttributeReply reply = 1003;
+  }
+  optional bytes value = 1;
+}
+
+message SetBootAttributeRequest {
+  optional string name = 1;
+  optional bytes value = 2;
+}
+
+message FlushAndSignBootAttributesRequest {
+}
+
+message ListKeysRequest {
+  // The default behavior is by label so any extension here should honor that.
+}
+
+message ListKeysReply {
+  extend BaseReply {
+    optional ListKeysReply reply = 1004;
+  }
+  repeated string labels = 1;
+}
+
+message GetLoginStatusRequest {
+}
+
+message GetLoginStatusReply {
+  extend BaseReply {
+    optional GetLoginStatusReply reply = 1005;
+  }
+  optional bool owner_user_exists=1;
+  optional bool boot_lockbox_finalized=2;
+}
+
+message GetTpmStatusRequest {
+}
+
+message GetTpmStatusReply {
+  extend BaseReply {
+    optional GetTpmStatusReply reply = 1006;
+  }
+  // Whether a TPM is enabled on the system.
+  optional bool enabled = 1;
+  // Whether the TPM has been owned.
+  optional bool owned = 2;
+  // Whether the TPM initialization flow has completed. This includes taking
+  // ownership, preparing attestation data, and finalizing lockbox NVRAM.
+  optional bool initialized = 3;
+  // The TPM owner password. This is only available when (owned &&
+  // !initialized) and sometimes not even then.
+  optional string owner_password = 4;
+  // Whether attestation data has been prepared. This includes reading the
+  // endorsement certificate out of NVRAM and generating an identity key. This
+  // does not include any kind of enrollment with a Privacy CA.
+  optional bool attestation_prepared = 7;
+  // Whether the device has enrolled with a Privacy CA. This means the identity
+  // key has been successfully certified.
+  optional bool attestation_enrolled = 8;
+  // The current dictionary attack counter value.
+  optional int32 dictionary_attack_counter = 9;
+  // The current dictionary attack counter threshold.
+  optional int32 dictionary_attack_threshold = 10;
+  // Whether the TPM is in some form of dictionary attack lockout.
+  optional bool dictionary_attack_lockout_in_effect = 11;
+  // The number of seconds remaining in the lockout.
+  optional int32 dictionary_attack_lockout_seconds_remaining = 12;
+  // Whether the install lockbox has been finalized.
+  optional bool install_lockbox_finalized = 13;
+  // Whether the boot lockbox has been finalized.
+  optional bool boot_lockbox_finalized = 14;
+  // Whether the current PCR values show a verified boot.
+  optional bool verified_boot_measured = 15;
+}
+
+message GetEndorsementInfoRequest {
+}
+
+message GetEndorsementInfoReply {
+  extend BaseReply {
+    optional GetEndorsementInfoReply reply = 1007;
+  }
+  // The endorsement public key (PKCS #1 RSAPublicKey).
+  optional bytes ek_public_key = 1;
+  // The endorsement certificate (X.509).
+  optional bytes ek_certificate = 2;
+}
+
+message InitializeCastKeyRequest {
+}
+
+// Flags for GetFirmwareManagementParametersReply and
+// SetFirmwareManagementParametersRequest
+enum FirmwareManagementParametersFlags {
+  NONE = 0;
+  DEVELOPER_DISABLE_BOOT = 1;
+  DEVELOPER_DISABLE_RECOVERY_INSTALL = 2;
+  DEVELOPER_DISABLE_RECOVERY_ROOTFS = 4;
+  DEVELOPER_ENABLE_USB = 8;
+  DEVELOPER_ENABLE_LEGACY = 16;
+  DEVELOPER_USE_KEY_HASH = 32;
+}
+
+message GetFirmwareManagementParametersRequest {
+}
+
+message GetFirmwareManagementParametersReply {
+  extend BaseReply {
+    optional GetFirmwareManagementParametersReply reply = 1008;
+  }
+
+  // Flags (zero or more from FirmwareManagementParametersFlags)
+  optional int32 flags = 1;
+  optional bytes developer_key_hash = 2;
+}
+
+message SetFirmwareManagementParametersRequest {
+  // Flags (zero or more from FirmwareManagementParametersFlags)
+  optional int32 flags = 1;
+  optional bytes developer_key_hash = 2;
+}
+
+message RemoveFirmwareManagementParametersRequest {
+}
+
+message GetAccountDiskUsageReply {
+  extend BaseReply {
+    optional GetAccountDiskUsageReply reply = 1009;
+  }
+  // The size of cryptohome in bytes.
+  optional int64 size = 1;
+}
diff --git a/system_api/dbus/cryptohome/signed_secret.proto b/system_api/dbus/cryptohome/signed_secret.proto
new file mode 100644
index 0000000..16fedab
--- /dev/null
+++ b/system_api/dbus/cryptohome/signed_secret.proto
@@ -0,0 +1,34 @@
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Provides wire protocol for signed password changes from
+// the cloud for Chrome OS accounts subject to remote management.
+//
+// The data in this file will be shared in Chrome, Chrome OS (cryptohome),
+// and on servers. Ensure all parties are aware when making changes.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package ac.chrome.managedaccounts.account;
+
+// The secret currently assumes a password-equivalent key and a
+// revision, to avoid rollbacks.  This secret should be serialized
+// and signed by a pre-negotiated key to authorize updates from the
+// server to the host OS.
+message Secret {
+  optional int64 revision = 1;
+  optional bytes secret = 2;
+  // In the future, a type field will be added to allow encrypted secrets
+  // and different secret types.
+}
+
+// This is an example format if this were sent on the wire.
+// It is assumed that neither Secret or SignedSecret will ever be sent
+// on the wire, but only reconstructed from source data.
+message SignedSecret {
+  optional bytes serialized_secret = 1;
+  optional bytes signature = 2;
+}
diff --git a/system_api/dbus/debugd/dbus-constants.h b/system_api/dbus/debugd/dbus-constants.h
new file mode 100644
index 0000000..514ab69
--- /dev/null
+++ b/system_api/dbus/debugd/dbus-constants.h
@@ -0,0 +1,57 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_DEBUGD_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_DEBUGD_DBUS_CONSTANTS_H_
+
+namespace debugd {
+const char kDebugdInterface[] = "org.chromium.debugd";
+const char kDebugdServicePath[] = "/org/chromium/debugd";
+const char kDebugdServiceName[] = "org.chromium.debugd";
+
+// Methods.
+const char kDumpDebugLogs[] = "DumpDebugLogs";
+const char kGetDebugLogs[] = "GetDebugLogs";
+const char kGetInterfaces[] = "GetInterfaces";
+const char kGetModemStatus[] = "GetModemStatus";
+const char kGetNetworkStatus[] = "GetNetworkStatus";
+const char kGetPerfOutput[] = "GetPerfOutput";
+const char kGetPerfOutputFd[] = "GetPerfOutputFd";
+const char kGetRoutes[] = "GetRoutes";
+const char kGetWiMaxStatus[] = "GetWiMaxStatus";
+const char kSetDebugMode[] = "SetDebugMode";
+const char kSystraceStart[] = "SystraceStart";
+const char kSystraceStop[] = "SystraceStop";
+const char kSystraceStatus[] = "SystraceStatus";
+const char kGetLog[] = "GetLog";
+const char kGetAllLogs[] = "GetAllLogs";
+const char kGetUserLogFiles[] = "GetUserLogFiles";
+const char kGetFeedbackLogs[] = "GetFeedbackLogs";
+const char kGetBigFeedbackLogs[] = "GetBigFeedbackLogs";
+const char kTestICMP[] = "TestICMP";
+const char kTestICMPWithOptions[] = "TestICMPWithOptions";
+const char kLogKernelTaskStates[] = "LogKernelTaskStates";
+const char kUploadCrashes[] = "UploadCrashes";
+const char kRemoveRootfsVerification[] = "RemoveRootfsVerification";
+const char kEnableChromeRemoteDebugging[] = "EnableChromeRemoteDebugging";
+const char kEnableBootFromUsb[] = "EnableBootFromUsb";
+const char kConfigureSshServer[] = "ConfigureSshServer";
+const char kSetUserPassword[] = "SetUserPassword";
+const char kEnableChromeDevFeatures[] = "EnableChromeDevFeatures";
+const char kQueryDevFeatures[] = "QueryDevFeatures";
+const char kSetOomScoreAdj[] = "SetOomScoreAdj";
+
+// Values.
+enum DevFeatureFlag {
+  DEV_FEATURES_DISABLED = 1 << 0,
+  DEV_FEATURE_ROOTFS_VERIFICATION_REMOVED = 1 << 1,
+  DEV_FEATURE_BOOT_FROM_USB_ENABLED = 1 << 2,
+  DEV_FEATURE_SSH_SERVER_CONFIGURED = 1 << 3,
+  DEV_FEATURE_DEV_MODE_ROOT_PASSWORD_SET = 1 << 4,
+  DEV_FEATURE_SYSTEM_ROOT_PASSWORD_SET = 1 << 5,
+  DEV_FEATURE_CHROME_REMOTE_DEBUGGING_ENABLED = 1 << 6,
+};
+}  // namespace debugd
+
+#endif  // SYSTEM_API_DBUS_DEBUGD_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/field_trial_list.proto b/system_api/dbus/field_trial_list.proto
new file mode 100644
index 0000000..5558308
--- /dev/null
+++ b/system_api/dbus/field_trial_list.proto
@@ -0,0 +1,20 @@
+// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+// This protobuf is for serializing Finch experimental field trial data to
+// disk for consumption by processes outside the browser.
+message FieldTrialList {
+  // A pair representing a Field Trial and its selected group.
+  message ActiveGroup {
+    optional string trial_name = 1;
+    optional string group_name = 2;
+  }
+
+  // All the active field trial groups for this device.
+  repeated ActiveGroup group = 1;
+}
diff --git a/system_api/dbus/login_manager/dbus-constants.h b/system_api/dbus/login_manager/dbus-constants.h
new file mode 100644
index 0000000..5dc7a07
--- /dev/null
+++ b/system_api/dbus/login_manager/dbus-constants.h
@@ -0,0 +1,61 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_LOGIN_MANAGER_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_LOGIN_MANAGER_DBUS_CONSTANTS_H_
+
+namespace login_manager {
+const char kSessionManagerInterface[] = "org.chromium.SessionManagerInterface";
+const char kSessionManagerServicePath[] = "/org/chromium/SessionManager";
+const char kSessionManagerServiceName[] = "org.chromium.SessionManager";
+// Methods
+const char kSessionManagerEmitLoginPromptVisible[] = "EmitLoginPromptVisible";
+const char kSessionManagerStartSession[] = "StartSession";
+const char kSessionManagerStopSession[] = "StopSession";
+const char kSessionManagerRestartJob[] = "RestartJob";
+const char kSessionManagerStorePolicy[] = "StorePolicy";
+const char kSessionManagerRetrievePolicy[] = "RetrievePolicy";
+const char kSessionManagerStorePolicyForUser[] = "StorePolicyForUser";
+const char kSessionManagerRetrievePolicyForUser[] = "RetrievePolicyForUser";
+const char kSessionManagerStoreDeviceLocalAccountPolicy[] =
+    "StoreDeviceLocalAccountPolicy";
+const char kSessionManagerRetrieveDeviceLocalAccountPolicy[] =
+    "RetrieveDeviceLocalAccountPolicy";
+const char kSessionManagerRetrieveSessionState[] = "RetrieveSessionState";
+const char kSessionManagerRetrieveActiveSessions[] = "RetrieveActiveSessions";
+const char kSessionManagerStartDeviceWipe[] = "StartDeviceWipe";
+const char kSessionManagerHandleSupervisedUserCreationStarting[] =
+    "HandleSupervisedUserCreationStarting";
+const char kSessionManagerHandleSupervisedUserCreationFinished[] =
+    "HandleSupervisedUserCreationFinished";
+const char kSessionManagerLockScreen[] = "LockScreen";
+const char kSessionManagerHandleLockScreenShown[] = "HandleLockScreenShown";
+const char kSessionManagerHandleLockScreenDismissed[] =
+    "HandleLockScreenDismissed";
+const char kSessionManagerSetFlagsForUser[] = "SetFlagsForUser";
+const char kSessionManagerGetServerBackedStateKeys[] =
+    "GetServerBackedStateKeys";
+const char kSessionManagerInitMachineInfo[] = "InitMachineInfo";
+const char kSessionManagerCheckArcAvailability[] = "CheckArcAvailability";
+const char kSessionManagerStartArcInstance[] = "StartArcInstance";
+const char kSessionManagerStopArcInstance[] = "StopArcInstance";
+const char kSessionManagerGetArcStartTimeTicks[] = "GetArcStartTimeTicks";
+const char kSessionManagerRemoveArcData[] = "RemoveArcData";
+const char kSessionManagerStartContainer[] = "StartContainer";
+const char kSessionManagerStopContainer[] = "StopContainer";
+// Signals
+const char kLoginPromptVisibleSignal[] = "LoginPromptVisible";
+const char kSessionStateChangedSignal[] = "SessionStateChanged";
+// ScreenLock signals.
+const char kScreenIsLockedSignal[] = "ScreenIsLocked";
+const char kScreenIsUnlockedSignal[] = "ScreenIsUnlocked";
+// Ownership API signals.
+const char kOwnerKeySetSignal[] = "SetOwnerKeyComplete";
+const char kPropertyChangeCompleteSignal[] = "PropertyChangeComplete";
+// ARC instance signals.
+const char kArcInstanceStopped[] = "ArcInstanceStopped";
+const char kArcInstanceRebooted[] = "ArcInstanceRebooted";
+}  // namespace login_manager
+
+#endif  // SYSTEM_API_DBUS_LOGIN_MANAGER_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/lorgnette/dbus-constants.h b/system_api/dbus/lorgnette/dbus-constants.h
new file mode 100644
index 0000000..ac2e8ac
--- /dev/null
+++ b/system_api/dbus/lorgnette/dbus-constants.h
@@ -0,0 +1,31 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_LORGNETTE_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_LORGNETTE_DBUS_CONSTANTS_H_
+
+namespace lorgnette {
+const char kManagerServiceName[] = "org.chromium.lorgnette";
+const char kManagerServiceInterface[] = "org.chromium.lorgnette.Manager";
+const char kManagerServicePath[] = "/org/chromium/lorgnette/Manager";
+const char kManagerServiceError[] = "org.chromium.lorgnette.Error";
+
+// Methods.
+const char kListScannersMethod[] = "ListScanners";
+const char kScanImageMethod[] = "ScanImage";
+
+// Attributes of scanners returned from "ListScanners".
+const char kScannerPropertyManufacturer[] = "Manufacturer";
+const char kScannerPropertyModel[] = "Model";
+const char kScannerPropertyType[] = "Type";
+
+// Parameters supplied to a "ScanImage" request.
+const char kScanPropertyMode[] = "Mode";
+const char kScanPropertyModeColor[] = "Color";
+const char kScanPropertyModeGray[] = "Gray";
+const char kScanPropertyModeLineart[] = "Lineart";
+const char kScanPropertyResolution[] = "Resolution";
+}  // namespace lorgnette
+
+#endif  // SYSTEM_API_DBUS_LORGNETTE_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/mtp_file_entry.proto b/system_api/dbus/mtp_file_entry.proto
new file mode 100644
index 0000000..943498b
--- /dev/null
+++ b/system_api/dbus/mtp_file_entry.proto
@@ -0,0 +1,55 @@
+// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+// This protobuf is for sending file entries from a mtp/ptp device to the
+// browser.
+message MtpFileEntry {
+  // The id for the file on the mtp/ptp device.
+  optional uint32 item_id = 1;
+
+  // The id of this file's parent on the mtp/ptp device.
+  optional uint32 parent_id = 2;
+
+  // The file's name.
+  optional string file_name = 3;
+
+  // The file's size.
+  optional uint64 file_size = 4;
+
+  // The file's modification time. This is approximately the number of seconds
+  // since Unix epoch. However, it does not account for timezone offsets or
+  // daylight savings time.
+  optional int64 modification_time = 5;
+
+  // Values match libmtp values unless noted below.
+  enum FileType {
+    FILE_TYPE_FOLDER = 0;
+    FILE_TYPE_JPEG = 14;
+    FILE_TYPE_JFIF = 15;
+    FILE_TYPE_TIFF = 16;
+    FILE_TYPE_BMP = 17;
+    FILE_TYPE_GIF = 18;
+    FILE_TYPE_PICT = 19;
+    FILE_TYPE_PNG = 20;
+    FILE_TYPE_WINDOWSIMAGEFORMAT = 25;
+    FILE_TYPE_JP2 = 40;
+    FILE_TYPE_JPX = 41;
+    // Truly unknown file type.
+    FILE_TYPE_UNKNOWN = 44;
+    // There's more file types to map to, but right now they are not
+    // interesting. Just assign a dummy value for now.
+    FILE_TYPE_OTHER = 9999;
+  }
+
+  // The file's type.
+  optional FileType file_type = 6;
+}
+
+message MtpFileEntries {
+  repeated MtpFileEntry file_entries = 1;
+}
diff --git a/system_api/dbus/mtp_storage_info.proto b/system_api/dbus/mtp_storage_info.proto
new file mode 100644
index 0000000..0551b2a
--- /dev/null
+++ b/system_api/dbus/mtp_storage_info.proto
@@ -0,0 +1,57 @@
+// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+// This protobuf is for sending the characteristics of a storage from a mtp/ptp
+// device to the browser.
+message MtpStorageInfo {
+  // The name of the storage. e.g. usb:2,5:65537
+  optional string storage_name = 1;
+
+  // Device vendor name. e.g. Kodak
+  optional string vendor = 2;
+
+  // Device vendor id. e.g. 0x040a
+  optional uint32 vendor_id = 3;
+
+  // Device product name. e.g. DC4800
+  optional string product = 4;
+
+  // Device product id. e.g. 0x0160
+  optional uint32 product_id = 5;
+
+  // Device flags as defined by libmtp. See libmtp's src/device-flags.h.
+  optional uint32 device_flags = 6;
+
+  // Device storage type as defined in the PIMA 15740-2000 standard, first
+  // edition, section 5.5.3, table 11.
+  optional uint32 storage_type = 7;
+
+  // Device file system type as defined in the PIMA 15740-2000 standard, first
+  // edition, section 5.5.3, table 12.
+  optional uint32 filesystem_type = 8;
+
+  // Access capability as defined in the PIMA 15740-2000 standard, first
+  // edition, section 5.5.3, table 13.
+  optional uint32 access_capability = 9;
+
+  // Capacity of the storage in bytes.
+  optional uint64 max_capacity = 10;
+
+  // Free space of the storage in bytes.
+  optional uint64 free_space_in_bytes = 11;
+
+  // Free space of the storage in objects. i.e. How many more objects can be
+  // created on the device.
+  optional uint64 free_space_in_objects = 12;
+
+  // A description of the storage. This is device dependent.
+  optional string storage_description = 13;
+
+  // The volume label of the storage. This is device dependent.
+  optional string volume_identifier = 14;
+}
diff --git a/system_api/dbus/permission_broker/dbus-constants.h b/system_api/dbus/permission_broker/dbus-constants.h
new file mode 100644
index 0000000..d3d37ef
--- /dev/null
+++ b/system_api/dbus/permission_broker/dbus-constants.h
@@ -0,0 +1,25 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_PERMISSION_BROKER_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_PERMISSION_BROKER_DBUS_CONSTANTS_H_
+
+namespace permission_broker {
+const char kPermissionBrokerInterface[] = "org.chromium.PermissionBroker";
+const char kPermissionBrokerServicePath[] = "/org/chromium/PermissionBroker";
+const char kPermissionBrokerServiceName[] = "org.chromium.PermissionBroker";
+
+// Methods
+const char kCheckPathAccess[] = "CheckPathAccess";
+const char kRequestPathAccess[] = "RequestPathAccess";
+const char kOpenPath[] = "OpenPath";
+const char kRequestTcpPortAccess[] = "RequestTcpPortAccess";
+const char kRequestUdpPortAccess[] = "RequestUdpPortAccess";
+const char kReleaseTcpPort[] = "ReleaseTcpPort";
+const char kReleaseUdpPort[] = "ReleaseUdpPort";
+const char kRequestVpnSetup[] = "RequestVpnSetup";
+const char kRemoveVpnSetup[] = "RemoveVpnSetup";
+}  // namespace permission_broker
+
+#endif  // SYSTEM_API_DBUS_PERMISSION_BROKER_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/power_manager/OWNERS b/system_api/dbus/power_manager/OWNERS
new file mode 100644
index 0000000..6a46306
--- /dev/null
+++ b/system_api/dbus/power_manager/OWNERS
@@ -0,0 +1,3 @@
+set noparent
+derat@chromium.org
+snanda@chromium.org
diff --git a/system_api/dbus/power_manager/dbus-constants.h b/system_api/dbus/power_manager/dbus-constants.h
new file mode 100644
index 0000000..fa42cb1
--- /dev/null
+++ b/system_api/dbus/power_manager/dbus-constants.h
@@ -0,0 +1,66 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_POWER_MANAGER_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_POWER_MANAGER_DBUS_CONSTANTS_H_
+
+namespace power_manager {
+// powerd
+const char kPowerManagerInterface[] = "org.chromium.PowerManager";
+const char kPowerManagerServicePath[] = "/org/chromium/PowerManager";
+const char kPowerManagerServiceName[] = "org.chromium.PowerManager";
+// Methods exposed by powerd.
+const char kDecreaseScreenBrightnessMethod[] = "DecreaseScreenBrightness";
+const char kIncreaseScreenBrightnessMethod[] = "IncreaseScreenBrightness";
+const char kGetScreenBrightnessPercentMethod[] = "GetScreenBrightnessPercent";
+const char kSetScreenBrightnessPercentMethod[] = "SetScreenBrightnessPercent";
+const char kDecreaseKeyboardBrightnessMethod[] = "DecreaseKeyboardBrightness";
+const char kIncreaseKeyboardBrightnessMethod[] = "IncreaseKeyboardBrightness";
+const char kRequestRestartMethod[] = "RequestRestart";
+const char kRequestShutdownMethod[] = "RequestShutdown";
+const char kRequestSuspendMethod[] = "RequestSuspend";
+const char kGetPowerSupplyPropertiesMethod[] = "GetPowerSupplyProperties";
+const char kHandleUserActivityMethod[] = "HandleUserActivity";
+const char kHandleVideoActivityMethod[] = "HandleVideoActivity";
+const char kSetIsProjectingMethod[] = "SetIsProjecting";
+const char kSetPolicyMethod[] = "SetPolicy";
+const char kSetPowerSourceMethod[] = "SetPowerSource";
+const char kRegisterSuspendDelayMethod[] = "RegisterSuspendDelay";
+const char kUnregisterSuspendDelayMethod[] = "UnregisterSuspendDelay";
+const char kHandleSuspendReadinessMethod[] = "HandleSuspendReadiness";
+const char kRegisterDarkSuspendDelayMethod[] = "RegisterDarkSuspendDelay";
+const char kUnregisterDarkSuspendDelayMethod[] = "UnregisterDarkSuspendDelay";
+const char kHandleDarkSuspendReadinessMethod[] = "HandleDarkSuspendReadiness";
+const char kHandlePowerButtonAcknowledgmentMethod[] =
+    "HandlePowerButtonAcknowledgment";
+const char kRecordDarkResumeWakeReasonMethod[] = "RecordDarkResumeWakeReason";
+// Signals emitted by powerd.
+const char kBrightnessChangedSignal[] = "BrightnessChanged";
+const char kKeyboardBrightnessChangedSignal[] = "KeyboardBrightnessChanged";
+const char kPeripheralBatteryStatusSignal[] = "PeripheralBatteryStatus";
+const char kPowerSupplyPollSignal[] = "PowerSupplyPoll";
+const char kSuspendImminentSignal[] = "SuspendImminent";
+const char kDarkSuspendImminentSignal[] = "DarkSuspendImminent";
+const char kSuspendDoneSignal[] = "SuspendDone";
+const char kInputEventSignal[] = "InputEvent";
+const char kIdleActionImminentSignal[] = "IdleActionImminent";
+const char kIdleActionDeferredSignal[] = "IdleActionDeferred";
+// Values
+const int kBrightnessTransitionGradual = 1;
+const int kBrightnessTransitionInstant = 2;
+enum UserActivityType {
+  USER_ACTIVITY_OTHER = 0,
+  USER_ACTIVITY_BRIGHTNESS_UP_KEY_PRESS = 1,
+  USER_ACTIVITY_BRIGHTNESS_DOWN_KEY_PRESS = 2,
+  USER_ACTIVITY_VOLUME_UP_KEY_PRESS = 3,
+  USER_ACTIVITY_VOLUME_DOWN_KEY_PRESS = 4,
+  USER_ACTIVITY_VOLUME_MUTE_KEY_PRESS = 5,
+};
+enum RequestRestartReason {
+  REQUEST_RESTART_FOR_USER = 0,
+  REQUEST_RESTART_FOR_UPDATE = 1,
+};
+}  // namespace power_manager
+
+#endif  // SYSTEM_API_DBUS_POWER_MANAGER_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/power_manager/input_event.proto b/system_api/dbus/power_manager/input_event.proto
new file mode 100644
index 0000000..85aaadd
--- /dev/null
+++ b/system_api/dbus/power_manager/input_event.proto
@@ -0,0 +1,29 @@
+// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package power_manager;
+
+// Included in powerd's InputEvent signals.
+message InputEvent {
+  // Next ID to use: 3
+
+  // Type of event.
+  enum Type {
+    POWER_BUTTON_DOWN = 0;
+    POWER_BUTTON_UP = 1;
+    LID_OPEN = 2;
+    LID_CLOSED = 3;
+    TABLET_MODE_ON = 4;
+    TABLET_MODE_OFF = 5;
+  }
+  optional Type type = 1;
+
+  // Monotonically-increasing time at which this event occured, as given by
+  // base::TimeTicks::ToInternalValue().
+  optional int64 timestamp = 2;
+}
diff --git a/system_api/dbus/power_manager/peripheral_battery_status.proto b/system_api/dbus/power_manager/peripheral_battery_status.proto
new file mode 100644
index 0000000..fd4ba9e
--- /dev/null
+++ b/system_api/dbus/power_manager/peripheral_battery_status.proto
@@ -0,0 +1,22 @@
+// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package power_manager;
+
+message PeripheralBatteryStatus {
+  // Path of the battery sysfs.
+  optional string path = 1;
+
+  // Name of the peripheral device.
+  optional string name = 2;
+
+  // Battery level in range [0, 100]. Unset if the level is
+  // unknown or the device is disconnected.
+  optional int32 level = 3;
+}
+
diff --git a/system_api/dbus/power_manager/policy.proto b/system_api/dbus/power_manager/policy.proto
new file mode 100644
index 0000000..b678e37
--- /dev/null
+++ b/system_api/dbus/power_manager/policy.proto
@@ -0,0 +1,161 @@
+// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package power_manager;
+
+// Power management policy sent from Chrome to powerd.
+//
+// New settings take effect immediately.  For example, if |idle_ms| is
+// currently set to 15 minutes, the user has been inactive for 12 minutes,
+// and a message setting |idle_ms| to 10 minutes is received,
+// |idle_action| will be performed immediately.  If |lid_closed_action| is
+// DO_NOTHING, the lid is closed, and |lid_closed_action| is then set to
+// SHUT_DOWN, the system will shut down immediately.
+//
+// In the case of an unset field, powerd will restore a default value (as
+// opposed to continuing to use a value set by a previous message).  An
+// empty message will restore all settings to their defaults.
+message PowerManagementPolicy {
+  enum Action {
+    // Suspends the system.  Chrome may lock the screen first depending on
+    // its "Require password to wake from sleep" setting and the type of
+    // user that is logged in.
+    SUSPEND = 0;
+
+    // Ends the current user's session.  Does nothing at the login screen.
+    STOP_SESSION = 1;
+
+    // Shuts the system down.
+    SHUT_DOWN = 2;
+
+    // Does nothing.
+    DO_NOTHING = 3;
+
+    // Next value to use: 4
+  }
+
+  message Delays {
+    // Delay after which |idle_action| is performed, in milliseconds.  The
+    // inactivity timeout is reset in response to things like user activity
+    // (including the lid being opened, the power source changing, an
+    // external display being connected, etc.), resuming from suspend, or
+    // the session state changing.
+    optional int64 idle_ms = 1;
+
+    // Delay after which the screen will be turned off, in milliseconds.  0
+    // disables turning the screen off.  Capped to be less than or equal to
+    // |idle_ms|.  The same events that cause the inactivity timeout to be
+    // reset cause the screen to be turned back on.
+    optional int64 screen_off_ms = 2;
+
+    // Delay after which the screen will be dimmed, in milliseconds.  0
+    // disables dimming.  Capped to be less than or equal to
+    // |screen_off_ms| if |screen_off_ms| is set or less than or equal to
+    // |idle_ms| otherwise.  The same events that cause the inactivity
+    // timeout to be reset cause the screen to be undimmed.
+    optional int64 screen_dim_ms = 3;
+
+    // Delay after which the screen will be locked, in milliseconds.  0
+    // disables locking.  Capped to be less than |idle_ms|.  Note that
+    // lock-on-suspend is implemented within Chrome; this delay is provided
+    // for cases where the screen must be locked a significant amount of
+    // time before the device is suspended.
+    optional int64 screen_lock_ms = 4;
+
+    // Delay after which an IdleActionImminent signal will be emitted, in
+    // milliseconds. If the inactivity timeout is then reset before the idle
+    // action is performed, an IdleActionDeferred signal will be emitted. If the
+    // idle delay is changed after IdleActionImminent has been emitted, an
+    // additional signal will be emitted. 0 disables the signal. Capped to be
+    // less than or equal to |idle_ms|.
+    optional int64 idle_warning_ms = 5;
+
+    // Next ID to use: 6
+  }
+
+  // Action to perform when |idle_ms| (see Delays) is reached without any
+  // user activity while the system is on AC power.
+  optional Action ac_idle_action = 1;
+
+  // Idle action when the system is on battery power.
+  optional Action battery_idle_action = 11;
+
+  // Action to perform when the lid is closed.
+  optional Action lid_closed_action = 2;
+
+  // Delays used while the system is on AC power.
+  optional Delays ac_delays = 3;
+
+  // Delays used while the system is on battery power.
+  optional Delays battery_delays = 4;
+
+  // Should audio activity be honored?  If true, audio activity will
+  // prevent |idle_action| from being performed, although the screen
+  // dimming, off, and lock delays will still be in effect.  Once the audio
+  // has stopped, |idle_action| will be performed if no user or audio
+  // activity is observed for |idle_ms|.
+  optional bool use_audio_activity = 5;
+
+  // Should video activity be honored?  If true, video activity will
+  // prevent |idle_action| from being performed and the screen from being
+  // automatically dimmed, turned off, or locked.  All these timeouts will
+  // be reset once the video has stopped.
+  optional bool use_video_activity = 6;
+
+  // Backlight brightness in the range [0.0, 100.0] to use when on AC or battery
+  // power. When a message containing these fields is received, the backlight is
+  // set to the requested brightness. The updated brightness persists until the
+  // user manually changes it or a new policy containing the currently-relevant
+  // field is received.
+  optional double ac_brightness_percent = 13;
+  optional double battery_brightness_percent = 14;
+
+  // Factor by which |screen_dim_ms| will be scaled while the device is in
+  // presentation mode.  Other delays' distances from |screen_dim_ms| are
+  // preserved after scaling.  A value of 1.0 (or less) leaves delays
+  // unchanged. If the conditions used for both this field and
+  // |user_activity_screen_dim_delay_factor| are true, this field takes
+  // precedence.
+  optional double presentation_screen_dim_delay_factor = 10;
+
+  // Factor by which |screen_dim_ms| will be scaled if user activity is
+  // observed while the screen is dimmed or soon after it is turned off.
+  // Other delays' distances from |screen_dim_ms| are preserved after
+  // scaling.  The delays will return to their original values at the end
+  // of the current user session.  A value of 1.0 (or less) or an unset
+  // |screen_dim_ms| delay leaves delays unchanged.
+  optional double user_activity_screen_dim_delay_factor = 9;
+
+  // If true, instructs the power manager not to perform any
+  // delay-triggered actions while in a user session until user activity
+  // has been observed. After activity is seen, the inactivity timeout
+  // starts. The actions are deferred again after a new session starts.
+  // Note that this has no immediate effect if activity has already been
+  // seen within an already-started session (activity that took place
+  // before the policy change is honored) and also that it has no effect at
+  // the login screen.
+  optional bool wait_for_initial_user_activity = 12;
+
+  // If true, force the panel backlight to a non-zero brightness level in
+  // response to user activity if it was previously manually set to zero by the
+  // user.
+  optional bool force_nonzero_brightness_for_user_activity = 15;
+
+  // Human-readable description of the factors contributing to this policy.
+  // Logged by the power manager to aid in debugging.
+  optional string reason = 8;
+
+  // Next ID to use: 16
+}
+
+// Message included in IdleActionImminent signals.
+message IdleActionImminent {
+  // Time until the idle action will be performed as given by
+  // base::TimeDelta::ToInternalValue().
+  optional int64 time_until_idle_action = 1;
+}
diff --git a/system_api/dbus/power_manager/power_supply_properties.proto b/system_api/dbus/power_manager/power_supply_properties.proto
new file mode 100644
index 0000000..2a1906a
--- /dev/null
+++ b/system_api/dbus/power_manager/power_supply_properties.proto
@@ -0,0 +1,136 @@
+// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package power_manager;
+
+// Power supply status sent from powerd to Chrome.
+message PowerSupplyProperties {
+  // For any of these power sources, the system may be consuming power at a high
+  // enough rate that the battery is discharging rather than charging; see
+  // BatteryState.
+  enum ExternalPower {
+    // AC/line/mains or USB PD power is connected. This is typically the
+    // highest-power source that can be attached to the system.
+    AC = 0;
+
+    // A low-power USB source (SDP, DCP, CDP, or ACA) is connected.
+    USB = 1;
+
+    // No external power source is connected.
+    DISCONNECTED = 2;
+
+    // Next value to use: 4
+  }
+
+  enum BatteryState {
+    // The battery is full or close to full.
+    FULL = 0;
+
+    // The battery is being charged but is not yet full.
+    CHARGING = 1;
+
+    // The battery is discharging. Note that an external power source may be
+    // connected but not supplying enough power to offset the system's
+    // instantaneous power consumption. This state is also used if the battery
+    // is neither charging nor discharging (i.e. current is zero) in a non-full
+    // state, which may indicate a battery defect.
+    DISCHARGING = 2;
+
+    // The system doesn't have a battery.
+    NOT_PRESENT = 3;
+
+    // Next value to use: 4
+  }
+
+  // Details about a potential source of power to the system.
+  message PowerSource {
+    enum Port {
+      // The location of the port is unknown, or there's only one port.
+      UNKNOWN = 0;
+
+      // Various positions on the device. The first word describes the side of
+      // the device where the port is located while the second clarifies the
+      // position. For example, LEFT_BACK means the farthest-back port on the
+      // left side, while BACK_LEFT means the leftmost port on the back of the
+      // device.
+      LEFT        = 1;
+      RIGHT       = 2;
+      BACK        = 3;
+      FRONT       = 4;
+      LEFT_FRONT  = 5;
+      LEFT_BACK   = 6;
+      RIGHT_FRONT = 7;
+      RIGHT_BACK  = 8;
+      BACK_LEFT   = 9;
+      BACK_RIGHT  = 10;
+
+      // Next value to use: 11
+    }
+
+    // Opaque ID corresponding to the device; see |external_power_source_id|.
+    optional string id = 1;
+
+    // The charging port to which this power source is connected.
+    optional Port port = 7;
+
+    // Raw strings read from |manufacturer| and |model_name| files in sysfs.
+    optional string manufacturer_id = 4;
+    optional string model_id = 5;
+
+    // Maximum power this source is capable of delivering, in watts.
+    optional double max_power = 6;
+
+    // True if the power source will automatically deliver charge to the system
+    // when connected (assuming there isn't another |active_by_default| source
+    // doing so). If false, the source will not deliver charge unless requested
+    // to do so by the user.
+    optional bool active_by_default = 3;
+
+    // Next ID to use: 8
+  }
+
+  // Current state of the external power source.
+  optional ExternalPower external_power = 14;
+
+  // ID of the PowerSource that is currently providing power to the system.
+  optional string external_power_source_id = 17;
+
+  // Currently-connected external power sources.
+  repeated PowerSource available_external_power_source = 18;
+
+  // Current state of the battery.
+  optional BatteryState battery_state = 15;
+
+  // Estimated battery charge as a percent of its total capacity, in the
+  // range [0.0, 100.0].
+  optional double battery_percent = 7;
+
+  // Estimated time until the battery is empty, in seconds, or zero if the
+  // battery isn't discharging. -1 if the estimated time would be huge
+  // (e.g. because the current is zero or close to zero).
+  optional int64 battery_time_to_empty_sec = 5;
+
+  // Estimated time until the battery is full, in seconds, or zero if the
+  // battery isn't charging. -1 if the estimated time would be huge (e.g.
+  // because the current is zero or close to zero).
+  optional int64 battery_time_to_full_sec = 6;
+
+  // True when |battery_time_to_*| can't be trusted, e.g. because the power
+  // source just changed.
+  optional bool is_calculating_battery_time = 12 [default = false];
+
+  // The battery discharge rate measured in W. Positive if the battery is
+  // being discharged and negative if it's being charged.
+  optional double battery_discharge_rate = 16;
+
+  // True if it is possible for some connected devices to function as either
+  // sources or sinks (i.e. to either deliver or receive charge).
+  optional bool supports_dual_role_devices = 19;
+
+  // Next ID to use: 20
+}
diff --git a/system_api/dbus/power_manager/suspend.proto b/system_api/dbus/power_manager/suspend.proto
new file mode 100644
index 0000000..4e4594c
--- /dev/null
+++ b/system_api/dbus/power_manager/suspend.proto
@@ -0,0 +1,112 @@
+// Copyright 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package power_manager;
+
+// Included in powerd's SuspendImminent signal, sent when the system is about to
+// suspend.  If any clients previously called RegisterSuspendDelay, suspending
+// will be deferred until they've called powerd's HandleSuspendReadiness method.
+//
+// The general flow is as follows:
+//
+// 1. A client that needs to perform some work before the system can be
+//    suspended listens for SuspendImminent and SuspendDone signals from powerd.
+// 2. The client passes a RegisterSuspendDelayRequest message to powerd's
+//    RegisterSuspendDelay method and receives a RegisterSuspendDelayReply
+//    message in response. The client saves the |delay_id| field from the
+//    response.
+// 3. When the power manager is about to suspend the system, it emits a
+//    SuspendImminent signal containing a SuspendImminent message.
+// 4. Upon receipt of the signal, the client performs any last minute work
+//    that it needs to do and then calls powerd's HandleSuspendReadiness method,
+//    including a SuspendReadinessInfo message with its |delay_id| and the
+//    |suspend_id| field from the SuspendImminent signal.
+// 5. Once powerd has received notification that all registered clients are
+//    ready to suspend, the system will be suspended. If the initial suspend
+//    attempt fails, it will be retried automatically, but additional
+//    SuspendImminent signals will not be emitted.
+// 6. After the suspend request is complete, powerd emits a SuspendDone signal
+//    containing a SuspendDone message. The client should undo any pre-suspend
+//    work that was done in response to the SuspendImminent signal.
+// 7. Before the client exits, it calls UnregisterSuspendDelayRequest with a
+//    UnregisterSuspendDelayRequest message containing its delay ID.
+message SuspendImminent {
+  // Next ID to use: 2
+
+  // Unique ID corresponding to this suspend request. This is included in the
+  // SuspendReadinessInfo message passed via HandleSuspendReadiness.
+  optional int32 suspend_id = 1;
+}
+
+// Included in powerd's SuspendDone signal, sent after the system has completed
+// a suspend request. Each SuspendImminent signal will be followed by a
+// SuspendDone signal.
+message SuspendDone {
+  // Next ID to use: 3
+
+  // Unique ID corresponding to the suspend request.
+  optional int32 suspend_id = 1;
+
+  // Wall time that the system was suspended, as given by
+  // base::TimeDelta::ToInternalValue().
+  optional int64 suspend_duration = 2;
+}
+
+// Included in calls to powerd's RegisterSuspendDelay method.
+message RegisterSuspendDelayRequest {
+  // Next ID to use: 3
+
+  // Upper bound on the amount of time that the power manager will wait for this
+  // client to call HandleSuspendReadiness before suspending the system, as
+  // given by base::TimeDelta::ToInternalValue().
+  optional int64 timeout = 1;
+
+  // Human-readable description of the delay's purpose (e.g. the name of
+  // the daemon that requested the delay). Only used for debugging.
+  optional string description = 2;
+}
+
+// Included in responses to powerd's RegisterSuspendDelay method.
+message RegisterSuspendDelayReply {
+  // Next ID to use: 2
+
+  // Unique ID assigned to the client that registered this suspend delay. This
+  // is included in later HandleSuspendReadiness and UnregisterSuspendDelay
+  // calls.
+  optional int32 delay_id = 1;
+}
+
+// Included in calls to powerd's UnregisterSuspendDelay method.
+message UnregisterSuspendDelayRequest {
+  // Next ID to use: 2
+
+  // ID that was returned in response to the original RegisterSuspendDelay call.
+  optional int32 delay_id = 1;
+}
+
+// Included in calls to powerd's HandleSuspendReadiness method.
+message SuspendReadinessInfo {
+  // Next ID to use: 3
+
+  // ID that was returned to the client in response to its invocation of
+  // RegisterSuspendDelay.
+  optional int32 delay_id = 1;
+
+  // ID that was included in the SuspendImminent signal that provoked this
+  // readiness call.
+  optional int32 suspend_id = 2;
+}
+
+// Included in calls to powerd's RecordDarkResumeWakeReason method.
+message DarkResumeWakeReason {
+  // Next ID to use: 2
+
+  // Wake reason that caused the current dark resume.
+  optional string wake_reason = 1;
+}
+
diff --git a/system_api/dbus/service_constants.h b/system_api/dbus/service_constants.h
new file mode 100644
index 0000000..79d4a72
--- /dev/null
+++ b/system_api/dbus/service_constants.h
@@ -0,0 +1,944 @@
+// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_SERVICE_CONSTANTS_H_
+#define SYSTEM_API_DBUS_SERVICE_CONSTANTS_H_
+
+#include <stdint.h>  // for uint32_t
+
+// We use relative includes here to make this compatible with both the
+// Chromium OS and Chromium environment.
+#include "apmanager/dbus-constants.h"
+#include "cros-disks/dbus-constants.h"
+#include "cryptohome/dbus-constants.h"
+#include "debugd/dbus-constants.h"
+#include "login_manager/dbus-constants.h"
+#include "lorgnette/dbus-constants.h"
+#include "permission_broker/dbus-constants.h"
+#include "power_manager/dbus-constants.h"
+#include "shill/dbus-constants.h"
+#include "update_engine/dbus-constants.h"
+
+namespace dbus {
+const char kDBusInterface[] = "org.freedesktop.DBus";
+const char kDBusServiceName[] = "org.freedesktop.DBus";
+const char kDBusServicePath[] = "/org/freedesktop/DBus";
+
+// Object Manager interface
+const char kDBusObjectManagerInterface[] = "org.freedesktop.DBus.ObjectManager";
+// Methods
+const char kDBusObjectManagerGetManagedObjects[] = "GetManagedObjects";
+// Signals
+const char kDBusObjectManagerInterfacesAddedSignal[] = "InterfacesAdded";
+const char kDBusObjectManagerInterfacesRemovedSignal[] = "InterfacesRemoved";
+
+// Properties interface
+const char kDBusPropertiesInterface[] = "org.freedesktop.DBus.Properties";
+// Methods
+const char kDBusPropertiesGet[] = "Get";
+const char kDBusPropertiesSet[] = "Set";
+const char kDBusPropertiesGetAll[] = "GetAll";
+// Signals
+const char kDBusPropertiesChangedSignal[] = "PropertiesChanged";
+}  // namespace dbus
+
+namespace imageburn {
+const char kImageBurnServiceName[] = "org.chromium.ImageBurner";
+const char kImageBurnServicePath[] = "/org/chromium/ImageBurner";
+const char kImageBurnServiceInterface[] = "org.chromium.ImageBurnerInterface";
+// Methods
+const char kBurnImage[] = "BurnImage";
+// Signals
+const char kSignalBurnFinishedName[] = "burn_finished";
+const char kSignalBurnUpdateName[] = "burn_progress_update";
+}  // namespace imageburn
+
+namespace speech_synthesis {
+const char kSpeechSynthesizerInterface[] =
+    "org.chromium.SpeechSynthesizerInterface";
+const char kSpeechSynthesizerServicePath[] = "/org/chromium/SpeechSynthesizer";
+const char kSpeechSynthesizerServiceName[] = "org.chromium.SpeechSynthesizer";
+// Methods
+const char kSpeak[] = "Speak";
+const char kStop[] = "Stop";
+const char kIsSpeaking[] = "IsSpeaking";
+const char kShutdown[] = "Shutdown";
+}  // namespace speech_synthesis
+
+namespace chromium {
+const char kChromiumInterface[] = "org.chromium.Chromium";
+// Text-to-speech service signals.
+const char kTTSReadySignal[] = "TTSReady";
+const char kTTSFailedSignal[] = "TTSFailed";
+}  // namespace chromium
+
+namespace chromeos {
+const char kLibCrosServiceName[] = "org.chromium.LibCrosService";
+const char kLibCrosServicePath[] = "/org/chromium/LibCrosService";
+const char kLibCrosServiceInterface[] = "org.chromium.LibCrosServiceInterface";
+// Methods
+const char kResolveNetworkProxy[] = "ResolveNetworkProxy";
+const char kCheckLiveness[] = "CheckLiveness";
+const char kGetKioskAppRequiredPlatforVersion[] =
+    "GetKioskAppRequiredPlatformVersion";
+const char kLockScreen[] = "LockScreen";
+const char kSetDisplayPower[] = "SetDisplayPower";
+const char kSetDisplaySoftwareDimming[] = "SetDisplaySoftwareDimming";
+const char kTakeDisplayOwnership[] = "TakeDisplayOwnership";
+const char kReleaseDisplayOwnership[] = "ReleaseDisplayOwnership";
+// Values
+enum DisplayPowerState {
+  DISPLAY_POWER_ALL_ON = 0,
+  DISPLAY_POWER_ALL_OFF = 1,
+  DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON = 2,
+  DISPLAY_POWER_INTERNAL_ON_EXTERNAL_OFF = 3,
+};
+}  // namespace chromeos
+
+namespace cromo {
+// cromo D-Bus service identifiers
+const char kCromoServiceName[] = "org.chromium.ModemManager";
+const char kCromoServicePath[] = "/org/chromium/ModemManager";
+
+// cromo D-Bus interfaces
+const char kModemInterface[] = "org.freedesktop.ModemManager.Modem";
+const char kModemSimpleInterface[] =
+    "org.freedesktop.ModemManager.Modem.Simple";
+const char kModemCdmaInterface[] = "org.freedesktop.ModemManager.Modem.Cdma";
+const char kModemGsmInterface[] = "org.freedesktop.ModemManager.Modem.Gsm";
+const char kModemGsmCardInterface[] =
+    "org.freedesktop.ModemManager.Modem.Gsm.Card";
+const char kModemGsmNetworkInterface[] =
+    "org.freedesktop.ModemManager.Modem.Gsm.Network";
+const char kModemGobiInterface[] = "org.chromium.ModemManager.Modem.Gobi";
+}  // namespace cromo
+
+namespace modemmanager {
+// ModemManager D-Bus service identifiers
+const char kModemManagerSMSInterface[] =
+    "org.freedesktop.ModemManager.Modem.Gsm.SMS";
+
+// ModemManager function names.
+const char kSMSGetFunction[] = "Get";
+const char kSMSDeleteFunction[] = "Delete";
+const char kSMSListFunction[] = "List";
+
+// ModemManager monitored signals
+const char kSMSReceivedSignal[] = "SmsReceived";
+
+// ModemManager1 interfaces and signals
+// The canonical source for these constants is:
+//   /usr/include/ModemManager/ModemManager-names.h
+const char kModemManager1ServiceName[] = "org.freedesktop.ModemManager1";
+const char kModemManager1ServicePath[] = "/org/freedesktop/ModemManager1";
+const char kModemManager1MessagingInterface[] =
+    "org.freedesktop.ModemManager1.Modem.Messaging";
+const char kModemManager1SmsInterface[] =
+    "org.freedesktop.ModemManager1.Sms";
+const char kSMSAddedSignal[] = "Added";
+}  // namespace modemmanager
+
+namespace wimax_manager {
+// WiMaxManager D-Bus service identifiers
+const char kWiMaxManagerServiceName[] = "org.chromium.WiMaxManager";
+const char kWiMaxManagerServicePath[] = "/org/chromium/WiMaxManager";
+const char kWiMaxManagerServiceError[] = "org.chromium.WiMaxManager.Error";
+const char kWiMaxManagerInterface[] = "org.chromium.WiMaxManager";
+const char kWiMaxManagerDeviceInterface[] = "org.chromium.WiMaxManager.Device";
+const char kWiMaxManagerNetworkInterface[] =
+    "org.chromium.WiMaxManager.Network";
+const char kDeviceObjectPathPrefix[] = "/org/chromium/WiMaxManager/Device/";
+const char kNetworkObjectPathPrefix[] = "/org/chromium/WiMaxManager/Network/";
+const char kDevicesProperty[] = "Devices";
+const char kNetworksProperty[] = "Networks";
+const char kEAPAnonymousIdentity[] = "EAPAnonymousIdentity";
+const char kEAPUserIdentity[] = "EAPUserIdentity";
+const char kEAPUserPassword[] = "EAPUserPassword";
+
+enum DeviceStatus {
+  kDeviceStatusUninitialized,
+  kDeviceStatusDisabled,
+  kDeviceStatusReady,
+  kDeviceStatusScanning,
+  kDeviceStatusConnecting,
+  kDeviceStatusConnected
+};
+}  // namespace wimax_manager
+
+namespace bluetooth_plugin {
+// Service identifiers for the plugin interface added to the /org/bluez object.
+const char kBluetoothPluginServiceName[] = "org.bluez";
+const char kBluetoothPluginInterface[] = "org.chromium.Bluetooth";
+
+// Bluetooth plugin properties.
+const char kSupportsLEServices[] = "SupportsLEServices";
+const char kSupportsConnInfo[] = "SupportsConnInfo";
+}  // namespace bluetooth_plugin
+
+namespace bluetooth_plugin_device {
+// Service identifiers for the plugin interface added to Bluetooth Device
+// objects.
+const char kBluetoothPluginServiceName[] = "org.bluez";
+const char kBluetoothPluginInterface[] = "org.chromium.BluetoothDevice";
+
+// Bluetooth Device plugin methods.
+const char kGetConnInfo[] = "GetConnInfo";
+}  // namespace bluetooth_plugin_device
+
+namespace bluetooth_adapter {
+// Bluetooth Adapter service identifiers.
+const char kBluetoothAdapterServiceName[] = "org.bluez";
+const char kBluetoothAdapterInterface[] = "org.bluez.Adapter1";
+
+// Bluetooth Adapter methods.
+const char kStartDiscovery[] = "StartDiscovery";
+const char kSetDiscoveryFilter[] = "SetDiscoveryFilter";
+const char kStopDiscovery[] = "StopDiscovery";
+const char kRemoveDevice[] = "RemoveDevice";
+const char kCreateServiceRecord[] = "CreateServiceRecord";
+const char kRemoveServiceRecord[] = "RemoveServiceRecord";
+
+// Bluetooth Adapter properties.
+const char kAddressProperty[] = "Address";
+const char kNameProperty[] = "Name";
+const char kAliasProperty[] = "Alias";
+const char kClassProperty[] = "Class";
+const char kPoweredProperty[] = "Powered";
+const char kDiscoverableProperty[] = "Discoverable";
+const char kPairableProperty[] = "Pairable";
+const char kPairableTimeoutProperty[] = "PairableTimeout";
+const char kDiscoverableTimeoutProperty[] = "DiscoverableTimeout";
+const char kDiscoveringProperty[] = "Discovering";
+const char kUUIDsProperty[] = "UUIDs";
+const char kModaliasProperty[] = "Modalias";
+
+// Bluetooth Adapter errors.
+const char kErrorNotReady[] = "org.bluez.Error.NotReady";
+const char kErrorFailed[] = "org.bluez.Error.Failed";
+const char kErrorNotAuthorized[] = "org.bluez.Error.NotAuthorized";
+const char kErrorInvalidArguments[] = "org.bluez.Error.InvalidArguments";
+const char kErrorAlreadyExists[] = "org.bluez.Error.AlreadyExists";
+const char kErrorDoesNotExist[] = "org.bluez.Error.DoesNotExist";
+
+// Bluetooth Adapter parameters supplied to SetDiscoveryFilter request.
+const char kDiscoveryFilterParameterUUIDs[] = "UUIDs";
+const char kDiscoveryFilterParameterRSSI[] = "RSSI";
+const char kDiscoveryFilterParameterPathloss[] = "Pathloss";
+const char kDiscoveryFilterParameterTransport[] = "Transport";
+}  // namespace bluetooth_adapter
+
+namespace bluetooth_agent_manager {
+// Bluetooth Agent Manager service indentifiers
+const char kBluetoothAgentManagerServiceName[] = "org.bluez";
+const char kBluetoothAgentManagerServicePath[] = "/org/bluez";
+const char kBluetoothAgentManagerInterface[] = "org.bluez.AgentManager1";
+
+// Bluetooth Agent Manager methods.
+const char kRegisterAgent[] = "RegisterAgent";
+const char kUnregisterAgent[] = "UnregisterAgent";
+const char kRequestDefaultAgent[] = "RequestDefaultAgent";
+
+// Bluetooth capabilities.
+const char kNoInputNoOutputCapability[] = "NoInputNoOutput";
+const char kDisplayOnlyCapability[] = "DisplayOnly";
+const char kKeyboardOnlyCapability[] = "KeyboardOnly";
+const char kDisplayYesNoCapability[] = "DisplayYesNo";
+const char kKeyboardDisplayCapability[] = "KeyboardDisplay";
+
+// Bluetooth Agent Manager errors.
+const char kErrorInvalidArguments[] = "org.bluez.Error.InvalidArguments";
+const char kErrorAlreadyExists[] = "org.bluez.Error.AlreadyExists";
+const char kErrorDoesNotExist[] = "org.bluez.Error.DoesNotExist";
+}  // namespace bluetooth_agent_manager
+
+
+namespace bluetooth_agent {
+// Bluetooth Agent service indentifiers
+const char kBluetoothAgentInterface[] = "org.bluez.Agent1";
+
+// Bluetooth Agent methods.
+const char kRelease[] = "Release";
+const char kRequestPinCode[] = "RequestPinCode";
+const char kDisplayPinCode[] = "DisplayPinCode";
+const char kRequestPasskey[] = "RequestPasskey";
+const char kDisplayPasskey[] = "DisplayPasskey";
+const char kRequestConfirmation[] = "RequestConfirmation";
+const char kRequestAuthorization[] = "RequestAuthorization";
+const char kAuthorizeService[] = "AuthorizeService";
+const char kCancel[] = "Cancel";
+
+// Bluetooth Agent errors.
+const char kErrorRejected[] = "org.bluez.Error.Rejected";
+const char kErrorCanceled[] = "org.bluez.Error.Canceled";
+}  // namespace bluetooth_agent
+
+namespace bluetooth_device {
+// Bluetooth Device service identifiers.
+const char kBluetoothDeviceServiceName[] = "org.bluez";
+const char kBluetoothDeviceInterface[] = "org.bluez.Device1";
+
+// Bluetooth Device methods.
+const char kConnect[] = "Connect";
+const char kDisconnect[] = "Disconnect";
+const char kConnectProfile[] = "ConnectProfile";
+const char kDisconnectProfile[] = "DisconnectProfile";
+const char kPair[] = "Pair";
+const char kCancelPairing[] = "CancelPairing";
+const char kGetServiceRecords[] = "GetServiceRecords";
+
+// Bluetooth Device properties.
+const char kAddressProperty[] = "Address";
+const char kNameProperty[] = "Name";
+const char kIconProperty[] = "Icon";
+const char kClassProperty[] = "Class";
+const char kTypeProperty[] = "Type";
+const char kAppearanceProperty[] = "Appearance";
+const char kUUIDsProperty[] = "UUIDs";
+const char kPairedProperty[] = "Paired";
+const char kConnectedProperty[] = "Connected";
+const char kTrustedProperty[] = "Trusted";
+const char kBlockedProperty[] = "Blocked";
+const char kAliasProperty[] = "Alias";
+const char kAdapterProperty[] = "Adapter";
+const char kLegacyPairingProperty[] = "LegacyPairing";
+const char kModaliasProperty[] = "Modalias";
+const char kRSSIProperty[] = "RSSI";
+const char kTxPowerProperty[] = "TxPower";
+const char kManufacturerDataProperty[] = "ManufacturerData";
+const char kServiceDataProperty[] = "ServiceData";
+const char kGattServicesProperty[] = "GattServices";         // DEPRECATED
+const char kServicesResolvedProperty[] = "ServicesResolved";
+
+// Bluetooth Device errors.
+const char kErrorNotReady[] = "org.bluez.Error.NotReady";
+const char kErrorFailed[] = "org.bluez.Error.Failed";
+const char kErrorInProgress[] = "org.bluez.Error.InProgress";
+const char kErrorAlreadyConnected[] = "org.bluez.Error.AlreadyConnected";
+const char kErrorNotConnected[] = "org.bluez.Error.NotConnected";
+const char kErrorDoesNotExist[] = "org.bluez.Error.DoesNotExist";
+const char kErrorInvalidArguments[] = "org.bluez.Error.InvalidArguments";
+
+// Undocumented errors that we know BlueZ returns for Bluetooth Device methods.
+const char kErrorNotSupported[] = "org.bluez.Error.NotSupported";
+const char kErrorAuthenticationCanceled[] =
+    "org.bluez.Error.AuthenticationCanceled";
+const char kErrorAuthenticationFailed[] =
+    "org.bluez.Error.AuthenticationFailed";
+const char kErrorAuthenticationRejected[] =
+    "org.bluez.Error.AuthenticationRejected";
+const char kErrorAuthenticationTimeout[] =
+    "org.bluez.Error.AuthenticationTimeout";
+const char kErrorConnectionAttemptFailed[] =
+    "org.bluez.Error.ConnectionAttemptFailed";
+}  // namespace bluetooth_device
+
+namespace bluetooth_gatt_characteristic {
+// Bluetooth GATT Characteristic service identifiers. The service name is used
+// only for characteristic objects hosted by bluetoothd.
+const char kBluetoothGattCharacteristicServiceName[] = "org.bluez";
+const char kBluetoothGattCharacteristicInterface[] =
+    "org.bluez.GattCharacteristic1";
+
+// Bluetooth GATT Characteristic methods.
+const char kReadValue[] = "ReadValue";
+const char kWriteValue[] = "WriteValue";
+const char kStartNotify[] = "StartNotify";
+const char kStopNotify[] = "StopNotify";
+
+// Bluetooth GATT Characteristic signals.
+const char kValueUpdatedSignal[] = "ValueUpdated";
+
+// Possible keys for option dict used in ReadValue and WriteValue.
+const char kOptionOffset[] = "offset";
+const char kOptionDevice[] = "device";
+
+// Bluetooth GATT Characteristic properties.
+const char kUUIDProperty[] = "UUID";
+const char kServiceProperty[] = "Service";
+const char kValueProperty[] = "Value";
+const char kFlagsProperty[] = "Flags";
+const char kNotifyingProperty[] = "Notifying";
+const char kDescriptorsProperty[] = "Descriptors";
+
+// Possible values for Bluetooth GATT Characteristic "Flags" property.
+const char kFlagBroadcast[] = "broadcast";
+const char kFlagRead[] = "read";
+const char kFlagWriteWithoutResponse[] = "write-without-response";
+const char kFlagWrite[] = "write";
+const char kFlagNotify[] = "notify";
+const char kFlagIndicate[] = "indicate";
+const char kFlagAuthenticatedSignedWrites[] = "authenticated-signed-writes";
+const char kFlagExtendedProperties[] = "extended-properties";
+const char kFlagReliableWrite[] = "reliable-write";
+const char kFlagWritableAuxiliaries[] = "writable-auxiliaries";
+const char kFlagEncryptRead[] = "encrypt-read";
+const char kFlagEncryptWrite[] = "encrypt-write";
+const char kFlagEncryptAuthenticatedRead[] = "encrypt-authenticated-read";
+const char kFlagEncryptAuthenticatedWrite[] = "encrypt-authenticated-write";
+}  // namespace bluetooth_gatt_characteristic
+
+namespace bluetooth_gatt_descriptor {
+// Bluetooth GATT Descriptor service identifiers. The service name is used
+// only for descriptor objects hosted by bluetoothd.
+const char kBluetoothGattDescriptorServiceName[] = "org.bluez";
+const char kBluetoothGattDescriptorInterface[] = "org.bluez.GattDescriptor1";
+
+// Bluetooth GATT Descriptor methods.
+const char kReadValue[] = "ReadValue";
+const char kWriteValue[] = "WriteValue";
+
+// Possible keys for option dict used in ReadValue and WriteValue.
+const char kOptionOffset[] = "offset";
+const char kOptionDevice[] = "device";
+
+// Bluetooth GATT Descriptor properties.
+const char kUUIDProperty[] = "UUID";
+const char kCharacteristicProperty[] = "Characteristic";
+const char kValueProperty[] = "Value";
+const char kFlagsProperty[] = "Flags";
+
+// Possible values for Bluetooth GATT Descriptor "Flags" property.
+const char kFlagRead[] = "read";
+const char kFlagWrite[] = "write";
+const char kFlagEncryptRead[] = "encrypt-read";
+const char kFlagEncryptWrite[] = "encrypt-write";
+const char kFlagEncryptAuthenticatedRead[] = "encrypt-authenticated-read";
+const char kFlagEncryptAuthenticatedWrite[] = "encrypt-authenticated-write";
+}  // namespace bluetooth_gatt_descriptor
+
+namespace bluetooth_gatt_manager {
+// Bluetooth GATT Manager service identifiers.
+const char kBluetoothGattManagerServiceName[] = "org.bluez";
+const char kBluetoothGattManagerInterface[] = "org.bluez.GattManager1";
+
+// Bluetooth GATT Manager methods.
+const char kRegisterApplication[] = "RegisterApplication";
+const char kUnregisterApplication[] = "UnregisterApplication";
+const char kRegisterService[] = "RegisterService";
+const char kUnregisterService[] = "UnregisterService";
+
+// Bluetooth GATT Manager errors.
+const char kErrorInvalidArguments[] = "org.bluez.Error.InvalidArguments";
+const char kErrorAlreadyExists[] = "org.bluez.Error.AlreadyExists";
+const char kErrorDoesNotExist[] = "org.bluez.Error.DoesNotExist";
+}  // namespace bluetooth_gatt_manager
+
+namespace bluetooth_gatt_service {
+// Bluetooth GATT Service service identifiers. The service name is used
+// only for service objects hosted by bluetoothd.
+const char kBluetoothGattServiceServiceName[] = "org.bluez";
+const char kBluetoothGattServiceInterface[] = "org.bluez.GattService1";
+
+// Bluetooth GATT Service properties.
+const char kUUIDProperty[] = "UUID";
+const char kDeviceProperty[] = "Device";
+const char kPrimaryProperty[] = "Primary";
+const char kIncludesProperty[] = "Includes";
+const char kCharacteristicsProperty[] = "Characteristics";
+
+// Bluetooth GATT Service errors.
+const char kErrorFailed[] = "org.bluez.Error.Failed";
+const char kErrorInProgress[] = "org.bluez.Error.InProgress";
+const char kErrorInvalidValueLength[] = "org.bluez.Error.InvalidValueLength";
+const char kErrorNotAuthorized[] = "org.bluez.Error.NotAuthorized";
+const char kErrorNotPaired[] = "org.bluez.Error.NotPaired";
+const char kErrorNotSupported[] = "org.bluez.Error.NotSupported";
+const char kErrorReadNotPermitted[] = "org.bluez.Error.ReadNotPermitted";
+const char kErrorWriteNotPermitted[] = "org.bluez.Error.WriteNotPermitted";
+}  // namespace bluetooth_gatt_service
+
+namespace bluetooth_input {
+// Bluetooth Input service identifiers.
+const char kBluetoothInputServiceName[] = "org.bluez";
+const char kBluetoothInputInterface[] = "org.bluez.Input1";
+
+// Bluetooth Input properties.
+const char kReconnectModeProperty[] = "ReconnectMode";
+
+// Bluetooth Input property values.
+const char kNoneReconnectModeProperty[] = "none";
+const char kHostReconnectModeProperty[] = "host";
+const char kDeviceReconnectModeProperty[] = "device";
+const char kAnyReconnectModeProperty[] = "any";
+}  // namespace bluetooth_input
+
+namespace bluetooth_media {
+// Bluetooth Media service identifiers
+const char kBluetoothMediaServiceName[] = "org.bluez";
+const char kBluetoothMediaInterface[] = "org.bluez.Media1";
+
+// Bluetooth Media methods
+const char kRegisterEndpoint[] = "RegisterEndpoint";
+const char kUnregisterEndpoint[] = "UnregisterEndpoint";
+const char kRegisterPlayer[] = "RegisterPlayer";
+const char kUnregisterPlayer[] = "UnregisterPlayer";
+
+// Bluetooth Media errors
+const char kErrorFailed[] = "org.bluez.Error.Failed";
+const char kErrorInvalidArguments[] = "org.bluez.Error.InvalidArguments";
+const char kErrorNotSupported[] = "org.bluez.Error.NotSupported";
+}  // namespace bluetooth_media
+
+namespace bluetooth_media_endpoint {
+// Bluetooth Media Endpoint service identifiers
+const char kBluetoothMediaEndpointServiceName[] = "org.bluez";
+const char kBluetoothMediaEndpointInterface[] = "org.bluez.MediaEndpoint1";
+
+// Bluetooth Media Endpoint methods
+const char kSetConfiguration[] = "SetConfiguration";
+const char kSelectConfiguration[] = "SelectConfiguration";
+const char kClearConfiguration[] = "ClearConfiguration";
+const char kRelease[] = "Release";
+}  // namespace bluetooth_media_endpoint
+
+namespace bluetooth_media_transport {
+// Bluetooth Media Transport service identifiers
+const char kBluetoothMediaTransportServiceName[] = "org.bluez";
+const char kBluetoothMediaTransportInterface[] = "org.bluez.MediaTransport1";
+
+// Bluetooth Media Transport methods
+const char kAcquire[] = "Acquire";
+const char kTryAcquire[] = "TryAcquire";
+const char kRelease[] = "Release";
+
+// Bluetooth Media Transport property names.
+const char kDeviceProperty[] = "Device";
+const char kUUIDProperty[] = "UUID";
+const char kCodecProperty[] = "Codec";
+const char kConfigurationProperty[] = "Configuration";
+const char kStateProperty[] = "State";
+const char kDelayProperty[] = "Delay";
+const char kVolumeProperty[] = "Volume";
+
+// Possible states for the "State" property
+const char kStateIdle[] = "idle";
+const char kStatePending[] = "pending";
+const char kStateActive[] = "active";
+
+// Bluetooth Media Transport errors.
+const char kErrorFailed[] = "org.bluez.Error.Failed";
+const char kErrorNotAuthorized[] = "org.bluez.Error.NotAuthorized";
+const char kErrorNotAvailable[] = "org.bluez.Error.NotAvailable";
+}  // namespace bluetooth_media_transport
+
+namespace bluetooth_object_manager {
+// Bluetooth daemon Object Manager service identifiers.
+const char kBluetoothObjectManagerServiceName[] = "org.bluez";
+const char kBluetoothObjectManagerServicePath[] = "/";
+}  // namespace bluetooth_object_manager
+
+namespace bluetooth_profile_manager {
+// Bluetooth Profile Manager service identifiers.
+const char kBluetoothProfileManagerServiceName[] = "org.bluez";
+const char kBluetoothProfileManagerServicePath[] = "/org/bluez";
+const char kBluetoothProfileManagerInterface[] = "org.bluez.ProfileManager1";
+
+// Bluetooth Profile Manager methods.
+const char kRegisterProfile[] = "RegisterProfile";
+const char kUnregisterProfile[] = "UnregisterProfile";
+
+// Bluetooth Profile Manager option names.
+const char kNameOption[] = "Name";
+const char kServiceOption[] = "Service";
+const char kRoleOption[] = "Role";
+const char kChannelOption[] = "Channel";
+const char kPSMOption[] = "PSM";
+const char kRequireAuthenticationOption[] = "RequireAuthentication";
+const char kRequireAuthorizationOption[] = "RequireAuthorization";
+const char kAutoConnectOption[] = "AutoConnect";
+const char kServiceRecordOption[] = "ServiceRecord";
+const char kVersionOption[] = "Version";
+const char kFeaturesOption[] = "Features";
+
+// Bluetooth Profile Manager option values.
+const char kClientRoleOption[] = "client";
+const char kServerRoleOption[] = "server";
+
+// Bluetooth Profile Manager errors.
+const char kErrorInvalidArguments[] = "org.bluez.Error.InvalidArguments";
+const char kErrorAlreadyExists[] = "org.bluez.Error.AlreadyExists";
+const char kErrorDoesNotExist[] = "org.bluez.Error.DoesNotExist";
+}  // namespace bluetooth_profile_manager
+
+namespace bluetooth_profile {
+// Bluetooth Profile service identifiers.
+const char kBluetoothProfileInterface[] = "org.bluez.Profile1";
+
+// Bluetooth Profile methods.
+const char kRelease[] = "Release";
+const char kNewConnection[] = "NewConnection";
+const char kRequestDisconnection[] = "RequestDisconnection";
+const char kCancel[] = "Cancel";
+
+// Bluetooth Profile property names.
+const char kVersionProperty[] = "Version";
+const char kFeaturesProperty[] = "Features";
+
+// Bluetooth Profile errors.
+const char kErrorRejected[] = "org.bluez.Error.Rejected";
+const char kErrorCanceled[] = "org.bluez.Error.Canceled";
+}  // namespace bluetooth_profile
+
+namespace bluetooth_advertisement {
+// Bluetooth LE Advertisement service identifiers.
+const char kBluetoothAdvertisementServiceName[] = "org.bluez";
+const char kBluetoothAdvertisementInterface[] =
+    "org.bluez.LEAdvertisement1";
+
+// Bluetooth Advertisement methods.
+const char kRelease[] = "Release";
+
+// Bluetooth Advertisement properties.
+const char kManufacturerDataProperty[] = "ManufacturerData";
+const char kServiceUUIDsProperty[] = "ServiceUUIDs";
+const char kServiceDataProperty[] = "ServiceData";
+const char kSolicitUUIDsProperty[] = "SolicitUUIDs";
+const char kTypeProperty[] = "Type";
+const char kIncludeTxPowerProperty[] = "IncludeTxPower";
+
+// Possible values for the "Type" property.
+const char kTypeBroadcast[] = "broadcast";
+const char kTypePeripheral[] = "peripheral";
+
+}  // namespace bluetooth_advertisement
+
+namespace bluetooth_advertising_manager {
+// Bluetooth LE Advertising Manager service identifiers.
+const char kBluetoothAdvertisingManagerServiceName[] = "org.bluez";
+const char kBluetoothAdvertisingManagerInterface[] =
+    "org.bluez.LEAdvertisingManager1";
+
+// Bluetooth LE Advertising Manager methods.
+const char kRegisterAdvertisement[] = "RegisterAdvertisement";
+const char kUnregisterAdvertisement[] = "UnregisterAdvertisement";
+
+// Bluetooth LE Advertising Manager errors.
+const char kErrorAlreadyExists[] = "org.bluez.Error.AlreadyExists";
+const char kErrorDoesNotExist[] = "org.bluez.Error.DoesNotExist";
+const char kErrorFailed[] = "org.bluez.Error.Failed";
+const char kErrorInvalidArguments[] = "org.bluez.Error.InvalidArguments";
+const char kErrorInvalidLength[] = "org.bluez.Error.InvalidLength";
+}  // namespace bluetooth_advertising_manager
+
+namespace nfc_adapter {
+// NFC Adapter service identifiers.
+const char kNfcAdapterServiceName[] = "org.neard";
+const char kNfcAdapterInterface[] = "org.neard.Adapter";
+
+// NFC Adapter methods.
+const char kStartEmulation[] = "StartEmulation";
+const char kStartPollLoop[] = "StartPollLoop";
+const char kStopEmulation[] = "StopEmulation";
+const char kStopPollLoop[] = "StopPollLoop";
+
+// NFC Adapter signals.
+const char kTagFoundSignal[] = "TagFound";
+const char kTagLostSignal[] = "TagLost";
+
+// NFC Adapter properties.
+const char kDevicesProperty[] = "Devices";
+const char kModeProperty[] = "Mode";
+const char kPollingProperty[] = "Polling";
+const char kPoweredProperty[] = "Powered";
+const char kProtocolsProperty[] = "Protocols";
+const char kTagsProperty[] = "Tags";
+
+// NFC Adapter mode values.
+const char kModeInitiator[] = "Initiator";
+const char kModeTarget[] = "Target";
+const char kModeIdle[] = "Idle";
+
+}  // namespace nfc_adapter
+
+namespace nfc_device {
+// NFC Device service identifiers.
+const char kNfcDeviceServiceName[] = "org.neard";
+const char kNfcDeviceInterface[] = "org.neard.Device";
+
+// NFC Device methods.
+const char kPush[] = "Push";
+
+// NFC Device properties.
+const char kRecordsProperty[] = "Records";
+
+}  // namespace nfc_device
+
+namespace nfc_manager {
+// NFC Manager service identifiers.
+const char kNfcManagerServiceName[] = "org.neard";
+const char kNfcManagerServicePath[] = "/";
+const char kNfcManagerInterface[] = "org.neard.Manager";
+
+// NFC Manager methods.
+const char kRegisterHandoverAgent[] = "RegisterHandoverAgent";
+const char kUnregisterHandoverAgent[] = "UnregisterHandoverAgent";
+const char kRegisterNDEFAgent[] = "RegisterNDEFAgent";
+const char kUnregisterNDEFAgent[] = "UnregisterNDEFAgent";
+
+// NFC Manager signals.
+const char kAdapterAddedSignal[] = "AdapterAdded";
+const char kAdapterRemovedSignal[] = "AdapterRemoved";
+
+// NFC Manager properties.
+const char kAdaptersProperty[] = "Adapters";
+
+// NFC Manager handover carrier values.
+const char kCarrierBluetooth[] = "bluetooth";
+const char kCarrierWifi[] = "wifi";
+}  // namespace nfc_manager
+
+namespace nfc_tag {
+// NFC Tag service identifiers.
+const char kNfcTagServiceName[] = "org.neard";
+const char kNfcTagInterface[] = "org.neard.Tag";
+
+// NFC Tag methods.
+const char kWrite[] = "Write";
+
+// NFC Tag properties.
+const char kProtocolProperty[] = "Protocol";
+const char kReadOnlyProperty[] = "ReadOnly";
+const char kRecordsProperty[] = "Records";
+const char kTypeProperty[] = "Type";
+
+// NFC Tag type values.
+const char kTagType1[] = "Type 1";
+const char kTagType2[] = "Type 2";
+const char kTagType3[] = "Type 3";
+const char kTagType4[] = "Type 4";
+
+}  // namespace nfc_tag
+
+namespace nfc_record {
+// NFC Record service identifiers.
+const char kNfcRecordServiceName[] = "org.neard";
+const char kNfcRecordInterface[] = "org.neard.Record";
+
+// NFC Record properties.
+const char kTypeProperty[] = "Type";
+const char kEncodingProperty[] = "Encoding";
+const char kLanguageProperty[] = "Language";
+const char kRepresentationProperty[] = "Representation";
+const char kUriProperty[] = "URI";
+const char kMimeTypeProperty[] = "MIMEType";
+const char kSizeProperty[] = "Size";
+const char kActionProperty[] = "Action";
+
+// NFC Record type values.
+const char kTypeSmartPoster[] = "SmartPoster";
+const char kTypeText[] = "Text";
+const char kTypeUri[] = "URI";
+const char kTypeHandoverRequest[] = "HandoverRequest";
+const char kTypeHandoverSelect[] = "HandoverSelect";
+const char kTypeHandoverCarrier[] = "HandoverCarrier";
+
+// NFC Record encoding values.
+const char kEncodingUtf8[] = "UTF-8";
+const char kEncodingUtf16[] = "UTF-16";
+}  // namespace nfc_record
+
+namespace nfc_handover_agent {
+// NFC Handover Agent service identifiers.
+// TODO(armansito): Add the correct service name once the HandoverAgent feature
+// is fully implemented.
+const char kNfcHandoverAgentServiceName[] = "";
+const char kNfcHandoverInterface[] = "org.neard.HandoverAgent";
+
+// NFC Handover Agent methods.
+const char kRequestOOB[] = "RequestOOB";
+const char kPushOOB[] = "PushOOB";
+const char kRelease[] = "Release";
+
+// NFC Handover Agent properties.
+const char kEIRProperty[] = "EIR";
+const char kNokiaDotComBtProperty[] = "nokia.com:bt";
+const char kWSCProperty[] = "WSC";
+const char kStateProperty[] = "State";
+}  // namespace nfc_handover_agent
+
+namespace nfc_ndef_agent {
+// NFC NDEF Agent service identifiers.
+// TODO(armansito): Add the correct service name once the NDEFAgent feature
+// is fully implemented.
+const char kNfcNdefAgentServiceName[] = "";
+const char kNfcNdefAgentInterface[] = "org.neard.NDEFAgent";
+
+// NFC NDEF Agent methods.
+const char kGetNDEF[] = "GetNDEF";
+const char kRelease[] = "Release";
+
+// NFC NDEF properties.
+const char kNDEFProperty[] = "NDEF";
+const char kRecordProperty[] = "Record";
+}  // namespace nfc_ndef_agent
+
+namespace nfc_common {
+// NFC Adapter/Tag protocol values.
+const char kProtocolFelica[] = "Felica";
+const char kProtocolMifare[] = "MIFARE";
+const char kProtocolJewel[] = "Jewel";
+const char kProtocolIsoDep[] = "ISO-DEP";
+const char kProtocolNfcDep[] = "NFC-DEP";
+
+// Common methods for NFC property access and signals.
+const char kGetProperties[] = "GetProperties";
+const char kSetProperty[] = "SetProperty";
+const char kPropertyChangedSignal[] = "PropertyChanged";
+}  // namespace nfc_common
+
+namespace nfc_error {
+// NFC errors.
+const char kAlreadyExists[] = "org.neard.Error.AlreadyExists";
+const char kDoesNotExist[] = "org.neard.Error.DoesNotExist";
+const char kFailed[] = "org.neard.Error.Failed";
+const char kInProgress[] = "org.neard.Error.InProgress";
+const char kInvalidArguments[] = "org.neard.Error.InvalidArguments";
+const char kNotReady[] = "org.neard.Error.NotReady";
+const char kNotSupported[] = "org.neard.Error.NotSupported";
+const char kPermissionDenied[] = "org.neard.Error.PermissionDenied";
+
+// NFC Handover Agent errors.
+const char kHandoverAgentFailed[] = "org.neard.HandoverAgent.Error.Failed";
+const char kHandoverAgentInProgress[] =
+    "org.neard.HandoverAgent.Error.InProgress";
+}  // namespace nfc_error
+
+namespace mtpd {
+const char kMtpdInterface[] = "org.chromium.Mtpd";
+const char kMtpdServicePath[] = "/org/chromium/Mtpd";
+const char kMtpdServiceName[] = "org.chromium.Mtpd";
+const char kMtpdServiceError[] = "org.chromium.Mtpd.Error";
+
+// Methods.
+const char kEnumerateStorages[] = "EnumerateStorages";
+const char kGetStorageInfo[] = "GetStorageInfo";
+const char kGetStorageInfoFromDevice[] = "GetStorageInfoFromDevice";
+const char kOpenStorage[] = "OpenStorage";
+const char kCloseStorage[] = "CloseStorage";
+const char kReadDirectoryEntryIds[] = "ReadDirectoryEntryIds";
+const char kGetFileInfo[] = "GetFileInfo";
+const char kReadFileChunk[] = "ReadFileChunk";
+const char kCopyFileFromLocal[] = "CopyFileFromLocal";
+const char kDeleteObject[] = "DeleteObject";
+const char kRenameObject[] = "RenameObject";
+const char kCreateDirectory[] = "CreateDirectory";
+
+// Signals.
+const char kMTPStorageAttached[] = "MTPStorageAttached";
+const char kMTPStorageDetached[] = "MTPStorageDetached";
+
+// For FileEntry struct:
+const uint32_t kInvalidFileId = 0xffffffff;
+
+// For OpenStorage method:
+const char kReadOnlyMode[] = "ro";
+const char kReadWriteMode[] = "rw";
+
+// For GetFileInfo() method:
+// The id of the root node in a storage, as defined by the PTP/MTP standards.
+// Use this when referring to the root node in the context of GetFileInfo().
+const uint32_t kRootFileId = 0;
+}  // namespace mtpd
+
+namespace system_clock {
+const char kSystemClockInterface[] = "org.torproject.tlsdate";
+const char kSystemClockServicePath[] = "/org/torproject/tlsdate";
+const char kSystemClockServiceName[] = "org.torproject.tlsdate";
+
+// Methods.
+const char kSystemClockCanSet[] = "CanSetTime";
+const char kSystemClockSet[] = "SetTime";
+
+// Signals.
+const char kSystemClockUpdated[] = "TimeUpdated";
+}  // namespace system_clock
+
+namespace cras {
+const char kCrasServicePath[] = "/org/chromium/cras";
+const char kCrasServiceName[] = "org.chromium.cras";
+const char kCrasControlInterface[] = "org.chromium.cras.Control";
+
+// Methods.
+const char kSetOutputVolume[] = "SetOutputVolume";
+const char kSetOutputNodeVolume[] = "SetOutputNodeVolume";
+const char kSwapLeftRight[] = "SwapLeftRight";
+const char kSetOutputMute[] = "SetOutputMute";
+const char kSetOutputUserMute[] = "SetOutputUserMute";
+const char kSetSuspendAudio[] = "SetSuspendAudio";
+const char kSetInputGain[] = "SetInputGain";
+const char kSetInputNodeGain[] = "SetInputNodeGain";
+const char kSetInputMute[] = "SetInputMute";
+const char kGetVolumeState[] = "GetVolumeState";
+const char kGetNodes[] = "GetNodes";
+const char kSetActiveOutputNode[] = "SetActiveOutputNode";
+const char kSetActiveInputNode[] = "SetActiveInputNode";
+const char kAddActiveOutputNode[] = "AddActiveOutputNode";
+const char kAddActiveInputNode[] = "AddActiveInputNode";
+const char kRemoveActiveOutputNode[] = "RemoveActiveOutputNode";
+const char kRemoveActiveInputNode[] = "RemoveActiveInputNode";
+const char kGetNumberOfActiveStreams[] = "GetNumberOfActiveStreams";
+const char kGetNumberOfActiveInputStreams[] = "GetNumberOfActiveInputStreams";
+const char kGetNumberOfActiveOutputStreams[] = "GetNumberOfActiveOutputStreams";
+const char kSetGlobalOutputChannelRemix[] = "SetGlobalOutputChannelRemix";
+
+// Names of properties returned by GetNodes()
+const char kIsInputProperty[] = "IsInput";
+const char kIdProperty[] = "Id";
+const char kTypeProperty[] = "Type";
+const char kNameProperty[] = "Name";
+const char kDeviceNameProperty[] = "DeviceName";
+const char kActiveProperty[] = "Active";
+const char kPluggedTimeProperty[] = "PluggedTime";
+const char kMicPositionsProperty[] = "MicPositions";
+const char kStableDeviceIdProperty[] = "StableDeviceId";
+
+// Signals.
+const char kOutputVolumeChanged[] = "OutputVolumeChanged";
+const char kOutputMuteChanged[] = "OutputMuteChanged";
+const char kOutputNodeVolumeChanged[] = "OutputNodeVolumeChanged";
+const char kNodeLeftRightSwappedChanged[] = "NodeLeftRightSwappedChanged";
+const char kInputGainChanged[] = "InputGainChanged";
+const char kInputMuteChanged[] = "InputMuteChanged";
+const char kNodesChanged[] = "NodesChanged";
+const char kActiveOutputNodeChanged[] = "ActiveOutputNodeChanged";
+const char kActiveInputNodeChanged[] = "ActiveInputNodeChanged";
+const char kNumberOfActiveStreamsChanged[] = "NumberOfActiveStreamsChanged";
+}  // namespace cras
+
+namespace feedback {
+const char kFeedbackServicePath[] = "/org/chromium/feedback";
+const char kFeedbackServiceName[] = "org.chromium.feedback";
+
+// Methods.
+const char kSendFeedback[] = "SendFeedback";
+}  // namespace feedback
+
+namespace easy_unlock {
+const char kEasyUnlockServicePath[] = "/org/chromium/EasyUnlock";
+const char kEasyUnlockServiceName[] = "org.chromium.EasyUnlock";
+const char kEasyUnlockServiceInterface[] = "org.chromium.EasyUnlock";
+
+// Values supplied as enrcryption type to CreateSecureMessage and
+// UnwrapSecureMessage methods.
+const char kEncryptionTypeNone[] = "NONE";
+const char kEncryptionTypeAES256CBC[] = "AES_256_CBC";
+
+// Values supplied as signature type to CreateSecureMessage and
+// UnwrapSecureMessage methods.
+const char kSignatureTypeECDSAP256SHA256[] = "ECDSA_P256_SHA256";
+const char kSignatureTypeHMACSHA256[] = "HMAC_SHA256";
+
+// Values supplied as key algorithm to WrapPublicKey method.
+const char kKeyAlgorithmRSA[] = "RSA";
+const char kKeyAlgorithmECDSA[] = "ECDSA";
+
+// Methods
+const char kPerformECDHKeyAgreementMethod[] = "PerformECDHKeyAgreement";
+const char kWrapPublicKeyMethod[] = "WrapPublicKey";
+const char kGenerateEcP256KeyPairMethod[] = "GenerateEcP256KeyPair";
+const char kCreateSecureMessageMethod[] = "CreateSecureMessage";
+const char kUnwrapSecureMessageMethod[] = "UnwrapSecureMessage";
+}  // namespace easy_unlock
+
+#endif  // SYSTEM_API_DBUS_SERVICE_CONSTANTS_H_
diff --git a/system_api/dbus/shill/dbus-constants.h b/system_api/dbus/shill/dbus-constants.h
new file mode 100644
index 0000000..bc76aed
--- /dev/null
+++ b/system_api/dbus/shill/dbus-constants.h
@@ -0,0 +1,733 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_SHILL_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_SHILL_DBUS_CONSTANTS_H_
+
+// TODO(benchan): Reorganize shill constants and remove deprecated ones.
+namespace shill {
+// Flimflam D-Bus service identifiers.
+const char kFlimflamManagerInterface[] = "org.chromium.flimflam.Manager";
+const char kFlimflamServiceName[] = "org.chromium.flimflam";
+const char kFlimflamServicePath[] = "/";  // crosbug.com/20135
+const char kFlimflamServiceInterface[] = "org.chromium.flimflam.Service";
+const char kFlimflamIPConfigInterface[] = "org.chromium.flimflam.IPConfig";
+const char kFlimflamDeviceInterface[] = "org.chromium.flimflam.Device";
+const char kFlimflamProfileInterface[] = "org.chromium.flimflam.Profile";
+const char kFlimflamNetworkInterface[] = "org.chromium.flimflam.Network";
+const char kFlimflamThirdPartyVpnInterface[] =
+    "org.chromium.flimflam.ThirdPartyVpn";
+
+// Flimflam function names.
+const char kGetPropertiesFunction[] = "GetProperties";
+const char kSetPropertyFunction[] = "SetProperty";
+const char kClearPropertyFunction[] = "ClearProperty";
+const char kConnectFunction[] = "Connect";
+const char kDisconnectFunction[] = "Disconnect";
+const char kRequestScanFunction[] = "RequestScan";
+const char kGetServiceFunction[] = "GetService";
+const char kGetWifiServiceFunction[] = "GetWifiService";
+const char kGetVPNServiceFunction[] = "GetVPNService";
+const char kRemoveServiceFunction[] = "Remove";
+const char kEnableTechnologyFunction[] = "EnableTechnology";
+const char kDisableTechnologyFunction[] = "DisableTechnology";
+const char kAddIPConfigFunction[] = "AddIPConfig";
+const char kRemoveConfigFunction[] = "Remove";
+const char kGetEntryFunction[] = "GetEntry";
+const char kDeleteEntryFunction[] = "DeleteEntry";
+const char kActivateCellularModemFunction[] = "ActivateCellularModem";
+const char kRequirePinFunction[] = "RequirePin";
+const char kEnterPinFunction[] = "EnterPin";
+const char kUnblockPinFunction[] = "UnblockPin";
+const char kChangePinFunction[] = "ChangePin";
+const char kProposeScanFunction[] = "ProposeScan";
+const char kRegisterFunction[] = "Register";
+const char kConfigureServiceFunction[] = "ConfigureService";
+const char kConfigureWifiServiceFunction[] = "ConfigureWifiService";
+const char kFindMatchingServiceFunction[] = "FindMatchingService";
+
+// Flimflam Service property names.
+const char kSecurityProperty[] = "Security";
+const char kPriorityProperty[] = "Priority";
+const char kPriorityWithinTechnologyProperty[] = "PriorityWithinTechnology";
+const char kPassphraseProperty[] = "Passphrase";
+const char kIdentityProperty[] = "Identity";
+const char kAuthorityPathProperty[] = "AuthorityPath";
+const char kPassphraseRequiredProperty[] = "PassphraseRequired";
+const char kSaveCredentialsProperty[] = "SaveCredentials";
+const char kSignalStrengthProperty[] = "Strength";
+const char kNameProperty[] = "Name";
+const char kGuidProperty[] = "GUID";
+const char kStateProperty[] = "State";
+const char kTypeProperty[] = "Type";
+const char kDeviceProperty[] = "Device";
+const char kProfileProperty[] = "Profile";
+const char kConnectivityStateProperty[] = "ConnectivityState";
+const char kConnectableProperty[] = "Connectable";
+const char kAutoConnectProperty[] = "AutoConnect";
+const char kIsActiveProperty[] = "IsActive";
+const char kModeProperty[] = "Mode";
+const char kErrorProperty[] = "Error";
+const char kProviderProperty[] = "Provider";
+const char kHostProperty[] = "Host";
+const char kDomainProperty[] = "Domain";
+const char kProxyConfigProperty[] = "ProxyConfig";
+const char kCheckPortalProperty[] = "CheckPortal";
+const char kSSIDProperty[] = "SSID";
+const char kConnectedProperty[] = "Connected";
+const char kUIDataProperty[] = "UIData";
+const char kConnectionIdProperty[] = "ConnectionId";
+const char kVisibleProperty[] = "Visible";
+const char kDnsAutoFallbackProperty[] = "DNSAutoFallback";
+const char kPortalDetectionFailedPhaseProperty[] =
+    "PortalDetectionFailedPhase";
+const char kPortalDetectionFailedStatusProperty[] =
+    "PortalDetectionFailedStatus";
+const char kSavedIPConfigProperty[] = "SavedIPConfig";
+const char kStaticIPConfigProperty[] = "StaticIPConfig";
+const char kLinkMonitorDisableProperty[] = "LinkMonitorDisable";
+const char kSecurityClassProperty[] = "SecurityClass";
+
+// Flimflam provider property names.
+const char kProviderHostProperty[] = "Provider.Host";
+const char kProviderNameProperty[] = "Provider.Name";
+const char kProviderTypeProperty[] = "Provider.Type";
+
+// Flimflam Wifi Service property names.
+const char kWifiBSsid[] = "WiFi.BSSID";
+const char kWifiHexSsid[] = "WiFi.HexSSID";
+const char kWifiFrequency[] = "WiFi.Frequency";
+const char kWifiHiddenSsid[] = "WiFi.HiddenSSID";
+const char kWifiPhyMode[] = "WiFi.PhyMode";
+const char kWifiAuthMode[] = "WiFi.AuthMode";
+const char kWifiChannelProperty[] = "WiFi.Channel";
+const char kWifiPreferredDeviceProperty[] = "WiFi.PreferredDevice";
+const char kWifiRoamThresholdProperty[] = "WiFi.RoamThreshold";
+
+// Flimflam EAP property names.
+const char kEapIdentityProperty[] = "EAP.Identity";
+const char kEapMethodProperty[] = "EAP.EAP";
+const char kEapPhase2AuthProperty[] = "EAP.InnerEAP";
+const char kEapAnonymousIdentityProperty[] = "EAP.AnonymousIdentity";
+const char kEapClientCertProperty[] = "EAP.ClientCert";
+const char kEapCertIdProperty[] = "EAP.CertID";
+const char kEapClientCertNssProperty[] = "EAP.ClientCertNSS";
+const char kEapPrivateKeyProperty[] = "EAP.PrivateKey";
+const char kEapPrivateKeyPasswordProperty[] = "EAP.PrivateKeyPassword";
+const char kEapKeyIdProperty[] = "EAP.KeyID";
+const char kEapCaCertProperty[] = "EAP.CACert";
+const char kEapCaCertIdProperty[] = "EAP.CACertID";
+const char kEapCaCertNssProperty[] = "EAP.CACertNSS";
+const char kEapUseSystemCasProperty[] = "EAP.UseSystemCAs";
+const char kEapUseProactiveKeyCachingProperty[] = "EAP.UseProactiveKeyCaching";
+const char kEapPinProperty[] = "EAP.PIN";
+const char kEapPasswordProperty[] = "EAP.Password";
+const char kEapKeyMgmtProperty[] = "EAP.KeyMgmt";
+
+// Flimflam Cellular Service property names.
+const char kTechnologyFamilyProperty[] = "Cellular.Family";
+const char kActivationStateProperty[] = "Cellular.ActivationState";
+const char kNetworkTechnologyProperty[] = "Cellular.NetworkTechnology";
+const char kRoamingStateProperty[] = "Cellular.RoamingState";
+const char kOperatorNameProperty[] = "Cellular.OperatorName";
+const char kOperatorCodeProperty[] = "Cellular.OperatorCode";
+const char kServingOperatorProperty[] = "Cellular.ServingOperator";
+const char kPaymentPortalProperty[] = "Cellular.Olp";
+const char kUsageURLProperty[] = "Cellular.UsageUrl";
+const char kCellularApnProperty[] = "Cellular.APN";
+const char kCellularLastGoodApnProperty[] = "Cellular.LastGoodAPN";
+const char kCellularApnListProperty[] = "Cellular.APNList";
+
+// Flimflam Manager property names.
+const char kProfilesProperty[] = "Profiles";
+const char kServicesProperty[] = "Services";
+const char kServiceWatchListProperty[] = "ServiceWatchList";
+const char kAvailableTechnologiesProperty[] = "AvailableTechnologies";
+const char kEnabledTechnologiesProperty[] = "EnabledTechnologies";
+const char kConnectedTechnologiesProperty[] = "ConnectedTechnologies";
+const char kDefaultTechnologyProperty[] = "DefaultTechnology";
+const char kOfflineModeProperty[] = "OfflineMode";
+const char kActiveProfileProperty[] = "ActiveProfile";
+const char kDevicesProperty[] = "Devices";
+const char kCheckPortalListProperty[] = "CheckPortalList";
+const char kArpGatewayProperty[] = "ArpGateway";
+const char kCountryProperty[] = "Country";
+const char kPortalURLProperty[] = "PortalURL";
+const char kConnectionStateProperty[] = "ConnectionState";
+const char kClaimedDevicesProperty[] = "ClaimedDevices";
+
+// Flimflam Profile property names.
+const char kEntriesProperty[] = "Entries";
+
+// Flimflam Device property names.
+const char kScanningProperty[] = "Scanning";
+const char kPoweredProperty[] = "Powered";
+const char kNetworksProperty[] = "Networks";
+const char kScanIntervalProperty[] = "ScanInterval";
+const char kBgscanMethodProperty[] = "BgscanMethod";
+const char kBgscanShortIntervalProperty[] = "BgscanShortInterval";
+const char kRoamThresholdProperty[] = "RoamThreshold";
+const char kDBusObjectProperty[] = "DBus.Object";
+const char kDBusServiceProperty[] = "DBus.Service";
+const char kBgscanSignalThresholdProperty[] = "BgscanSignalThreshold";
+const char kWakeToScanPeriodSecondsProperty[] = "WakeToScanPeriodSeconds";
+const char kNetDetectScanPeriodSecondsProperty[] = "NetDetectScanPeriodSeconds";
+const char kForceWakeToScanTimerProperty[] = "ForceWakeToScanTimer";
+// The name of the network interface, ie. wlan0, eth0, etc.
+const char kInterfaceProperty[] = "Interface";
+const char kSelectedServiceProperty[] = "SelectedService";
+const char kIPConfigsProperty[] = "IPConfigs";
+const char kMACAddressRandomizationProperty[] = "MACAddressRandomization";
+
+// Flimflam Cellular Device property names.
+const char kCarrierProperty[] = "Cellular.Carrier";
+const char kCellularAllowRoamingProperty[] = "Cellular.AllowRoaming";
+const char kHomeProviderProperty[] = "Cellular.HomeProvider";
+const char kMeidProperty[] = "Cellular.MEID";
+const char kImeiProperty[] = "Cellular.IMEI";
+const char kIccidProperty[] = "Cellular.ICCID";
+const char kImsiProperty[] = "Cellular.IMSI";
+const char kEsnProperty[] = "Cellular.ESN";
+const char kMdnProperty[] = "Cellular.MDN";
+const char kMinProperty[] = "Cellular.MIN";
+const char kModelIDProperty[] = "Cellular.ModelID";
+const char kManufacturerProperty[] = "Cellular.Manufacturer";
+const char kFirmwareRevisionProperty[] = "Cellular.FirmwareRevision";
+const char kHardwareRevisionProperty[] = "Cellular.HardwareRevision";
+const char kPRLVersionProperty[] = "Cellular.PRLVersion";
+const char kSelectedNetworkProperty[] = "Cellular.SelectedNetwork";
+const char kSupportNetworkScanProperty[] = "Cellular.SupportNetworkScan";
+const char kFoundNetworksProperty[] = "Cellular.FoundNetworks";
+
+// Flimflam state options.
+const char kStateIdle[] = "idle";
+const char kStateCarrier[] = "carrier";
+const char kStateAssociation[] = "association";
+const char kStateConfiguration[] = "configuration";
+const char kStateReady[] = "ready";
+const char kStatePortal[] = "portal";
+const char kStateOffline[] = "offline";
+const char kStateOnline[] = "online";
+const char kStateDisconnect[] = "disconnect";
+const char kStateFailure[] = "failure";
+const char kStateActivationFailure[] = "activation-failure";
+
+// Flimflam portal phase and status.
+const char kPortalDetectionPhaseConnection[] = "Connection";
+const char kPortalDetectionPhaseDns[] = "DNS";
+const char kPortalDetectionPhaseHttp[] = "HTTP";
+const char kPortalDetectionPhaseContent[] = "Content";
+const char kPortalDetectionPhaseUnknown[] = "Unknown";
+const char kPortalDetectionStatusFailure[] = "Failure";
+const char kPortalDetectionStatusTimeout[] = "Timeout";
+const char kPortalDetectionStatusSuccess[] = "Success";
+
+// Flimflam property names for SIMLock status.
+const char kSIMLockStatusProperty[] = "Cellular.SIMLockStatus";
+const char kSIMLockTypeProperty[] = "LockType";
+const char kSIMLockRetriesLeftProperty[] = "RetriesLeft";
+const char kSIMLockEnabledProperty[] = "LockEnabled";
+
+// Flimflam property names for Cellular.FoundNetworks.
+const char kLongNameProperty[] = "long_name";
+const char kStatusProperty[] = "status";
+const char kShortNameProperty[] = "short_name";
+const char kTechnologyProperty[] = "technology";
+const char kNetworkIdProperty[] = "network_id";
+
+// Flimflam SIMLock status types.
+const char kSIMLockPin[] = "sim-pin";
+const char kSIMLockPuk[] = "sim-puk";
+
+// APN info property names.
+const char kApnProperty[] = "apn";
+const char kApnNetworkIdProperty[] = "network_id";
+const char kApnUsernameProperty[] = "username";
+const char kApnPasswordProperty[] = "password";
+const char kApnNameProperty[] = "name";
+const char kApnLocalizedNameProperty[] = "localized_name";
+const char kApnLanguageProperty[] = "language";
+
+// Payment Portal property names.
+const char kPaymentPortalURL[] = "url";
+const char kPaymentPortalMethod[] = "method";
+const char kPaymentPortalPostData[] = "postdata";
+
+// Operator info property names.
+const char kOperatorNameKey[] = "name";
+const char kOperatorCodeKey[] = "code";
+const char kOperatorCountryKey[] = "country";
+
+// Flimflam network technology options.
+const char kNetworkTechnology1Xrtt[] = "1xRTT";
+const char kNetworkTechnologyEvdo[] = "EVDO";
+const char kNetworkTechnologyGsm[] = "GSM";
+const char kNetworkTechnologyGprs[] = "GPRS";
+const char kNetworkTechnologyEdge[] = "EDGE";
+const char kNetworkTechnologyUmts[] = "UMTS";
+const char kNetworkTechnologyHspa[] = "HSPA";
+const char kNetworkTechnologyHspaPlus[] = "HSPA+";
+const char kNetworkTechnologyLte[] = "LTE";
+const char kNetworkTechnologyLteAdvanced[] = "LTE Advanced";
+
+// Flimflam roaming state options
+const char kRoamingStateHome[] = "home";
+const char kRoamingStateRoaming[] = "roaming";
+const char kRoamingStateUnknown[] = "unknown";
+
+// Flimflam activation state options
+const char kActivationStateActivated[] = "activated";
+const char kActivationStateActivating[] = "activating";
+const char kActivationStateNotActivated[] = "not-activated";
+const char kActivationStatePartiallyActivated[] = "partially-activated";
+const char kActivationStateUnknown[] = "unknown";
+
+// Flimflam EAP method options.
+const char kEapMethodPEAP[] = "PEAP";
+const char kEapMethodTLS[] = "TLS";
+const char kEapMethodTTLS[] = "TTLS";
+const char kEapMethodLEAP[] = "LEAP";
+
+// Flimflam EAP phase 2 auth options.
+const char kEapPhase2AuthPEAPMD5[] = "auth=MD5";
+const char kEapPhase2AuthPEAPMSCHAPV2[] = "auth=MSCHAPV2";
+const char kEapPhase2AuthPEAPGTC[] = "auth=GTC";
+const char kEapPhase2AuthTTLSMD5[] = "autheap=MD5";  // crosbug/26822
+const char kEapPhase2AuthTTLSEAPMD5[] = "autheap=MD5";
+const char kEapPhase2AuthTTLSEAPMSCHAPV2[] = "autheap=MSCHAPV2";
+const char kEapPhase2AuthTTLSMSCHAPV2[] = "auth=MSCHAPV2";
+const char kEapPhase2AuthTTLSMSCHAP[] = "auth=MSCHAP";
+const char kEapPhase2AuthTTLSPAP[] = "auth=PAP";
+const char kEapPhase2AuthTTLSCHAP[] = "auth=CHAP";
+const char kEapPhase2AuthTTLSGTC[] = "auth=GTC";
+const char kEapPhase2AuthTTLSEAPGTC[] = "autheap=GTC";
+
+// Flimflam VPN provider types.
+const char kProviderL2tpIpsec[] = "l2tpipsec";
+const char kProviderOpenVpn[] = "openvpn";
+const char kProviderThirdPartyVpn[] = "thirdpartyvpn";
+
+// Flimflam VPN service properties
+const char kVPNDomainProperty[] = "VPN.Domain";
+
+// Flimflam monitored properties
+const char kMonitorPropertyChanged[] = "PropertyChanged";
+
+// Flimflam type options.
+const char kTypeEthernet[] = "ethernet";
+const char kTypeWifi[] = "wifi";
+const char kTypeWimax[] = "wimax";
+const char kTypeBluetooth[] = "bluetooth";
+const char kTypeCellular[] = "cellular";
+const char kTypeVPN[] = "vpn";
+const char kTypePPPoE[] = "pppoe";
+
+// Flimflam mode options.
+const char kModeManaged[] = "managed";
+const char kModeAdhoc[] = "adhoc";
+
+// Flimflam security options.
+const char kSecurityWpa[] = "wpa";
+const char kSecurityWep[] = "wep";
+const char kSecurityRsn[] = "rsn";
+const char kSecurity8021x[] = "802_1x";
+const char kSecurityPsk[] = "psk";
+const char kSecurityNone[] = "none";
+
+// Flimflam L2TPIPsec property names.
+const char kL2tpIpsecAuthenticationType[] = "L2TPIPsec.AuthenticationType";
+const char kL2tpIpsecCaCertNssProperty[] = "L2TPIPsec.CACertNSS";
+const char kL2tpIpsecClientCertIdProperty[] = "L2TPIPsec.ClientCertID";
+const char kL2tpIpsecClientCertSlotProperty[] = "L2TPIPsec.ClientCertSlot";
+const char kL2tpIpsecIkeVersion[] = "L2TPIPsec.IKEVersion";
+const char kL2tpIpsecPinProperty[] = "L2TPIPsec.PIN";
+const char kL2tpIpsecPskProperty[] = "L2TPIPsec.PSK";
+const char kL2tpIpsecPskRequiredProperty[] = "L2TPIPsec.PSKRequired";
+const char kL2tpIpsecUserProperty[] = "L2TPIPsec.User";
+const char kL2tpIpsecPasswordProperty[] = "L2TPIPsec.Password";
+
+// Flimflam OpenVPN property names.
+const char kOpenVPNAuthNoCacheProperty[] = "OpenVPN.AuthNoCache";
+const char kOpenVPNAuthProperty[] = "OpenVPN.Auth";
+const char kOpenVPNAuthRetryProperty[] = "OpenVPN.AuthRetry";
+const char kOpenVPNAuthUserPassProperty[] = "OpenVPN.AuthUserPass";
+const char kOpenVPNCaCertProperty[] = "OpenVPN.CACert";
+const char kOpenVPNCaCertNSSProperty[] = "OpenVPN.CACertNSS";
+const char kOpenVPNClientCertIdProperty[] = "OpenVPN.Pkcs11.ID";
+const char kOpenVPNClientCertSlotProperty[] = "OpenVPN.Pkcs11.Slot";
+const char kOpenVPNCipherProperty[] = "OpenVPN.Cipher";
+const char kOpenVPNCompLZOProperty[] = "OpenVPN.CompLZO";
+const char kOpenVPNCompNoAdaptProperty[] = "OpenVPN.CompNoAdapt";
+const char kOpenVPNIgnoreDefaultRouteProperty[] = "OpenVPN.IgnoreDefaultRoute";
+const char kOpenVPNKeyDirectionProperty[] = "OpenVPN.KeyDirection";
+const char kOpenVPNMgmtEnableProperty[] = "OpenVPN.Mgmt.Enable";
+const char kOpenVPNNsCertTypeProperty[] = "OpenVPN.NsCertType";
+const char kOpenVPNOTPProperty[] = "OpenVPN.OTP";
+const char kOpenVPNPasswordProperty[] = "OpenVPN.Password";
+const char kOpenVPNPinProperty[] = "OpenVPN.Pkcs11.PIN";
+const char kOpenVPNPortProperty[] = "OpenVPN.Port";
+const char kOpenVPNProtoProperty[] = "OpenVPN.Proto";
+const char kOpenVPNProviderProperty[] = "OpenVPN.Pkcs11.Provider";
+const char kOpenVPNPushPeerInfoProperty[] = "OpenVPN.PushPeerInfo";
+const char kOpenVPNRemoteCertEKUProperty[] = "OpenVPN.RemoteCertEKU";
+const char kOpenVPNRemoteCertKUProperty[] = "OpenVPN.RemoteCertKU";
+const char kOpenVPNRemoteCertTLSProperty[] = "OpenVPN.RemoteCertTLS";
+const char kOpenVPNRenegSecProperty[] = "OpenVPN.RenegSec";
+const char kOpenVPNServerPollTimeoutProperty[] = "OpenVPN.ServerPollTimeout";
+const char kOpenVPNShaperProperty[] = "OpenVPN.Shaper";
+const char kOpenVPNStaticChallengeProperty[] = "OpenVPN.StaticChallenge";
+const char kOpenVPNTLSAuthContentsProperty[] = "OpenVPN.TLSAuthContents";
+const char kOpenVPNTLSRemoteProperty[] = "OpenVPN.TLSRemote";
+const char kOpenVPNUserProperty[] = "OpenVPN.User";
+
+// FlimFlam PPPoE property names.
+const char kPPPoEUsernameProperty[] = "PPPoE.Username";
+const char kPPPoEPasswordProperty[] = "PPPoE.Password";
+const char kPPPoELCPEchoIntervalProperty[] = "PPPoE.LCPEchoInterval";
+const char kPPPoELCPEchoFailureProperty[] = "PPPoE.LCPEchoFailure";
+const char kPPPoEMaxAuthFailureProperty[] = "PPPoE.MaxAuthFailure";
+
+// FlimFlam technology family options
+const char kTechnologyFamilyCdma[] = "CDMA";
+const char kTechnologyFamilyGsm[] = "GSM";
+
+// IPConfig property names.
+const char kMethodProperty[] = "Method";
+const char kAddressProperty[] = "Address";
+const char kMtuProperty[] = "Mtu";
+const char kPrefixlenProperty[] = "Prefixlen";
+const char kBroadcastProperty[] = "Broadcast";
+const char kPeerAddressProperty[] = "PeerAddress";
+const char kGatewayProperty[] = "Gateway";
+const char kDomainNameProperty[] = "DomainName";
+const char kAcceptedHostnameProperty[] = "AcceptedHostname";
+const char kNameServersProperty[] = "NameServers";
+const char kDhcpv6AddressesProperty[] = "Dhcpv6Addresses";
+const char kDhcpv6DelegatedPrefixesProperty[] = "Dhcpv6DelegatedPrefixes";
+const char kLeaseDurationSecondsProperty[] = "LeaseDurationSeconds";
+
+// These constants are deprecated in favor of kDhcpv6DelegatedPrefixesProperty.
+// TODO(tjennison): Remove when shill no longer uses them b/26778228
+const char kDelegatedPrefixProperty[] = "DelegatedPrefix";
+const char kDelegatedPrefixLengthProperty[] = "DelegatedPrefixLength";
+
+// IPConfig DHCPv6 address/prefix property names.
+const char kDhcpv6AddressProperty[] = "Address";
+const char kDhcpv6LengthProperty[] = "Length";
+const char kDhcpv6LeaseDurationSecondsProperty[] = "LeaseDurationSeconds";
+const char kDhcpv6PreferredLeaseDurationSecondsProperty[] =
+    "PreferredLeaseDurationSeconds";
+
+// IPConfig type options.
+const char kTypeIPv4[] = "ipv4";
+const char kTypeIPv6[] = "ipv6";
+const char kTypeDHCP[] = "dhcp";
+const char kTypeBOOTP[] = "bootp";
+const char kTypeZeroConf[] = "zeroconf";
+const char kTypeDHCP6[] = "dhcp6";
+const char kTypePPP[] = "ppp";
+
+// Flimflam error options.
+const char kErrorAaaFailed[] = "aaa-failed";
+const char kErrorActivationFailed[] = "activation-failed";
+const char kErrorBadPassphrase[] = "bad-passphrase";
+const char kErrorBadWEPKey[] = "bad-wepkey";
+const char kErrorConnectFailed[] = "connect-failed";
+const char kErrorDNSLookupFailed[] = "dns-lookup-failed";
+const char kErrorDhcpFailed[] = "dhcp-failed";
+const char kErrorHTTPGetFailed[] = "http-get-failed";
+const char kErrorInternal[] = "internal-error";
+const char kErrorInvalidFailure[] = "invalid-failure";
+const char kErrorIpsecCertAuthFailed[] = "ipsec-cert-auth-failed";
+const char kErrorIpsecPskAuthFailed[] = "ipsec-psk-auth-failed";
+const char kErrorNeedEvdo[] = "need-evdo";
+const char kErrorNeedHomeNetwork[] = "need-home-network";
+const char kErrorNoFailure[] = "no-failure";
+const char kErrorOtaspFailed[] = "otasp-failed";
+const char kErrorOutOfRange[] = "out-of-range";
+const char kErrorPinMissing[] = "pin-missing";
+const char kErrorPppAuthFailed[] = "ppp-auth-failed";
+const char kErrorUnknownFailure[] = "unknown-failure";
+
+// Flimflam error result codes.
+const char kErrorResultSuccess[] = "org.chromium.flimflam.Error.Success";
+const char kErrorResultFailure[] = "org.chromium.flimflam.Error.Failure";
+const char kErrorResultAlreadyConnected[] =
+    "org.chromium.flimflam.Error.AlreadyConnected";
+const char kErrorResultAlreadyExists[] =
+    "org.chromium.flimflam.Error.AlreadyExists";
+const char kErrorResultIncorrectPin[] =
+     "org.chromium.flimflam.Error.IncorrectPin";
+const char kErrorResultInProgress[] = "org.chromium.flimflam.Error.InProgress";
+const char kErrorResultInternalError[] =
+    "org.chromium.flimflam.Error.InternalError";
+const char kErrorResultInvalidApn[] = "org.chromium.flimflam.Error.InvalidApn";
+const char kErrorResultInvalidArguments[] =
+    "org.chromium.flimflam.Error.InvalidArguments";
+const char kErrorResultInvalidNetworkName[] =
+    "org.chromium.flimflam.Error.InvalidNetworkName";
+const char kErrorResultInvalidPassphrase[] =
+    "org.chromium.flimflam.Error.InvalidPassphrase";
+const char kErrorResultInvalidProperty[] =
+    "org.chromium.flimflam.Error.InvalidProperty";
+const char kErrorResultNoCarrier[] = "org.chromium.flimflam.Error.NoCarrier";
+const char kErrorResultNotConnected[] =
+     "org.chromium.flimflam.Error.NotConnected";
+const char kErrorResultNotFound[] = "org.chromium.flimflam.Error.NotFound";
+const char kErrorResultNotImplemented[] =
+    "org.chromium.flimflam.Error.NotImplemented";
+const char kErrorResultNotOnHomeNetwork[] =
+    "org.chromium.flimflam.Error.NotOnHomeNetwork";
+const char kErrorResultNotRegistered[] =
+    "org.chromium.flimflam.Error.NotRegistered";
+const char kErrorResultNotSupported[] =
+     "org.chromium.flimflam.Error.NotSupported";
+const char kErrorResultOperationAborted[] =
+    "org.chromium.flimflam.Error.OperationAborted";
+const char kErrorResultOperationInitiated[] =
+    "org.chromium.flimflam.Error.OperationInitiated";
+const char kErrorResultOperationTimeout[] =
+    "org.chromium.flimflam.Error.OperationTimeout";
+const char kErrorResultPassphraseRequired[] =
+    "org.chromium.flimflam.Error.PassphraseRequired";
+const char kErrorResultPermissionDenied[] =
+    "org.chromium.flimflam.Error.PermissionDenied";
+const char kErrorResultPinBlocked[] = "org.chromium.flimflam.Error.PinBlocked";
+const char kErrorResultPinRequired[] =
+     "org.chromium.flimflam.Error.PinRequired";
+const char kErrorResultWrongState[] = "org.chromium.flimflam.Error.WrongState";
+
+const char kUnknownString[] = "UNKNOWN";
+
+// Function names.
+const char kClearPropertiesFunction[] = "ClearProperties";
+const char kCompleteCellularActivationFunction[] = "CompleteCellularActivation";
+const char kConfigureServiceForProfileFunction[] = "ConfigureServiceForProfile";
+const char kConnectToBestServicesFunction[] = "ConnectToBestServices";
+const char kCreateConnectivityReportFunction[] = "CreateConnectivityReport";
+const char kAddWakeOnPacketConnectionFunction[] = "AddWakeOnPacketConnection";
+const char kRemoveWakeOnPacketConnectionFunction[] =
+    "RemoveWakeOnPacketConnection";
+const char kRemoveAllWakeOnPacketConnectionsFunction[] =
+    "RemoveAllWakeOnPacketConnections";
+const char kGetLoadableProfileEntriesFunction[] = "GetLoadableProfileEntries";
+const char kGetNetworksForGeolocation[] = "GetNetworksForGeolocation";
+const char kPerformTDLSOperationFunction[] = "PerformTDLSOperation";
+const char kRefreshFunction[] = "Refresh";
+const char kResetFunction[] = "Reset";
+const char kSetCarrierFunction[] = "SetCarrier";
+const char kSetPropertiesFunction[] = "SetProperties";
+const char kVerifyAndEncryptCredentialsFunction[] =
+    "VerifyAndEncryptCredentials";
+const char kVerifyAndEncryptDataFunction[] = "VerifyAndEncryptData";
+const char kVerifyDestinationFunction[] = "VerifyDestination";
+
+// ThirdPartyVpn functions.
+const char kSetParametersFunction[] = "SetParameters";
+const char kSendPacketFunction[] = "SendPacket";
+const char kUpdateConnectionStateFunction[] = "UpdateConnectionState";
+const char kOnPacketReceivedFunction[] = "OnPacketReceived";
+const char kOnPlatformMessageFunction[] = "OnPlatformMessage";
+
+// Device property names.
+const char kEapAuthenticationCompletedProperty[] = "EapAuthenticationCompleted";
+const char kEapAuthenticatorDetectedProperty[] = "EapAuthenticatorDetected";
+const char kLinkMonitorResponseTimeProperty[] = "LinkMonitorResponseTime";
+const char kLinkUpProperty[] = "Ethernet.LinkUp";
+const char kProviderRequiresRoamingProperty[] =
+    "Cellular.ProviderRequiresRoaming";
+const char kPPPoEProperty[] = "Ethernet.PPPoE";
+const char kReceiveByteCountProperty[] = "ReceiveByteCount";
+const char kSIMPresentProperty[] = "Cellular.SIMPresent";
+const char kSupportedCarriersProperty[] = "Cellular.SupportedCarriers";
+const char kTransmitByteCountProperty[] = "TransmitByteCount";
+const char kWifiSupportedFrequenciesProperty[] = "WiFi.SupportedFrequencies";
+
+// Technology types (augments "Flimflam type options" above).
+const char kTypeEthernetEap[] = "etherneteap";
+
+// Error strings.
+const char kErrorEapAuthenticationFailed[] = "eap-authentication-failed";
+const char kErrorEapLocalTlsFailed[] = "eap-local-tls-failed";
+const char kErrorEapRemoteTlsFailed[] = "eap-remote-tls-failed";
+
+// IPConfig property names.
+const char kSearchDomainsProperty[] = "SearchDomains";
+const char kVendorEncapsulatedOptionsProperty[] = "VendorEncapsulatedOptions";
+const char kWebProxyAutoDiscoveryUrlProperty[] = "WebProxyAutoDiscoveryUrl";
+// DHCP Option for iSNS (RFC 4174)
+const char kiSNSOptionDataProperty[] = "iSNSOptionData";
+
+// Manager property names.
+const char kDefaultServiceProperty[] = "DefaultService";
+const char kDisableWiFiVHTProperty[] = "DisableWiFiVHT";
+const char kHostNameProperty[] = "HostName";
+const char kIgnoredDNSSearchPathsProperty[] = "IgnoredDNSSearchPaths";
+const char kLinkMonitorTechnologiesProperty[] =
+    "LinkMonitorTechnologies";
+const char kNoAutoConnectTechnologiesProperty[] = "NoAutoConnectTechnologies";
+const char kPortalCheckIntervalProperty[] = "PortalCheckInterval";
+const char kProhibitedTechnologiesProperty[] = "ProhibitedTechnologies";
+const char kServiceCompleteListProperty[] = "ServiceCompleteList";
+const char kShortDNSTimeoutTechnologiesProperty[] =
+    "ShortDNSTimeoutTechnologies";
+const char kUninitializedTechnologiesProperty[] = "UninitializedTechnologies";
+const char kWakeOnLanEnabledProperty[] = "WakeOnLanEnabled";
+const char kWakeOnWiFiFeaturesEnabledProperty[] = "WakeOnWiFiFeaturesEnabled";
+
+// Service property names.
+const char kActivationTypeProperty[] = "Cellular.ActivationType";
+const char kDiagnosticsDisconnectsProperty[] = "Diagnostics.Disconnects";
+const char kDiagnosticsMisconnectsProperty[] = "Diagnostics.Misconnects";
+const char kEapRemoteCertificationProperty[] = "EAP.RemoteCertification";
+const char kEapCaCertPemProperty[] = "EAP.CACertPEM";
+const char kEapSubjectMatchProperty[] = "EAP.SubjectMatch";
+const char kErrorDetailsProperty[] = "ErrorDetails";
+const char kHTTPProxyPortProperty[] = "HTTPProxyPort";
+const char kKeyManagementIEEE8021X[] = "IEEE8021X";
+const char kIPConfigProperty[] = "IPConfig";
+const char kL2tpIpsecCaCertPemProperty[] = "L2TPIPsec.CACertPEM";
+const char kL2tpIpsecTunnelGroupProperty[] = "L2TPIPsec.TunnelGroup";
+const char kL2tpIpsecXauthPasswordProperty[] = "L2TPIPsec.XauthPassword";
+const char kL2tpIpsecXauthUserProperty[] = "L2TPIPsec.XauthUser";
+const char kL2tpIpsecLcpEchoDisabledProperty[] = "L2TPIPsec.LCPEchoDisabled";
+const char kManagedCredentialsProperty[] = "ManagedCredentials";
+const char kOpenVPNCaCertPemProperty[] = "OpenVPN.CACertPEM";
+const char kOpenVPNCertProperty[] = "OpenVPN.Cert";
+const char kOpenVPNExtraCertPemProperty[] = "OpenVPN.ExtraCertPEM";
+const char kOpenVPNKeyProperty[] = "OpenVPN.Key";
+const char kOpenVPNPingProperty[] = "OpenVPN.Ping";
+const char kOpenVPNPingExitProperty[] = "OpenVPN.PingExit";
+const char kOpenVPNPingRestartProperty[] = "OpenVPN.PingRestart";
+const char kOpenVPNTLSAuthProperty[] = "OpenVPN.TLSAuth";
+const char kOpenVPNTokenProperty[] = "OpenVPN.Token";
+const char kOpenVPNVerbProperty[] = "OpenVPN.Verb";
+const char kOpenVPNVerifyHashProperty[] = "OpenVPN.VerifyHash";
+const char kOpenVPNVerifyX509NameProperty[] = "OpenVPN.VerifyX509Name";
+const char kOpenVPNVerifyX509TypeProperty[] = "OpenVPN.VerifyX509Type";
+const char kOutOfCreditsProperty[] = "Cellular.OutOfCredits";
+const char kPhysicalTechnologyProperty[] = "PhysicalTechnology";
+const char kPreviousErrorProperty[] = "PreviousError";
+const char kPreviousErrorSerialNumberProperty[] = "PreviousErrorSerialNumber";
+const char kStaticIPAddressProperty[] = "StaticIP.Address";
+const char kStaticIPGatewayProperty[] = "StaticIP.Gateway";
+const char kStaticIPMtuProperty[] = "StaticIP.Mtu";
+const char kStaticIPNameServersProperty[] = "StaticIP.NameServers";
+const char kStaticIPPeerAddressProperty[] = "StaticIP.PeerAddress";
+const char kStaticIPPrefixlenProperty[] = "StaticIP.Prefixlen";
+const char kSavedIPAddressProperty[] = "SavedIP.Address";
+const char kSavedIPGatewayProperty[] = "SavedIP.Gateway";
+const char kSavedIPMtuProperty[] = "SavedIP.Mtu";
+const char kSavedIPNameServersProperty[] = "SavedIP.NameServers";
+const char kSavedIPPeerAddressProperty[] = "SavedIP.PeerAddress";
+const char kSavedIPPrefixlenProperty[] = "SavedIP.Prefixlen";
+const char kTetheringProperty[] = "Tethering";
+const char kVPNMTUProperty[] = "VPN.MTU";
+const char kWifiFrequencyListProperty[] = "WiFi.FrequencyList";
+const char kWifiVendorInformationProperty[] = "WiFi.VendorInformation";
+const char kWifiProtectedManagementFrameRequiredProperty[] =
+    "WiFi.ProtectedManagementFrameRequired";
+
+// Profile property names.
+const char kUserHashProperty[] = "UserHash";
+
+// Service Tethering property values.
+const char kTetheringNotDetectedState[] = "NotDetected";
+const char kTetheringSuspectedState[] = "Suspected";
+const char kTetheringConfirmedState[] = "Confirmed";
+
+// WiFi Service Vendor Information dictionary properties.
+const char kVendorWPSManufacturerProperty[] = "Manufacturer";
+const char kVendorWPSModelNameProperty[] = "ModelName";
+const char kVendorWPSModelNumberProperty[] = "ModelNumber";
+const char kVendorWPSDeviceNameProperty[] = "DeviceName";
+const char kVendorOUIListProperty[] = "OUIList";
+
+// WiFi Device link property names.
+const char kLinkStatisticsProperty[] = "LinkStatistics";
+const char kAverageReceiveSignalDbmProperty[] = "AverageReceiveSignalDbm";
+const char kInactiveTimeMillisecondsProperty[] =
+    "InactiveTimeMilliseconds";
+const char kLastReceiveSignalDbmProperty[] = "LastReceiveSignalDbm";
+const char kPacketReceiveSuccessesProperty[] = "PacketReceiveSuccesses";
+const char kPacketTransmitFailuresProperty[] = "PacketTransmitFailures";
+const char kPacketTransmitSuccessesProperty[] = "PacketTrasmitSuccesses";
+const char kTransmitBitrateProperty[] = "TransmitBitrate";
+const char kTransmitRetriesProperty[] = "TransmitRetries";
+
+// WiFi TDLS operations.
+const char kTDLSDiscoverOperation[] = "Discover";
+const char kTDLSSetupOperation[] = "Setup";
+const char kTDLSStatusOperation[] = "Status";
+const char kTDLSTeardownOperation[] = "Teardown";
+
+// WiFi TDLS states.
+const char kTDLSConnectedState[] = "Connected";
+const char kTDLSDisabledState[] = "Disabled";
+const char kTDLSDisconnectedState[] = "Disconnected";
+const char kTDLSNonexistentState[] = "Nonexistent";
+const char kTDLSUnknownState[] = "Unknown";
+
+// Wake on WiFi features.
+const char kWakeOnWiFiFeaturesEnabledPacket[] = "packet";
+const char kWakeOnWiFiFeaturesEnabledDarkConnect[] = "darkconnect";
+const char kWakeOnWiFiFeaturesEnabledPacketDarkConnect[] =
+    "packet_and_darkconnect";
+const char kWakeOnWiFiFeaturesEnabledNone[] = "none";
+const char kWakeOnWiFiFeaturesEnabledNotSupported[] = "not_supported";
+
+// Cellular service carriers.
+const char kCarrierGenericUMTS[] = "Generic UMTS";
+const char kCarrierSprint[] = "Sprint";
+const char kCarrierVerizon[] = "Verizon Wireless";
+
+// Cellular activation types.
+const char kActivationTypeNonCellular[] = "NonCellular";  // For future use
+const char kActivationTypeOMADM[] = "OMADM";  // For future use
+const char kActivationTypeOTA[] = "OTA";
+const char kActivationTypeOTASP[] = "OTASP";
+
+// Geolocation property field names.
+// Reference:
+//    https://devsite.googleplex.com/maps/documentation/business/geolocation/
+// Top level properties for a Geolocation request.
+const char kGeoHomeMobileCountryCodeProperty[] = "homeMobileCountryCode";
+const char kGeoHomeMobileNetworkCodeProperty[] = "homeMobileNetworkCode";
+const char kGeoRadioTypePropertyProperty[] = "radioType";
+const char kGeoCellTowersProperty[] = "cellTowers";
+const char kGeoWifiAccessPointsProperty[] = "wifiAccessPoints";
+// Cell tower object property names.
+const char kGeoCellIdProperty[] = "cellId";
+const char kGeoLocationAreaCodeProperty[] = "locationAreaCode";
+const char kGeoMobileCountryCodeProperty[] = "mobileCountryCode";
+const char kGeoMobileNetworkCodeProperty[] = "mobileNetworkCode";
+const char kGeoTimingAdvanceProperty[] = "timingAdvance";
+// WiFi access point property names.
+const char kGeoMacAddressProperty[] = "macAddress";
+const char kGeoChannelProperty[] = "channel";
+const char kGeoSignalToNoiseRatioProperty[] = "signalToNoiseRatio";
+// Common property names for geolocation objects.
+const char kGeoAgeProperty[] = "age";
+const char kGeoSignalStrengthProperty[] = "signalStrength";
+// ThirdPartyVpn parameters, properties and constants.
+const char kAddressParameterThirdPartyVpn[] = "address";
+const char kBroadcastAddressParameterThirdPartyVpn[] = "broadcast_address";
+const char kGatewayParameterThirdPartyVpn[] = "gateway";
+const char kBypassTunnelForIpParameterThirdPartyVpn[] = "bypass_tunnel_for_ip";
+const char kSubnetPrefixParameterThirdPartyVpn[] = "subnet_prefix";
+const char kMtuParameterThirdPartyVpn[] = "mtu";
+const char kDomainSearchParameterThirdPartyVpn[] = "domain_search";
+const char kDnsServersParameterThirdPartyVpn[] = "dns_servers";
+const char kInclusionListParameterThirdPartyVpn[] = "inclusion_list";
+const char kExclusionListParameterThirdPartyVpn[] = "exclusion_list";
+const char kReconnectParameterThirdPartyVpn[] = "reconnect";
+const char kObjectPathSuffixProperty[] = "ObjectPathSuffix";
+const char kExtensionNameProperty[] = "ExtensionName";
+const char kConfigurationNameProperty[] = "ConfigurationName";
+const char kObjectPathBase[] = "/thirdpartyvpn/";
+const char kNonIPDelimiter = ':';
+const char kIPDelimiter = ' ';
+}  // namespace shill
+
+#endif  // SYSTEM_API_DBUS_SHILL_DBUS_CONSTANTS_H_
diff --git a/system_api/dbus/update_engine/dbus-constants.h b/system_api/dbus/update_engine/dbus-constants.h
new file mode 100644
index 0000000..86c60dd
--- /dev/null
+++ b/system_api/dbus/update_engine/dbus-constants.h
@@ -0,0 +1,60 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYSTEM_API_DBUS_UPDATE_ENGINE_DBUS_CONSTANTS_H_
+#define SYSTEM_API_DBUS_UPDATE_ENGINE_DBUS_CONSTANTS_H_
+
+namespace update_engine {
+const char kUpdateEngineInterface[] = "org.chromium.UpdateEngineInterface";
+const char kUpdateEngineServicePath[] = "/org/chromium/UpdateEngine";
+const char kUpdateEngineServiceName[] = "org.chromium.UpdateEngine";
+
+// Generic UpdateEngine D-Bus error.
+const char kUpdateEngineServiceErrorFailed[] =
+    "org.chromium.UpdateEngine.Error.Failed";
+
+// Methods.
+const char kAttemptUpdate[] = "AttemptUpdate";
+const char kGetLastAttemptError[] = "GetLastAttemptError";
+const char kGetStatus[] = "GetStatus";
+const char kRebootIfNeeded[] = "RebootIfNeeded";
+const char kSetChannel[] = "SetChannel";
+const char kGetChannel[] = "GetChannel";
+const char kAttemptRollback[] = "AttemptRollback";
+const char kCanRollback[] = "CanRollback";
+const char kGetEolStatus[] = "GetEolStatus";
+
+// Signals.
+const char kStatusUpdate[] = "StatusUpdate";
+
+// Flags used in the AttemptUpdateWithFlags() D-Bus method.
+typedef enum {
+  kAttemptUpdateFlagNonInteractive = (1 << 0)
+} AttemptUpdateFlags;
+
+// End of Life status used in the GetEolStatus() D-Bus method.
+typedef enum {
+   kSupported = 0,
+   kSecurityOnly = 1,
+   kEol = 2,
+} EndOfLifeStatus;
+
+// Operations contained in StatusUpdate signals.
+const char kUpdateStatusIdle[] = "UPDATE_STATUS_IDLE";
+const char kUpdateStatusCheckingForUpdate[] =
+    "UPDATE_STATUS_CHECKING_FOR_UPDATE";
+const char kUpdateStatusUpdateAvailable[] = "UPDATE_STATUS_UPDATE_AVAILABLE";
+const char kUpdateStatusDownloading[] = "UPDATE_STATUS_DOWNLOADING";
+const char kUpdateStatusVerifying[] = "UPDATE_STATUS_VERIFYING";
+const char kUpdateStatusFinalizing[] = "UPDATE_STATUS_FINALIZING";
+const char kUpdateStatusUpdatedNeedReboot[] =
+    "UPDATE_STATUS_UPDATED_NEED_REBOOT";
+const char kUpdateStatusReportingErrorEvent[] =
+    "UPDATE_STATUS_REPORTING_ERROR_EVENT";
+const char kUpdateStatusAttemptingRollback[] =
+    "UPDATE_STATUS_ATTEMPTING_ROLLBACK";
+const char kUpdateStatusDisabled[] = "UPDATE_STATUS_DISABLED";
+}  // namespace update_engine
+
+#endif  // SYSTEM_API_DBUS_UPDATE_ENGINE_DBUS_CONSTANTS_H_
diff --git a/system_api/switches/chrome_switches.h b/system_api/switches/chrome_switches.h
new file mode 100644
index 0000000..dbc0803
--- /dev/null
+++ b/system_api/switches/chrome_switches.h
@@ -0,0 +1,26 @@
+// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SWITCHES_CHROME_SWITCHES_H_
+#define SWITCHES_CHROME_SWITCHES_H_
+
+// This file defines switches that are used both by Chrome and login_manager.
+
+namespace chromeos {
+namespace switches {
+
+// Sentinel switches for policy injected flags.
+const char kPolicySwitchesBegin[] = "policy-switches-begin";
+const char kPolicySwitchesEnd[] = "policy-switches-end";
+
+// Switch for path that breakpad can read an optional termination message from.
+const char kTerminationMessageFile[] = "termination-message-file";
+
+// Flag passed to the browser if the system is running in dev-mode.
+const char kSystemInDevMode[] = "system-developer-mode";
+
+}  // namespace switches
+}  // namespace chromeos
+
+#endif  // SWITCHES_CHROME_SWITCHES_H_
diff --git a/system_api/system_api.gyp b/system_api/system_api.gyp
new file mode 100644
index 0000000..47b12d7
--- /dev/null
+++ b/system_api/system_api.gyp
@@ -0,0 +1,89 @@
+{
+  'targets': [
+    {
+      'target_name': 'system_api-protos-gen',
+      'type': 'none',
+      'variables': {
+        'proto_in_dir': 'dbus',
+        'proto_out_dir': 'include/system_api/proto_bindings',
+      },
+      'sources': [
+        '<(proto_in_dir)/mtp_storage_info.proto',
+        '<(proto_in_dir)/mtp_file_entry.proto',
+        '<(proto_in_dir)/field_trial_list.proto',
+      ],
+      'includes': ['../../platform2/common-mk/protoc.gypi'],
+    },
+    {
+      'target_name': 'system_api-protos',
+      'type': 'static_library',
+      'standalone_static_library': 1,
+      'dependencies': [
+        'system_api-protos-gen',
+      ],
+      'sources': [
+        '<(SHARED_INTERMEDIATE_DIR)/include/system_api/proto_bindings/mtp_storage_info.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/system_api/proto_bindings/mtp_file_entry.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/system_api/proto_bindings/field_trial_list.pb.cc',
+      ]
+    },
+    {
+      'target_name': 'system_api-power_manager-protos-gen',
+      'type': 'none',
+      'variables': {
+        'proto_in_dir': 'dbus/power_manager',
+        'proto_out_dir': 'include/power_manager/proto_bindings',
+      },
+      'sources': [
+        '<(proto_in_dir)/suspend.proto',
+        '<(proto_in_dir)/input_event.proto',
+        '<(proto_in_dir)/peripheral_battery_status.proto',
+        '<(proto_in_dir)/policy.proto',
+        '<(proto_in_dir)/power_supply_properties.proto',
+      ],
+      'includes': ['../../platform2/common-mk/protoc.gypi'],
+    },
+    {
+      'target_name': 'system_api-power_manager-protos',
+      'type': 'static_library',
+      'standalone_static_library': 1,
+      'dependencies': [
+        'system_api-power_manager-protos-gen',
+      ],
+      'sources': [
+        '<(SHARED_INTERMEDIATE_DIR)/include/power_manager/proto_bindings/suspend.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/power_manager/proto_bindings/input_event.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/power_manager/proto_bindings/peripheral_battery_status.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/power_manager/proto_bindings/policy.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/power_manager/proto_bindings/power_supply_properties.pb.cc',
+      ]
+    },
+    {
+      'target_name': 'system_api-cryptohome-protos-gen',
+      'type': 'none',
+      'variables': {
+        'proto_in_dir': 'dbus/cryptohome',
+        'proto_out_dir': 'include/cryptohome/proto_bindings',
+      },
+      'sources': [
+        '<(proto_in_dir)/key.proto',
+        '<(proto_in_dir)/rpc.proto',
+        '<(proto_in_dir)/signed_secret.proto',
+      ],
+      'includes': ['../../platform2/common-mk/protoc.gypi'],
+    },
+    {
+      'target_name': 'system_api-cryptohome-protos',
+      'type': 'static_library',
+      'standalone_static_library': 1,
+      'dependencies': [
+        'system_api-cryptohome-protos-gen',
+      ],
+      'sources': [
+        '<(SHARED_INTERMEDIATE_DIR)/include/cryptohome/proto_bindings/key.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/cryptohome/proto_bindings/rpc.pb.cc',
+        '<(SHARED_INTERMEDIATE_DIR)/include/cryptohome/proto_bindings/signed_secret.pb.cc',
+      ]
+    },
+  ]
+}
diff --git a/system_api/system_api.pc b/system_api/system_api.pc
new file mode 100644
index 0000000..c6925ac
--- /dev/null
+++ b/system_api/system_api.pc
@@ -0,0 +1,4 @@
+Name: system_api
+Description: Protobuffers and headers shared by Chromium OS and Chromium.
+Version: 0.1
+Libs: -lsystem_api-power_manager-protos -lsystem_api-cryptohome-protos -lsystem_api-protos