diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 53ff74d8..00000000
--- a/.gitmodules
+++ /dev/null
@@ -1,15 +0,0 @@
-[submodule "extern/UnifiedNlp"]
- path = extern/UnifiedNlp
- url = https://github.com/microg/android_packages_apps_UnifiedNlp.git
-[submodule "extern/GmsApi"]
- path = extern/GmsApi
- url = https://github.com/microg/android_external_GmsApi.git
-[submodule "extern/Wearable"]
- path = extern/Wearable
- url = https://github.com/microg/android_external_Wearable.git
-[submodule "extern/GmsLib"]
- path = extern/GmsLib
- url = https://github.com/microg/android_external_GmsLib.git
-[submodule "extern/RemoteDroidGuard"]
- path = extern/RemoteDroidGuard
- url = https://github.com/microg/android_packages_apps_RemoteDroidGuard.git
diff --git a/.travis.yml b/.travis.yml
index 87ad538a..daf99eeb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,7 +10,6 @@ android:
components:
- tools
- platform-tools
- - build-tools-29.0.2
- - android-27
- - android-28
+ - build-tools-29.0.3
+ - android-29
- extra-android-m2repository
diff --git a/build.gradle b/build.gradle
index b6ffdcde..d9efd03d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,63 +1,110 @@
/*
- * Copyright 2013-2019 microG Project Team
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * SPDX-FileCopyrightText: 2013, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
*/
buildscript {
- ext.kotlin_version = '1.3.21'
+ ext.nlpVersion = '2.0-alpha1'
+ ext.remoteDroidGuardVersion = '0.1.1'
+ ext.safeParcelVersion = '1.6.0'
+ ext.wearableVersion = '0.1.1'
+
+ ext.kotlinVersion = '1.3.72'
+ ext.coroutineVersion = '1.3.7'
+
+ ext.annotationVersion = '1.1.0'
+ ext.appcompatVersion = '1.1.0'
+ ext.fragmentVersion = '1.2.5'
+ ext.lifecycleVersion = '2.2.0'
+ ext.mediarouterVersion = '1.1.0'
+ ext.multidexVersion = '2.0.1'
+ ext.navigationVersion = '2.3.0'
+ ext.preferenceVersion = '1.1.1'
+ ext.recyclerviewVersion = '1.1.0'
+
+ ext.supportLibraryVersion = "28.0.0"
+ ext.slf4jVersion = "1.7.25"
+
+ ext.androidBuildGradleVersion = "3.6.3"
+
+ ext.androidBuildVersionTools = "29.0.3"
+
+ ext.androidMinSdk = 14
+ ext.androidTargetSdk = 29
+ ext.androidCompileSdk = 29
+
repositories {
jcenter()
google()
}
+
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.1'
- classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath "com.android.tools.build:gradle:$androidBuildGradleVersion"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
+def execResult(...args) {
+ def stdout = new ByteArrayOutputStream()
+ exec {
+ commandLine args
+ standardOutput = stdout
+ }
+ return stdout.toString().trim()
+}
+
+def gmsVersion = "19.4.20"
+def gmsVersionCode = Integer.parseInt(gmsVersion.replaceAll('\\.', ''))
+def gitVersionBase = execResult('git', 'describe', '--tags', '--abbrev=0', '--match=v[0-9]*').substring(1)
+def gitCommitCount = Integer.parseInt(execResult('git', 'rev-list', '--count', "v$gitVersionBase..HEAD"))
+def gitCommitId = execResult('git', 'show-ref', '--abbrev=7', '--head', 'HEAD').split(' ')[0]
+def gitDirty = execResult('git', 'status', '--porcelain').size() > 0
+def ourVersionBase = gitVersionBase.substring(0, gitVersionBase.lastIndexOf('.'))
+def ourVersionMinor = Integer.parseInt(ourVersionBase.substring(ourVersionBase.lastIndexOf('.') + 1))
+def ourVersionCode = gmsVersionCode * 1000 + ourVersionMinor * 2 + (gitCommitCount > 0 || gitDirty ? 1 : 0)
+def ourVersionName = "$ourVersionBase.$gmsVersionCode" + (gitCommitCount > 0 && !gitDirty ? "-$gitCommitCount" : "") + (gitDirty ? "-dirty" : "") + (gitCommitCount > 0 && !gitDirty ? " ($gitCommitId)" : "")
+logger.lifecycle('Starting build for version {} ({})...', ourVersionName, ourVersionCode)
+
+@Deprecated
+String getMyVersionName() {
+ return ourVersionName
+}
+
+@Deprecated
+int getMyVersionCode() {
+ return ourVersionCode
+}
+
+
allprojects {
apply plugin: 'idea'
- ext.androidBuildVersionTools = "29.0.2"
- ext.supportLibraryVersion = "28.0.0"
+
+ group = 'org.microg.gms'
+ version = ourVersionName
+ ext.appVersionCode = ourVersionCode
ext.isReleaseVersion = false
- ext.slf4jVersion = "1.7.25"
}
-def androidCompileSdk() { return 28 }
+@Deprecated
+def androidCompileSdk() { return androidCompileSdk }
-def androidTargetSdk() { return 29 }
+@Deprecated
+def androidTargetSdk() { return androidTargetSdk }
-def androidMinSdk() { return 14 }
+@Deprecated
+def androidMinSdk() { return androidMinSdk }
+@Deprecated
def versionCode() {
- def stdout = new ByteArrayOutputStream()
- exec { commandLine 'git', 'rev-list', '--count', "HEAD"; standardOutput = stdout }
- return Integer.parseInt(stdout.toString().trim())
+ return ourVersionCode
}
+@Deprecated
def versionName() {
- def stdout = new ByteArrayOutputStream()
- if (rootProject.file("gradlew").exists())
- exec { commandLine 'git', 'describe', '--tags', '--always', '--dirty'; standardOutput = stdout }
- else // automatic build system, don't tag dirty
- exec { commandLine 'git', 'describe', '--tags', '--always'; standardOutput = stdout }
- return stdout.toString().trim().substring(1)
+ return ourVersionName
}
subprojects {
- group = 'org.microg'
repositories {
jcenter()
google()
diff --git a/extern/GmsApi b/extern/GmsApi
deleted file mode 160000
index 2a43448e..00000000
--- a/extern/GmsApi
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2a43448e49dc0aec0d6c53c8a27dd58245fdaba6
diff --git a/extern/GmsLib b/extern/GmsLib
deleted file mode 160000
index 15cd4491..00000000
--- a/extern/GmsLib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 15cd4491bcca57d627796b35b69bdf8c97564792
diff --git a/extern/UnifiedNlp b/extern/UnifiedNlp
deleted file mode 160000
index 82479b79..00000000
--- a/extern/UnifiedNlp
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 82479b79c76353f532e0c6edd0d1dee8d49c48f4
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 00000000..5bac8ac5
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1 @@
+android.useAndroidX=true
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d757f3d3..21a8fe40 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-all.zip
diff --git a/microg-ui-tools b/microg-ui-tools
deleted file mode 120000
index d6e8b594..00000000
--- a/microg-ui-tools
+++ /dev/null
@@ -1 +0,0 @@
-extern/UnifiedNlp/microg-ui-tools/
\ No newline at end of file
diff --git a/play-services-api b/play-services-api
deleted file mode 120000
index ce1f09ca..00000000
--- a/play-services-api
+++ /dev/null
@@ -1 +0,0 @@
-extern/GmsApi/play-services-api
\ No newline at end of file
diff --git a/play-services-api/build.gradle b/play-services-api/build.gradle
new file mode 100644
index 00000000..44c2d884
--- /dev/null
+++ b/play-services-api/build.gradle
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2013-2015 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'com.android.library'
+
+android {
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+}
+
+dependencies {
+ api project(':play-services-basement')
+ api project(':play-services-cast-api')
+ api project(':play-services-cast-framework-api')
+ api project(':play-services-iid-api')
+ api project(':play-services-location-api')
+ api project(':play-services-wearable-api')
+}
diff --git a/play-services-api/gradle.properties b/play-services-api/gradle.properties
new file mode 100644
index 00000000..221fda84
--- /dev/null
+++ b/play-services-api/gradle.properties
@@ -0,0 +1,34 @@
+#
+# Copyright 2013-2016 microG Project Team
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+POM_NAME=Play Services Internal API
+POM_DESCRIPTION=Interfaces and objects for IPC between Play Services Library and Play Services Core
+
+POM_PACKAGING=aar
+
+POM_URL=https://github.com/microg/android_external_GmsApi
+
+POM_SCM_URL=https://github.com/microg/android_external_GmsApi
+POM_SCM_CONNECTION=scm:git@github.com:microg/android_external_GmsApi.git
+POM_SCM_DEV_CONNECTION=scm:git@github.com:microg/android_external_GmsApi.git
+
+POM_LICENCE_NAME=The Apache Software License, Version 2.0
+POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
+POM_LICENCE_DIST=repo
+
+POM_DEVELOPER_ID=mar-v-in
+POM_DEVELOPER_NAME=Marvin W
+
diff --git a/play-services-api/src/main/AndroidManifest.xml b/play-services-api/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..d4a4d07a
--- /dev/null
+++ b/play-services-api/src/main/AndroidManifest.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/play-services-api/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl b/play-services-api/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl
new file mode 100644
index 00000000..75a949b8
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl
@@ -0,0 +1,14 @@
+package com.google.android.auth;
+
+import android.os.Bundle;
+import android.accounts.Account;
+
+import com.google.android.gms.auth.AccountChangeEventsResponse;
+import com.google.android.gms.auth.AccountChangeEventsRequest;
+
+interface IAuthManagerService {
+ Bundle getToken(String accountName, String scope, in Bundle extras) = 0;
+ Bundle clearToken(String token, in Bundle extras) = 1;
+ AccountChangeEventsResponse getChangeEvents(in AccountChangeEventsRequest request) = 2;
+ Bundle getTokenWithAccount(in Account account, String scope, in Bundle extras) = 4;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/ads/AdManagerCreator.aidl b/play-services-api/src/main/aidl/com/google/android/gms/ads/AdManagerCreator.aidl
new file mode 100644
index 00000000..7e07dd01
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/ads/AdManagerCreator.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.ads;
+
+interface AdManagerCreator {
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/ads/identifier/internal/IAdvertisingIdService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/ads/identifier/internal/IAdvertisingIdService.aidl
new file mode 100644
index 00000000..5f4f5c1f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/ads/identifier/internal/IAdvertisingIdService.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.ads.identifier.internal;
+
+interface IAdvertisingIdService {
+ String getAdvertisingId() = 0;
+ boolean isAdTrackingLimited(boolean defaultHint) = 1;
+ String generateAdvertisingId(String packageName) = 2;
+ void setAdTrackingLimited(String packageName, boolean limited) = 3;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/CorpusStatus.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/CorpusStatus.aidl
new file mode 100644
index 00000000..f893aef8
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/CorpusStatus.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable CorpusStatus;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdate.aidl
new file mode 100644
index 00000000..c7f5e432
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdate.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable PIMEUpdate;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdateResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdateResponse.aidl
new file mode 100644
index 00000000..0ae6e4bc
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdateResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable PIMEUpdateResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/RequestIndexingSpecification.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/RequestIndexingSpecification.aidl
new file mode 100644
index 00000000..a0a785c1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/RequestIndexingSpecification.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable RequestIndexingSpecification;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestSpecification.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestSpecification.aidl
new file mode 100644
index 00000000..0b3c47ff
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestSpecification.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable SuggestSpecification;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestionResults.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestionResults.aidl
new file mode 100644
index 00000000..57d2d63b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestionResults.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable SuggestionResults;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/UsageInfo.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/UsageInfo.aidl
new file mode 100644
index 00000000..b52e3d4f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/UsageInfo.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable UsageInfo;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/IAppDataSearch.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/IAppDataSearch.aidl
new file mode 100644
index 00000000..ebc204c7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/IAppDataSearch.aidl
@@ -0,0 +1,14 @@
+package com.google.android.gms.appdatasearch.internal;
+
+import com.google.android.gms.appdatasearch.CorpusStatus;
+import com.google.android.gms.appdatasearch.PIMEUpdateResponse;
+import com.google.android.gms.appdatasearch.RequestIndexingSpecification;
+import com.google.android.gms.appdatasearch.SuggestionResults;
+import com.google.android.gms.appdatasearch.SuggestSpecification;
+
+interface IAppDataSearch {
+ SuggestionResults getSuggestions(String var1, String packageName, in String[] accounts, int maxNum, in SuggestSpecification specs) = 1;
+ boolean requestIndexing(String packageName, String accountName, long l, in RequestIndexingSpecification specs) = 3;
+ CorpusStatus getStatus(String packageName, String accountName) = 4;
+ PIMEUpdateResponse requestPIMEUpdate(String s1, String s2, int i, in byte[] bs) = 34;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearch.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearch.aidl
new file mode 100644
index 00000000..77e618ac
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearch.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.appdatasearch.internal;
+
+import com.google.android.gms.appdatasearch.internal.ILightweightAppDataSearchCallbacks;
+import com.google.android.gms.appdatasearch.UsageInfo;
+
+interface ILightweightAppDataSearch {
+ void view(ILightweightAppDataSearchCallbacks callbacks, String packageName, in UsageInfo[] usageInfos);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearchCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearchCallbacks.aidl
new file mode 100644
index 00000000..338a1427
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearchCallbacks.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.appdatasearch.internal;
+
+interface ILightweightAppDataSearchCallbacks {
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl
new file mode 100644
index 00000000..206b1a9d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.auth;
+
+parcelable AccountChangeEventsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl
new file mode 100644
index 00000000..832e5859
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.auth;
+
+parcelable AccountChangeEventsResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl
new file mode 100644
index 00000000..82536b93
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.auth.api.credentials;
+
+parcelable Credential;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl
new file mode 100644
index 00000000..d000f32e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.auth.api.credentials;
+
+parcelable CredentialRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl
new file mode 100644
index 00000000..7fa0d4ab
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.auth.api.credentials.internal;
+
+parcelable DeleteRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl
new file mode 100644
index 00000000..814f68da
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.auth.api.credentials.internal;
+
+parcelable GeneratePasswordRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl
new file mode 100644
index 00000000..da248c33
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl
@@ -0,0 +1,10 @@
+package com.google.android.gms.auth.api.credentials.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.auth.api.credentials.Credential;
+
+interface ICredentialsCallbacks {
+ void onStatusAndCredential(in Status status, in Credential credential) = 0;
+ void onStatus(in Status status) = 1;
+ void onStatusAndString(in Status status, String string) = 2;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl
new file mode 100644
index 00000000..89c6c7e2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl
@@ -0,0 +1,15 @@
+package com.google.android.gms.auth.api.credentials.internal;
+
+import com.google.android.gms.auth.api.credentials.CredentialRequest;
+import com.google.android.gms.auth.api.credentials.internal.ICredentialsCallbacks;
+import com.google.android.gms.auth.api.credentials.internal.DeleteRequest;
+import com.google.android.gms.auth.api.credentials.internal.GeneratePasswordRequest;
+import com.google.android.gms.auth.api.credentials.internal.SaveRequest;
+
+interface ICredentialsService {
+ void request(ICredentialsCallbacks callbacks, in CredentialRequest request) = 0;
+ void save(ICredentialsCallbacks callbacks, in SaveRequest request) = 1;
+ void delete(ICredentialsCallbacks callbacks, in DeleteRequest request) = 2;
+ void disableAutoSignIn(ICredentialsCallbacks callbacks) = 3;
+ void generatePassword(ICredentialsCallbacks callbacks, in GeneratePasswordRequest request) = 4;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl
new file mode 100644
index 00000000..b5bcb593
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.auth.api.credentials.internal;
+
+parcelable SaveRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/checkin/internal/ICheckinService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/checkin/internal/ICheckinService.aidl
new file mode 100644
index 00000000..6ac61289
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/checkin/internal/ICheckinService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.checkin.internal;
+
+interface ICheckinService {
+ String getDeviceDataVersionInfo();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl b/play-services-api/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl
new file mode 100644
index 00000000..25041d4d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.clearcut;
+
+parcelable LogEventParcelable;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl
new file mode 100644
index 00000000..58e796ef
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.clearcut.internal;
+
+import com.google.android.gms.common.api.Status;
+
+interface IClearcutLoggerCallbacks {
+ void onStatus(in Status status) = 0;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl
new file mode 100644
index 00000000..b2f1b2fd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.clearcut.internal;
+
+import com.google.android.gms.clearcut.internal.IClearcutLoggerCallbacks;
+import com.google.android.gms.clearcut.LogEventParcelable;
+
+interface IClearcutLoggerService {
+ void log(IClearcutLoggerCallbacks callbacks, in LogEventParcelable event) = 0;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl
new file mode 100644
index 00000000..ae02e068
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.common.internal;
+
+parcelable GoogleCertificatesQuery;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl
new file mode 100644
index 00000000..19839d7d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.common.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface ICertData {
+ IObjectWrapper getWrappedBytes();
+ int remoteHashCode();
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl
new file mode 100644
index 00000000..da539f32
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl
@@ -0,0 +1,12 @@
+package com.google.android.gms.common.internal;
+
+import com.google.android.gms.common.internal.GoogleCertificatesQuery;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IGoogleCertificatesApi {
+ IObjectWrapper getGoogleCertficates();
+ IObjectWrapper getGoogleReleaseCertificates();
+ boolean isGoogleReleaseSigned(String packageName, IObjectWrapper certData);
+ boolean isGoogleSigned(String packageName, IObjectWrapper certData);
+ boolean isGoogleOrPlatformSigned(in GoogleCertificatesQuery query, IObjectWrapper packageManager);
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl
new file mode 100644
index 00000000..843b1e0a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable AddEventListenerRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl
new file mode 100644
index 00000000..ba0f503d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable AddPermissionRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl
new file mode 100644
index 00000000..70c19305
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable AuthorizeAccessRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl
new file mode 100644
index 00000000..30696de0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CancelPendingActionsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl
new file mode 100644
index 00000000..dfd43f74
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ChangeResourceParentsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl
new file mode 100644
index 00000000..05f32cb3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ChangeSequenceNumber;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl
new file mode 100644
index 00000000..b4107a0e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ChangesResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl
new file mode 100644
index 00000000..eb7001c0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CheckResourceIdsExistRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl
new file mode 100644
index 00000000..b513f449
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CloseContentsAndUpdateMetadataRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl
new file mode 100644
index 00000000..43536051
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CloseContentsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl
new file mode 100644
index 00000000..bf226dc0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ContentsResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl
new file mode 100644
index 00000000..7e330658
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ControlProgressRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl
new file mode 100644
index 00000000..7c7452f7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CreateContentsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl
new file mode 100644
index 00000000..300d82c6
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CreateFileIntentSenderRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl
new file mode 100644
index 00000000..be852bc5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CreateFileRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl
new file mode 100644
index 00000000..a1b7c8f2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable CreateFolderRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl
new file mode 100644
index 00000000..c8bbef83
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable DeleteResourceRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl
new file mode 100644
index 00000000..1b85028b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable DeviceUsagePreferenceResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl
new file mode 100644
index 00000000..22cf3ad1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable DisconnectRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl
new file mode 100644
index 00000000..d3ead69d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable DownloadProgressResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl
new file mode 100644
index 00000000..4655cb3f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable DriveIdResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl
new file mode 100644
index 00000000..e14152f2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable DrivePreferencesResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl
new file mode 100644
index 00000000..424c2cac
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable DriveServiceResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl
new file mode 100644
index 00000000..0f748bb9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable EventResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl
new file mode 100644
index 00000000..06b38bd8
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable FetchThumbnailRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl
new file mode 100644
index 00000000..022ffda3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable FetchThumbnailResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl
new file mode 100644
index 00000000..8992b053
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable GetChangesRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl
new file mode 100644
index 00000000..821aefb5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable GetDriveIdFromUniqueIdRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl
new file mode 100644
index 00000000..9d1a31b9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable GetMetadataRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl
new file mode 100644
index 00000000..ae706840
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable GetPermissionsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl
new file mode 100644
index 00000000..845d8325
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable GetPermissionsResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl
new file mode 100644
index 00000000..a1e2e085
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl
@@ -0,0 +1,95 @@
+package com.google.android.gms.drive.internal;
+
+import com.google.android.gms.drive.internal.DriveServiceResponse;
+import com.google.android.gms.drive.internal.IDriveServiceCallbacks;
+import com.google.android.gms.drive.internal.IEventCallback;
+
+import com.google.android.gms.drive.internal.AddEventListenerRequest;
+import com.google.android.gms.drive.internal.AddPermissionRequest;
+import com.google.android.gms.drive.internal.AuthorizeAccessRequest;
+import com.google.android.gms.drive.internal.CancelPendingActionsRequest;
+import com.google.android.gms.drive.internal.ChangeResourceParentsRequest;
+import com.google.android.gms.drive.internal.CheckResourceIdsExistRequest;
+import com.google.android.gms.drive.internal.CloseContentsAndUpdateMetadataRequest;
+import com.google.android.gms.drive.internal.CloseContentsRequest;
+import com.google.android.gms.drive.internal.ControlProgressRequest;
+import com.google.android.gms.drive.internal.CreateContentsRequest;
+import com.google.android.gms.drive.internal.CreateFileRequest;
+import com.google.android.gms.drive.internal.CreateFileIntentSenderRequest;
+import com.google.android.gms.drive.internal.CreateFolderRequest;
+import com.google.android.gms.drive.internal.DeleteResourceRequest;
+import com.google.android.gms.drive.internal.DisconnectRequest;
+import com.google.android.gms.drive.internal.FetchThumbnailRequest;
+import com.google.android.gms.drive.internal.GetChangesRequest;
+import com.google.android.gms.drive.internal.GetDriveIdFromUniqueIdRequest;
+import com.google.android.gms.drive.internal.GetMetadataRequest;
+import com.google.android.gms.drive.internal.GetPermissionsRequest;
+import com.google.android.gms.drive.internal.ListParentsRequest;
+import com.google.android.gms.drive.internal.LoadRealtimeRequest;
+import com.google.android.gms.drive.internal.OpenContentsRequest;
+import com.google.android.gms.drive.internal.OpenFileIntentSenderRequest;
+import com.google.android.gms.drive.internal.RealtimeDocumentSyncRequest;
+import com.google.android.gms.drive.internal.RemoveEventListenerRequest;
+import com.google.android.gms.drive.internal.RemovePermissionRequest;
+import com.google.android.gms.drive.internal.SetDrivePreferencesRequest;
+import com.google.android.gms.drive.internal.SetFileUploadPreferencesRequest;
+import com.google.android.gms.drive.internal.SetResourceParentsRequest;
+import com.google.android.gms.drive.internal.StreamContentsRequest;
+import com.google.android.gms.drive.internal.TrashResourceRequest;
+import com.google.android.gms.drive.internal.UnsubscribeResourceRequest;
+import com.google.android.gms.drive.internal.UntrashResourceRequest;
+import com.google.android.gms.drive.internal.UpdateMetadataRequest;
+import com.google.android.gms.drive.internal.UpdatePermissionRequest;
+
+interface IDriveService {
+ void getMetadata(in GetMetadataRequest request, IDriveServiceCallbacks callbacks) = 0;
+
+ void updateMetadata(in UpdateMetadataRequest request, IDriveServiceCallbacks callbacks) = 2;
+ void createContents(in CreateContentsRequest request, IDriveServiceCallbacks callbacks) = 3;
+ void createFile(in CreateFileRequest request, IDriveServiceCallbacks callbacks) = 4;
+ void createFolder(in CreateFolderRequest request, IDriveServiceCallbacks callbacks) = 5;
+ DriveServiceResponse openContents(in OpenContentsRequest request, IDriveServiceCallbacks callbacks) = 6;
+ void closeContents(in CloseContentsRequest request, IDriveServiceCallbacks callbacks) = 7;
+ void requestSync(IDriveServiceCallbacks callbacks) = 8;
+ IntentSender openFileIntentSender(in OpenFileIntentSenderRequest request) = 9;
+ IntentSender createFileIntentSender(in CreateFileIntentSenderRequest request) = 10;
+ void authorizeAccess(in AuthorizeAccessRequest request, IDriveServiceCallbacks callbacks) = 11;
+ void listParents(in ListParentsRequest request, IDriveServiceCallbacks callbacks) = 12;
+ void addEventListener(in AddEventListenerRequest request, IEventCallback callback, String unused, IDriveServiceCallbacks callbacks) = 13;
+ void removeEventListener(in RemoveEventListenerRequest request, IEventCallback callback, String unused, IDriveServiceCallbacks callbacks) = 14;
+ void disconnect(in DisconnectRequest request) = 15;
+ void trashResource(in TrashResourceRequest request, IDriveServiceCallbacks callbacks) = 16;
+ void closeContentsAndUpdateMetadata(in CloseContentsAndUpdateMetadataRequest request, IDriveServiceCallbacks callbacks) = 17;
+
+ void deleteResource(in DeleteResourceRequest request, IDriveServiceCallbacks callbacks) = 23;
+
+ void loadRealtime(in LoadRealtimeRequest request, IDriveServiceCallbacks callbacks) = 26;
+ void setResourceParents(in SetResourceParentsRequest request, IDriveServiceCallbacks callbacks) = 27;
+ void getDriveIdFromUniqueId(in GetDriveIdFromUniqueIdRequest request, IDriveServiceCallbacks callbacks) = 28;
+ void checkResourceIdsExist(in CheckResourceIdsExistRequest request, IDriveServiceCallbacks callbacks) = 29;
+ void completePendingAction(IDriveServiceCallbacks callbacks) = 30;
+ void getDrivePreferences(IDriveServiceCallbacks callbacks) = 31;
+ void setDrivePreferences(in SetDrivePreferencesRequest request, IDriveServiceCallbacks callbacks) = 32;
+ void realtimeDocumentSync(in RealtimeDocumentSyncRequest request, IDriveServiceCallbacks callbacks) = 33;
+ void getDeviceUsagePreferences(IDriveServiceCallbacks callbacks) = 34;
+ void setFileUploadPreferences(in SetFileUploadPreferencesRequest request, IDriveServiceCallbacks callbacks) = 35;
+ void cancelPendingActions(in CancelPendingActionsRequest request, IDriveServiceCallbacks callbacks) = 36;
+ void untrashResource(in UntrashResourceRequest request, IDriveServiceCallbacks callbacks) = 37;
+
+ void isAutoBackupEnabled(IDriveServiceCallbacks callbacks) = 40;
+ void fetchThumbnail(in FetchThumbnailRequest request, IDriveServiceCallbacks callbacks) = 41;
+
+ void getChanges(in GetChangesRequest request, IDriveServiceCallbacks callbacks) = 43;
+
+ void unsubscribeResource(in UnsubscribeResourceRequest request, IDriveServiceCallbacks callbacks) = 45;
+ void getPermissions(in GetPermissionsRequest request, IDriveServiceCallbacks callbacks) = 46;
+ void addPermission(in AddPermissionRequest request, IDriveServiceCallbacks callbacks) = 47;
+ void updatePermission(in UpdatePermissionRequest request, IDriveServiceCallbacks callbacks) = 48;
+ void removePermission(in RemovePermissionRequest request, IDriveServiceCallbacks callbacks) = 49;
+
+ void removeQueryResultListener(IEventCallback callback, IDriveServiceCallbacks callbacks) = 51;
+ void controlProgress(in ControlProgressRequest request, IDriveServiceCallbacks callbacks) = 52;
+
+ void changeResourceParents(in ChangeResourceParentsRequest request, IDriveServiceCallbacks callbacks) = 54;
+ DriveServiceResponse streamContents(in StreamContentsRequest request, IDriveServiceCallbacks callbacks) = 55;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl
new file mode 100644
index 00000000..6fa1b204
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl
@@ -0,0 +1,48 @@
+package com.google.android.gms.drive.internal;
+
+import com.google.android.gms.drive.internal.IRealtimeService;
+
+import com.google.android.gms.drive.internal.DownloadProgressResponse;
+import com.google.android.gms.drive.internal.ListEntriesResponse;
+import com.google.android.gms.drive.internal.DriveIdResponse;
+import com.google.android.gms.drive.internal.MetadataResponse;
+import com.google.android.gms.drive.internal.ContentsResponse;
+import com.google.android.gms.drive.internal.ListParentsResponse;
+import com.google.android.gms.drive.internal.SyncMoreResponse;
+import com.google.android.gms.drive.internal.LoadRealtimeResponse;
+import com.google.android.gms.drive.internal.ResourceIdSetResponse;
+import com.google.android.gms.drive.internal.DrivePreferencesResponse;
+import com.google.android.gms.drive.internal.DeviceUsagePreferenceResponse;
+import com.google.android.gms.drive.internal.FetchThumbnailResponse;
+import com.google.android.gms.drive.internal.ChangeSequenceNumber;
+import com.google.android.gms.drive.internal.ChangesResponse;
+import com.google.android.gms.drive.internal.GetPermissionsResponse;
+import com.google.android.gms.drive.internal.StringListResponse;
+import com.google.android.gms.drive.internal.StartStreamSession;
+
+import com.google.android.gms.common.api.Status;
+
+interface IDriveServiceCallbacks {
+ void onDownloadProgress(in DownloadProgressResponse response) = 0;
+ void onListEntries(in ListEntriesResponse response) = 1;
+ void onDriveId(in DriveIdResponse response) = 2;
+ void onMetadata(in MetadataResponse response) = 3;
+ void onContents(in ContentsResponse response) = 4;
+ void onStatus(in Status status) = 5;
+ void onSuccess() = 6;
+ void onListParents(in ListParentsResponse response) = 7;
+ void onSyncMore(in SyncMoreResponse response) = 8;
+
+ void onLoadRealtime(in LoadRealtimeResponse response, IRealtimeService realtimeService) = 10;
+ void onResourceIdSet(in ResourceIdSetResponse response) = 11;
+ void onDrivePreferences(in DrivePreferencesResponse response) = 12;
+ void onDeviceUsagePreference(in DeviceUsagePreferenceResponse response) = 13;
+ void onBooleanAnswer(boolean bool) = 14;
+ void onFetchThumbnail(in FetchThumbnailResponse response) = 15;
+ void onChangeSequenceNumber(in ChangeSequenceNumber csn) = 16;
+ void onChanges(in ChangesResponse response) = 17;
+
+ void onGetPermissions(in GetPermissionsResponse response) = 19;
+ void onStringList(in StringListResponse response) = 20;
+ void onStartStreamSession(in StartStreamSession response) = 21;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl
new file mode 100644
index 00000000..e50999f1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.drive.internal;
+
+import com.google.android.gms.drive.internal.EventResponse;
+
+interface IEventCallback {
+ void onEventResponse(in EventResponse response) = 0;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl
new file mode 100644
index 00000000..14d7cf86
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.drive.internal;
+
+interface IRealtimeService {
+ // TODO
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl
new file mode 100644
index 00000000..9a3c5ac9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ListEntriesResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl
new file mode 100644
index 00000000..b2271a98
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ListParentsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl
new file mode 100644
index 00000000..04ebc591
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ListParentsResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl
new file mode 100644
index 00000000..b3b80b5d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable LoadRealtimeRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl
new file mode 100644
index 00000000..3ebc2672
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable LoadRealtimeResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl
new file mode 100644
index 00000000..4bfd6f88
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable MetadataResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl
new file mode 100644
index 00000000..4fc8534f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable OpenContentsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl
new file mode 100644
index 00000000..836ba532
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable OpenFileIntentSenderRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl
new file mode 100644
index 00000000..c922b2da
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable RealtimeDocumentSyncRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl
new file mode 100644
index 00000000..e613b2e2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable RemoveEventListenerRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl
new file mode 100644
index 00000000..5d2838c7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable RemovePermissionRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl
new file mode 100644
index 00000000..64cd51fe
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable ResourceIdSetResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl
new file mode 100644
index 00000000..76702969
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable SetDrivePreferencesRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl
new file mode 100644
index 00000000..0ceffc62
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable SetFileUploadPreferencesRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl
new file mode 100644
index 00000000..43b9c116
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable SetResourceParentsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl
new file mode 100644
index 00000000..538c61e4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable StartStreamSession;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl
new file mode 100644
index 00000000..2f20b495
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable StreamContentsRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl
new file mode 100644
index 00000000..9099c4b6
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable StringListResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl
new file mode 100644
index 00000000..ed495944
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable SyncMoreResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl
new file mode 100644
index 00000000..42480778
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable TrashResourceRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl
new file mode 100644
index 00000000..a7fe04bc
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable UnsubscribeResourceRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl
new file mode 100644
index 00000000..74fe7d32
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable UntrashResourceRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl
new file mode 100644
index 00000000..98f7d547
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable UpdateMetadataRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl
new file mode 100644
index 00000000..a866defd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.drive.internal;
+
+parcelable UpdatePermissionRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl b/play-services-api/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl
new file mode 100644
index 00000000..8cb2be99
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl
@@ -0,0 +1,10 @@
+package com.google.android.gms.dynamite;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IDynamiteLoader {
+ int getModuleVersion(IObjectWrapper context, String moduleId) = 0;
+ int getModuleVersion2(IObjectWrapper context, String moduleId, boolean updateConfigIfRequired) = 2;
+
+ IObjectWrapper createModuleContext(IObjectWrapper context, String moduleId, int minVersion) = 1;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/games/internal/IGamesCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/games/internal/IGamesCallbacks.aidl
new file mode 100644
index 00000000..fa1349db
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/games/internal/IGamesCallbacks.aidl
@@ -0,0 +1,47 @@
+package com.google.android.gms.games.internal;
+
+import com.google.android.gms.common.data.DataHolder;
+import com.google.android.gms.games.multiplayer.realtime.RealTimeMessage;
+
+interface IGamesCallbacks {
+ void onAuthTokenLoaded(int statusCode, String authToken) = 5000;
+ void onAchievementsLoaded(in DataHolder data) = 5001;
+ void onAchievementUpdated(int statusCode, String achievementId) = 5002;
+ void onLeaderboardsLoaded(in DataHolder data) = 5003;
+ void onLeaderboardScoresLoaded(in DataHolder leaderboard, in DataHolder scores) = 5004;
+ void onScoreSubmitted(in DataHolder data) = 5005;
+ void onPlayersLoaded(in DataHolder data) = 5006;
+ void onExtendedPlayersLoaded(in DataHolder data) = 5007;
+ void onGamesLoaded(in DataHolder data) = 5008;
+ void onExtendedGamesLoaded(in DataHolder data) = 5009;
+ void onGameInstancesLoaded(in DataHolder data) = 5010;
+ void onGameplayAclLoaded(in DataHolder data) = 5011;
+ void onGameplayAclUpdated(int statusCode) = 5012;
+ void onFAclLoaded(in DataHolder data) = 5013;
+ void onFAclUpdated(int statusCode) = 5014;
+ void onSignOutComplete() = 5015;
+ void onInvitationsLoaded(in DataHolder data) = 5016;
+ void onRoomCreated(in DataHolder data) = 5017;
+ void onJoinedRoom(in DataHolder data) = 5018;
+ void onLeftRoom(int statusCode, String roomId) = 5019;
+ void onRoomConnecting(in DataHolder data) = 5020;
+ void onRoomAutoMatching(in DataHolder data) = 5021;
+ void onRoomConnected(in DataHolder data) = 5022;
+ void onConnectedToRoom(in DataHolder data) = 5023;
+ void onDisconnectedFromRoom(in DataHolder data) = 5024;
+ void onPeerInvitedToRoom(in DataHolder data, in String[] participantIds) = 5025;
+ void onPeerJoinedRoom(in DataHolder data, in String[] participantIds) = 5026;
+ void onPeerLeftRoom(in DataHolder data, in String[] participantIds) = 5027;
+ void onPeerDeclined(in DataHolder data, in String[] participantIds) = 5028;
+ void onPeerConnected(in DataHolder data, in String[] participantIds) = 5029;
+ void onPeerDisconnected(in DataHolder data, in String[] participantIds) = 5030;
+ void onRealTimeMessageReceived(in RealTimeMessage message) = 5031;
+ void onMessageSent(int statusCode, int messageId, String recipientParticipantId) = 5032;
+ void onGameMuteStatusChanged(int statusCode, String externalGameId, boolean isMuted) = 5033;
+ void onNotifyAclLoaded(in DataHolder data) = 5034;
+ void onNotifyAclUpdated(int statusCode) = 5035;
+ void onInvitationReceived(in DataHolder data) = 5036;
+ void onGameMuteStatusLoaded(in DataHolder data) = 5037;
+ void onContactSettingsLoaded(in DataHolder data) = 5038;
+ void onContactSettingsUpdated(int statusCode) = 5039;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/games/internal/IGamesService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/games/internal/IGamesService.aidl
new file mode 100644
index 00000000..1f8e7b4e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/games/internal/IGamesService.aidl
@@ -0,0 +1,80 @@
+package com.google.android.gms.games.internal;
+
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.IBinder;
+import com.google.android.gms.games.internal.IGamesCallbacks;
+import com.google.android.gms.common.data.DataHolder;
+
+interface IGamesService {
+ void clientDisconnecting(long clientId) = 5000;
+ void signOut(IGamesCallbacks callbacks) = 5001;
+ String getAppId() = 5002;
+ Bundle getConnectionHint() = 5003;
+ void showWelcomePopup(IBinder windowToken, in Bundle extraArgs) = 5004;
+ void cancelPopups() = 5005;
+ String getCurrentAccountName() = 5006;
+ void loadGameplayAclInternal(IGamesCallbacks callbacks, String gameId) = 5007;
+ void updateGameplayAclInternal(IGamesCallbacks callbacks, String gameId, String aclData) = 5008;
+ void loadFAclInternal(IGamesCallbacks callbacks, String gameId) = 5009;
+ void updateFAclInternal(IGamesCallbacks callbacks, String gameId, boolean allCirclesVisible, in long[] circleIds) = 5010;
+ String getCurrentPlayerId() = 5011;
+ DataHolder getCurrentPlayer() = 5012;
+ void loadPlayer(IGamesCallbacks callbacks, String playerId) = 5013;
+ void loadInvitablePlayers(IGamesCallbacks callbacks, int pageSize, boolean expandCachedData, boolean forceReload) = 5014;
+ void submitScore(IGamesCallbacks callbacks, String leaderboardId, long score) = 5015;
+ void loadLeaderboards(IGamesCallbacks callbacks) = 5016;
+ void loadLeaderboard(IGamesCallbacks callbacks, String leaderboardId) = 5017;
+ void loadTopScores(IGamesCallbacks callbacks, String leaderboardId, int span, int leaderboardCollection, int maxResults, boolean forceReload) = 5018;
+ void loadPlayerCenteredScores(IGamesCallbacks callbacks, String leaderboardId, int span, int leaderboardCollection, int maxResults, boolean forceReload) = 5019;
+ void loadMoreScores(IGamesCallbacks callbacks, in Bundle previousheader, int maxResults, int pageDirection) = 5020;
+ void loadAchievements(IGamesCallbacks callbacks) = 5021;
+ void revealAchievement(IGamesCallbacks callbacks, String achievementId, IBinder windowToken, in Bundle extraArgs) = 5022;
+ void unlockAchievement(IGamesCallbacks callbacks, String achievementId, IBinder windowToken, in Bundle extraArgs) = 5023;
+ void incrementAchievement(IGamesCallbacks callbacks, String achievementId, int numSteps, IBinder windowToken, in Bundle extraArgs) = 5024;
+ void loadGame(IGamesCallbacks callbacks) = 5025;
+ void loadInvitations(IGamesCallbacks callbacks) = 5026;
+ void declineInvitation(String invitationId, int invitationType) = 5027;
+ void dismissInvitation(String invitationId, int invitationType) = 5028;
+ void createRoom(IGamesCallbacks callbacks, IBinder processBinder, int variant, in String[] invitedPlayerIds, in Bundle autoMatchCriteria, boolean enableSockets, long clientId) = 5029;
+ void joinRoom(IGamesCallbacks callbacks, IBinder processBinder, String matchId, boolean enableSockets, long clientId) = 5030;
+ void leaveRoom(IGamesCallbacks callbacks, String matchId) = 5031;
+ int sendReliableMessage(IGamesCallbacks callbacks, in byte[] messageData, String matchId, String recipientParticipantId) = 5032;
+ int sendUnreliableMessage(in byte[] messageData, String matchId, in String[] recipientParticipantIds) = 5033;
+ String createSocketConnection(String participantId) = 5034;
+ void clearNotifications(int notificationTypes) = 5035;
+ void loadLeaderboardsFirstParty(IGamesCallbacks callbacks, String gameId) = 5036;
+ void loadLeaderboardFirstParty(IGamesCallbacks callbacks, String gameId, String leaderboardId) = 5037;
+ void loadTopScoresFirstParty(IGamesCallbacks callbacks, String gameId, String leaderboardId, int span, int leaderboardCollection, int maxResults, boolean forceReload) = 5038;
+ void loadPlayerCenteredScoresFirstParty(IGamesCallbacks callbacks, String gameId, String leaderboardId, int span, int leaderboardCollection, int maxResults, boolean forceReload) = 5039;
+ void loadAchievementsFirstParty(IGamesCallbacks callbacks, String playerId, String gameId) = 5040;
+ void loadGameFirstParty(IGamesCallbacks callbacks, String gameId) = 5041;
+ void loadGameInstancesFirstParty(IGamesCallbacks callbacks, String gameId) = 5042;
+ void loadGameCollectionFirstParty(IGamesCallbacks callbacks, int pageSize, int collectionType, boolean expandCachedData, boolean forceReload) = 5043;
+ void loadRecentlyPlayedGamesFirstParty(IGamesCallbacks callbacks, String externalPlayerId, int pageSize, boolean expandCachedData, boolean forceReload) = 5044;
+ void loadInvitablePlayersFirstParty(IGamesCallbacks callbacks, int pageSize, boolean expandCachedData, boolean forceReload) = 5045;
+ void loadRecentPlayersFirstParty(IGamesCallbacks callbacks) = 5046;
+ void loadCircledPlayersFirstParty(IGamesCallbacks callbacks, int pageSize, boolean expandCachedData, boolean forceReload) = 5047;
+ void loadSuggestedPlayersFirstParty(IGamesCallbacks callbacks) = 5048;
+ void dismissPlayerSuggestionFirstParty(String playerIdToDismiss) = 5049;
+ void declineInvitationFirstParty(String gameId, String invitationId, int invitationType) = 5050;
+ void loadInvitationsFirstParty(IGamesCallbacks callbacks, String gameId) = 5051;
+ int registerWaitingRoomListenerRestricted(IGamesCallbacks callbacks, String roomId) = 5052;
+ void setGameMuteStatusInternal(IGamesCallbacks callbacks, String gameId, boolean muted) = 5053;
+ void clearNotificationsFirstParty(String gameId, int notificationTypes) = 5054;
+ void loadNotifyAclInternal(IGamesCallbacks callbacks) = 5055;
+ void updateNotifyAclInternal(IGamesCallbacks callbacks, String aclData) = 5056;
+ void registerInvitationListener(IGamesCallbacks callbacks, long clientId) = 5057;
+ void unregisterInvitationListener(long clientId) = 5058;
+ int unregisterWaitingRoomListenerRestricted(String roomId) = 5059;
+ void isGameMutedInternal(IGamesCallbacks callbacks, String gameId) = 5060;
+ void loadContactSettingsInternal(IGamesCallbacks callbacks) = 5061;
+ void updateContactSettingsInternal(IGamesCallbacks callbacks, boolean enableMobileNotifications) = 5062;
+ String getSelectedAccountForGameFirstParty(String gamePackageName) = 5063;
+ void updateSelectedAccountForGameFirstParty(String gamePackageName, String accountName) = 5064;
+ Uri getGamesContentUriRestricted(String gameId) = 5065;
+ boolean shouldUseNewPlayerNotificationsFirstParty() = 5066;
+ void setUseNewPlayerNotificationsFirstParty(boolean newPlayerStyle) = 5067;
+ void searchForPlayersFirstParty(IGamesCallbacks callbacks, String query, int pageSize, boolean expandCachedData, boolean forceReload) = 5500;
+ DataHolder getCurrentGame() = 5501;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.aidl b/play-services-api/src/main/aidl/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.aidl
new file mode 100644
index 00000000..ae48b227
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.games.multiplayer.realtime;
+
+parcelable RealTimeMessage;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/http/IGoogleHttpService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/http/IGoogleHttpService.aidl
new file mode 100644
index 00000000..58ea0ba5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/http/IGoogleHttpService.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.http;
+
+import android.os.Bundle;
+
+interface IGoogleHttpService {
+ Bundle checkUrl(String url);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl
new file mode 100644
index 00000000..39b0a53f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.location.places.internal;
+
+interface IGooglePlaceDetectionService {
+
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl
new file mode 100644
index 00000000..854e921e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.location.places.internal;
+
+interface IGooglePlacesService {
+
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl
new file mode 100644
index 00000000..e2cf4afd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps;
+
+parcelable GoogleMapOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl
new file mode 100644
index 00000000..a8ea7626
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl
@@ -0,0 +1,20 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.maps.model.CameraPosition;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.LatLngBounds;
+
+interface ICameraUpdateFactoryDelegate {
+ IObjectWrapper zoomIn();
+ IObjectWrapper zoomOut();
+ IObjectWrapper scrollBy(float x, float y);
+ IObjectWrapper zoomTo(float zoom);
+ IObjectWrapper zoomBy(float zoomDelta);
+ IObjectWrapper zoomByWithFocus(float zoomDelta, int x, int y);
+ IObjectWrapper newCameraPosition(in CameraPosition cameraPosition);
+ IObjectWrapper newLatLng(in LatLng latLng);
+ IObjectWrapper newLatLngZoom(in LatLng latLng, float zoom);
+ IObjectWrapper newLatLngBounds(in LatLngBounds bounds, int padding);
+ IObjectWrapper newLatLngBoundsWithSize(in LatLngBounds bounds, int width, int height, int padding);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl
new file mode 100644
index 00000000..0cc5938f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl
@@ -0,0 +1,6 @@
+package com.google.android.gms.maps.internal;
+
+interface ICancelableCallback {
+ void onFinish();
+ void onCancel();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl
new file mode 100644
index 00000000..f10ab345
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl
@@ -0,0 +1,17 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.maps.GoogleMapOptions;
+import com.google.android.gms.maps.internal.IMapFragmentDelegate;
+import com.google.android.gms.maps.internal.IMapViewDelegate;
+import com.google.android.gms.maps.internal.ICameraUpdateFactoryDelegate;
+import com.google.android.gms.maps.model.internal.IBitmapDescriptorFactoryDelegate;
+
+interface ICreator {
+ void init(IObjectWrapper resources);
+ IMapFragmentDelegate newMapFragmentDelegate(IObjectWrapper activity);
+ IMapViewDelegate newMapViewDelegate(IObjectWrapper context, in GoogleMapOptions options);
+ ICameraUpdateFactoryDelegate newCameraUpdateFactoryDelegate();
+ IBitmapDescriptorFactoryDelegate newBitmapDescriptorFactoryDelegate();
+ void initV2(IObjectWrapper resources, int flags);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl
new file mode 100644
index 00000000..b8866644
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl
@@ -0,0 +1,143 @@
+package com.google.android.gms.maps.internal;
+
+import android.location.Location;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.maps.model.CameraPosition;
+import com.google.android.gms.maps.internal.ICancelableCallback;
+import com.google.android.gms.maps.internal.ILocationSourceDelegate;
+import com.google.android.gms.maps.internal.IUiSettingsDelegate;
+import com.google.android.gms.maps.internal.IProjectionDelegate;
+import com.google.android.gms.maps.internal.IOnCameraChangeListener;
+import com.google.android.gms.maps.internal.IOnCameraIdleListener;
+import com.google.android.gms.maps.internal.IOnCameraMoveCanceledListener;
+import com.google.android.gms.maps.internal.IOnCameraMoveListener;
+import com.google.android.gms.maps.internal.IOnCameraMoveStartedListener;
+import com.google.android.gms.maps.internal.IOnMapClickListener;
+import com.google.android.gms.maps.internal.IOnMapLongClickListener;
+import com.google.android.gms.maps.internal.IOnMarkerClickListener;
+import com.google.android.gms.maps.internal.IOnMarkerDragListener;
+import com.google.android.gms.maps.internal.IOnInfoWindowClickListener;
+import com.google.android.gms.maps.internal.IInfoWindowAdapter;
+import com.google.android.gms.maps.internal.IOnMapLoadedCallback;
+import com.google.android.gms.maps.internal.IOnMyLocationChangeListener;
+import com.google.android.gms.maps.internal.IOnMyLocationButtonClickListener;
+import com.google.android.gms.maps.internal.ISnapshotReadyCallback;
+import com.google.android.gms.maps.model.CircleOptions;
+import com.google.android.gms.maps.model.GroundOverlayOptions;
+import com.google.android.gms.maps.model.LatLngBounds;
+import com.google.android.gms.maps.model.MarkerOptions;
+import com.google.android.gms.maps.model.PolygonOptions;
+import com.google.android.gms.maps.model.PolylineOptions;
+import com.google.android.gms.maps.model.TileOverlayOptions;
+import com.google.android.gms.maps.model.internal.IPolylineDelegate;
+import com.google.android.gms.maps.model.internal.IPolygonDelegate;
+import com.google.android.gms.maps.model.internal.IMarkerDelegate;
+import com.google.android.gms.maps.model.internal.ICircleDelegate;
+import com.google.android.gms.maps.model.internal.IGroundOverlayDelegate;
+import com.google.android.gms.maps.model.internal.ITileOverlayDelegate;
+
+interface IGoogleMapDelegate {
+ CameraPosition getCameraPosition() = 0;
+
+ float getMaxZoomLevel() = 1;
+ float getMinZoomLevel() = 2;
+
+ void moveCamera(IObjectWrapper cameraUpdate) = 3;
+ void animateCamera(IObjectWrapper cameraUpdate) = 4;
+ void animateCameraWithCallback(IObjectWrapper cameraUpdate, ICancelableCallback callback) = 5;
+ void animateCameraWithDurationAndCallback(IObjectWrapper cameraUpdate, int duration, ICancelableCallback callback) = 6;
+ void stopAnimation() = 7;
+
+ IPolylineDelegate addPolyline(in PolylineOptions options) = 8;
+ IPolygonDelegate addPolygon(in PolygonOptions options) = 9;
+ IMarkerDelegate addMarker(in MarkerOptions options) = 10;
+ IGroundOverlayDelegate addGroundOverlay(in GroundOverlayOptions options) = 11;
+ ITileOverlayDelegate addTileOverlay(in TileOverlayOptions options) = 12;
+
+ void clear() = 13;
+
+ int getMapType() = 14;
+ void setMapType(int type) = 15;
+ boolean isTrafficEnabled() = 16;
+ void setTrafficEnabled(boolean traffic) = 17;
+ boolean isIndoorEnabled() = 18;
+ void setIndoorEnabled(boolean indoor) = 19;
+
+ boolean isMyLocationEnabled() = 20;
+ void setMyLocationEnabled(boolean myLocation) = 21;
+ Location getMyLocation() = 22;
+ void setLocationSource(ILocationSourceDelegate locationSource) = 23;
+
+ IUiSettingsDelegate getUiSettings() = 24;
+ IProjectionDelegate getProjection() = 25;
+
+ void setOnCameraChangeListener(IOnCameraChangeListener listener) = 26;
+ void setOnMapClickListener(IOnMapClickListener listener) = 27;
+ void setOnMapLongClickListener(IOnMapLongClickListener listener) = 28;
+ void setOnMarkerClickListener(IOnMarkerClickListener listener) = 29;
+ void setOnMarkerDragListener(IOnMarkerDragListener listener) = 30;
+ void setOnInfoWindowClickListener(IOnInfoWindowClickListener listener) = 31;
+ void setInfoWindowAdapter(IInfoWindowAdapter adapter) = 32;
+
+ IObjectWrapper getTestingHelper() = 33;
+
+ ICircleDelegate addCircle(in CircleOptions options) = 34;
+
+ void setOnMyLocationChangeListener(IOnMyLocationChangeListener listener) = 35;
+ void setOnMyLocationButtonClickListener(IOnMyLocationButtonClickListener listener) = 36;
+
+ void snapshot(ISnapshotReadyCallback callback, IObjectWrapper bitmap) = 37;
+
+ void setPadding(int left, int top, int right, int bottom) = 38;
+
+ boolean isBuildingsEnabled() = 39;
+ void setBuildingsEnabled(boolean buildings) = 40;
+
+ void setOnMapLoadedCallback(IOnMapLoadedCallback callback) = 41;
+
+ //IIndoorBuildingDelegate getFocusedBuilding() = 43;
+ //void setIndoorStateChangeListener(IOnIndoorStateChangeListener listener) = 44;
+
+ void setWatermarkEnabled(boolean watermark) = 50;
+
+ //void getMapAsync(IOnMapReadyCallback callback) = 52;
+ void onCreate(in Bundle savedInstanceState) = 53;
+ void onResume() = 54;
+ void onPause() = 55;
+ void onDestroy() = 56;
+ void onLowMemory() = 57;
+ boolean useViewLifecycleWhenInFragment() = 58;
+ void onSaveInstanceState(out Bundle outState) = 59;
+
+ void setContentDescription(String desc) = 60;
+
+ //void snapshotForTest(ISnapshotReadyCallback callback) = 70;
+
+ //void setPoiClickListener(IOnPoiClickListener listener) = 79;
+ void onEnterAmbient(in Bundle bundle) = 80;
+ void onExitAmbient() = 81;
+
+ //void setOnGroundOverlayClickListener(IOnGroundOverlayClickListener listener) = 82;
+ //void setInfoWindowLongClickListener(IOnInfoWindowLongClickListener listener) = 83;
+ //void setPolygonClickListener(IOnPolygonClickListener listener) = 84;
+ //void setInfoWindowCloseListener(IOnInfoWindowCloseListener listener) = 85;
+ //void setPolylineClickListener(IOnPolylineClickListener listener) = 86;
+ //void setCircleClickListener(IOnCircleClickListener listener) = 88;
+
+ //boolean setMapStyle(in MapStyleOptions options) = 90;
+ void setMinZoomPreference(float minZoom) = 91;
+ void setMaxZoomPreference(float maxZoom) = 92;
+ void resetMinMaxZoomPreference() = 93;
+ void setLatLngBoundsForCameraTarget(in LatLngBounds bounds) = 94;
+
+ void setCameraMoveStartedListener(IOnCameraMoveStartedListener listener) = 95;
+ void setCameraMoveListener(IOnCameraMoveListener listener) = 96;
+ void setCameraMoveCanceledListener(IOnCameraMoveCanceledListener listener) = 97;
+ void setCameraIdleListener(IOnCameraIdleListener listener) = 98;
+
+ void onStart() = 100;
+ void onStop() = 101;
+
+ //void setOnMyLocationClickListener(IOnMyLocationClickListener listener) = 106;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl
new file mode 100644
index 00000000..d11d71d4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.maps.model.internal.IMarkerDelegate;
+
+interface IInfoWindowAdapter {
+ IObjectWrapper getInfoWindow(IMarkerDelegate marker);
+ IObjectWrapper getInfoContents(IMarkerDelegate marker);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl
new file mode 100644
index 00000000..203ec69f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.maps.internal;
+
+interface ILocationSourceDelegate {
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl
new file mode 100644
index 00000000..c08c987b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl
@@ -0,0 +1,27 @@
+package com.google.android.gms.maps.internal;
+
+import android.os.Bundle;
+
+import com.google.android.gms.maps.internal.IGoogleMapDelegate;
+import com.google.android.gms.maps.internal.IOnMapReadyCallback;
+import com.google.android.gms.maps.GoogleMapOptions;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IMapFragmentDelegate {
+ IGoogleMapDelegate getMap();
+ void onInflate(IObjectWrapper activity, in GoogleMapOptions options, in Bundle savedInstanceState);
+ void onCreate(in Bundle savedInstanceState);
+ IObjectWrapper onCreateView(IObjectWrapper layoutInflater, IObjectWrapper container, in Bundle savedInstanceState);
+ void onResume();
+ void onPause();
+ void onDestroyView();
+ void onDestroy();
+ void onLowMemory();
+ void onSaveInstanceState(inout Bundle outState);
+ boolean isReady();
+ void getMapAsync(IOnMapReadyCallback callback);
+ void onEnterAmbient(in Bundle bundle);
+ void onExitAmbient();
+ void onStart();
+ void onStop();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl
new file mode 100644
index 00000000..d22db6c6
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl
@@ -0,0 +1,23 @@
+package com.google.android.gms.maps.internal;
+
+import android.os.Bundle;
+
+import com.google.android.gms.maps.internal.IGoogleMapDelegate;
+import com.google.android.gms.maps.internal.IOnMapReadyCallback;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IMapViewDelegate {
+ IGoogleMapDelegate getMap();
+ void onCreate(in Bundle savedInstanceState);
+ void onResume();
+ void onPause();
+ void onDestroy();
+ void onLowMemory();
+ void onSaveInstanceState(inout Bundle outState);
+ IObjectWrapper getView();
+ void getMapAsync(IOnMapReadyCallback callback);
+ void onEnterAmbient(in Bundle bundle);
+ void onExitAmbient();
+ void onStart();
+ void onStop();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl
new file mode 100644
index 00000000..8abd2929
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.maps.model.CameraPosition;
+
+interface IOnCameraChangeListener {
+ void onCameraChange(in CameraPosition update);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl
new file mode 100644
index 00000000..caa686a8
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.maps.internal;
+
+interface IOnCameraIdleListener {
+ void onCameraIdle();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl
new file mode 100644
index 00000000..bb1494e8
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.maps.internal;
+
+interface IOnCameraMoveCanceledListener {
+ void onCameraMoveCanceled();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl
new file mode 100644
index 00000000..6b404d65
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.maps.internal;
+
+interface IOnCameraMoveListener {
+ void onCameraMove();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl
new file mode 100644
index 00000000..2a5f65d9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.maps.internal;
+
+interface IOnCameraMoveStartedListener {
+ void onCameraMoveStarted(int i);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl
new file mode 100644
index 00000000..7c396ce7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.maps.model.internal.IMarkerDelegate;
+
+interface IOnInfoWindowClickListener {
+ void onInfoWindowClick(IMarkerDelegate marker);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl
new file mode 100644
index 00000000..6b3b2ec8
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.maps.model.LatLng;
+
+interface IOnMapClickListener {
+ void onMapClick(in LatLng latLng);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl
new file mode 100644
index 00000000..d3fc105d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.maps.internal;
+
+interface IOnMapLoadedCallback {
+ void onMapLoaded();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl
new file mode 100644
index 00000000..11201b2c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.maps.model.LatLng;
+
+interface IOnMapLongClickListener {
+ void onMapLongClick(in LatLng latLng);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl
new file mode 100644
index 00000000..1e6760ef
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.maps.internal.IGoogleMapDelegate;
+
+interface IOnMapReadyCallback {
+ void onMapReady(IGoogleMapDelegate map);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl
new file mode 100644
index 00000000..94c4465d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.maps.model.internal.IMarkerDelegate;
+
+interface IOnMarkerClickListener {
+ boolean onMarkerClick(IMarkerDelegate marker);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl
new file mode 100644
index 00000000..b4601a7a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.maps.model.internal.IMarkerDelegate;
+
+interface IOnMarkerDragListener {
+ void onMarkerDragStart(IMarkerDelegate marker) = 0;
+ void onMarkerDrag(IMarkerDelegate marker) = 1;
+ void onMarkerDragEnd(IMarkerDelegate marker) = 2;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl
new file mode 100644
index 00000000..b10880dd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.maps.internal;
+
+interface IOnMyLocationButtonClickListener {
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl
new file mode 100644
index 00000000..35a6b6c2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IOnMyLocationChangeListener {
+ void onMyLocationChanged(IObjectWrapper location);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl
new file mode 100644
index 00000000..9b2da90b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl
@@ -0,0 +1,11 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.VisibleRegion;
+
+interface IProjectionDelegate {
+ LatLng fromScreenLocation(IObjectWrapper obj);
+ IObjectWrapper toScreenLocation(in LatLng latLng);
+ VisibleRegion getVisibleRegion();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl
new file mode 100644
index 00000000..f907e336
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.maps.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import android.graphics.Bitmap;
+
+interface ISnapshotReadyCallback {
+ void onBitmapReady(in Bitmap bitmap);
+ void onBitmapWrappedReady(IObjectWrapper wrapper);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl
new file mode 100644
index 00000000..12c78123
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl
@@ -0,0 +1,25 @@
+package com.google.android.gms.maps.internal;
+
+interface IUiSettingsDelegate {
+ void setZoomControlsEnabled(boolean zoom);
+ void setCompassEnabled(boolean compass);
+ void setMyLocationButtonEnabled(boolean locationButton);
+ void setScrollGesturesEnabled(boolean scrollGestures);
+ void setZoomGesturesEnabled(boolean zoomGestures);
+ void setTiltGesturesEnabled(boolean tiltGestures);
+ void setRotateGesturesEnabled(boolean rotateGestures);
+ void setAllGesturesEnabled(boolean gestures);
+ boolean isZoomControlsEnabled();
+ boolean isCompassEnabled();
+ boolean isMyLocationButtonEnabled();
+ boolean isScrollGesturesEnabled();
+ boolean isZoomGesturesEnabled();
+ boolean isTiltGesturesEnabled();
+ boolean isRotateGesturesEnabled();
+ void setIndoorLevelPickerEnabled(boolean indoorLevelPicker);
+ boolean isIndoorLevelPickerEnabled();
+ void setMapToolbarEnabled(boolean mapToolbar);
+ boolean isMapToolbarEnabled();
+ void setScrollGesturesEnabledDuringRotateOrZoom(boolean scrollDuringZoom);
+ boolean isScrollGesturesEnabledDuringRotateOrZoom();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl
new file mode 100644
index 00000000..bb5ab701
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable CameraPosition;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl
new file mode 100644
index 00000000..33ae4542
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable CircleOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl
new file mode 100644
index 00000000..5bdbefaf
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable GroundOverlayOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl
new file mode 100644
index 00000000..dc4abbcf
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable MarkerOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl
new file mode 100644
index 00000000..adac82a0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable PolygonOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl
new file mode 100644
index 00000000..7c165891
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable PolylineOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl
new file mode 100644
index 00000000..54f1872f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable Tile;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl
new file mode 100644
index 00000000..85f5ac32
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable TileOverlayOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl
new file mode 100644
index 00000000..09d22101
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable VisibleRegion;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl
new file mode 100644
index 00000000..dca49b60
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl
@@ -0,0 +1,14 @@
+package com.google.android.gms.maps.model.internal;
+
+import android.graphics.Bitmap;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IBitmapDescriptorFactoryDelegate {
+ IObjectWrapper fromResource(int resourceId);
+ IObjectWrapper fromAsset(String assetName);
+ IObjectWrapper fromFile(String fileName);
+ IObjectWrapper defaultMarker();
+ IObjectWrapper defaultMarkerWithHue(float hue);
+ IObjectWrapper fromBitmap(in Bitmap bitmap);
+ IObjectWrapper fromPath(String absolutePath);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl
new file mode 100644
index 00000000..719d8eab
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl
@@ -0,0 +1,24 @@
+package com.google.android.gms.maps.model.internal;
+
+import com.google.android.gms.maps.model.LatLng;
+
+interface ICircleDelegate {
+ void remove();
+ String getId();
+ void setCenter(in LatLng center);
+ LatLng getCenter();
+ void setRadius(double radius);
+ double getRadius();
+ void setStrokeWidth(float width);
+ float getStrokeWidth();
+ void setStrokeColor(int color);
+ int getStrokeColor();
+ void setFillColor(int color);
+ int getFillColor();
+ void setZIndex(float zIndex);
+ float getZIndex();
+ void setVisible(boolean visible);
+ boolean isVisible();
+ boolean equalsRemote(ICircleDelegate other);
+ int hashCodeRemote();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl
new file mode 100644
index 00000000..0a1a0632
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl
@@ -0,0 +1,29 @@
+package com.google.android.gms.maps.model.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.LatLngBounds;
+
+interface IGroundOverlayDelegate {
+ void remove();
+ String getId();
+ void setPosition(in LatLng pos);
+ LatLng getPosition();
+ void setDimension(float dimension);
+ void setDimensions(float width, float height);
+ float getWidth();
+ float getHeight();
+ void setPositionFromBounds(in LatLngBounds bounds);
+ LatLngBounds getBounds();
+ void setBearing(float bearing);
+ float getBearing();
+ void setZIndex(float zIndex);
+ float getZIndex();
+ void setVisible(boolean visible);
+ boolean isVisible();
+ void setTransparency(float transparency);
+ float getTransparency();
+ boolean equalsRemote(IGroundOverlayDelegate other);
+ int hashCodeRemote();
+ void todo(IObjectWrapper obj);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl
new file mode 100644
index 00000000..ca2d2603
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl
@@ -0,0 +1,37 @@
+package com.google.android.gms.maps.model.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.maps.model.LatLng;
+
+interface IMarkerDelegate {
+ void remove();
+ String getId();
+ void setPosition(in LatLng pos);
+ LatLng getPosition();
+ void setTitle(String title);
+ String getTitle();
+ void setSnippet(String snippet);
+ String getSnippet();
+ void setDraggable(boolean drag);
+ boolean isDraggable();
+ void showInfoWindow();
+ void hideInfoWindow();
+ boolean isInfoWindowShown();
+ void setVisible(boolean visible);
+ boolean isVisible();
+ boolean equalsRemote(IMarkerDelegate other);
+ int hashCodeRemote();
+ void setIcon(IObjectWrapper obj);
+ void setAnchor(float x, float y);
+ void setFlat(boolean flat);
+ boolean isFlat();
+ void setRotation(float rotation);
+ float getRotation();
+ void setInfoWindowAnchor(float x, float y);
+ void setAlpha(float alpha);
+ float getAlpha();
+ void setZIndex(float zIndex);
+ float getZIndex();
+ void setTag(IObjectWrapper obj);
+ IObjectWrapper getTag();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl
new file mode 100644
index 00000000..67f0517b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl
@@ -0,0 +1,27 @@
+package com.google.android.gms.maps.model.internal;
+
+import com.google.android.gms.maps.model.LatLng;
+
+interface IPolygonDelegate {
+ void remove();
+ String getId();
+ void setPoints(in List points);
+ List getPoints();
+ void setHoles(in List holes);
+ List getHoles();
+ void setStrokeWidth(float width);
+ float getStrokeWidth();
+ void setStrokeColor(int color);
+ int getStrokeColor();
+ void setFillColor(int color);
+ int getFillColor();
+ void setZIndex(float zIndex);
+ float getZIndex();
+ void setVisible(boolean visible);
+ boolean isVisible();
+ void setGeodesic(boolean geod);
+ boolean isGeodesic();
+ boolean equalsRemote(IPolygonDelegate other);
+ int hashCodeRemote();
+
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl
new file mode 100644
index 00000000..ebbb336b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl
@@ -0,0 +1,22 @@
+package com.google.android.gms.maps.model.internal;
+
+import com.google.android.gms.maps.model.LatLng;
+
+interface IPolylineDelegate {
+ void remove();
+ String getId();
+ void setPoints(in List points);
+ List getPoints();
+ void setWidth(float width);
+ float getWidth();
+ void setColor(int color);
+ int getColor();
+ void setZIndex(float zIndex);
+ float getZIndex();
+ void setVisible(boolean visible);
+ boolean isVisible();
+ void setGeodesic(boolean geod);
+ boolean isGeodesic();
+ boolean equalsRemote(IPolylineDelegate other);
+ int hashCodeRemote();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl
new file mode 100644
index 00000000..417cb024
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.maps.model.internal;
+
+interface ITileOverlayDelegate {
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl
new file mode 100644
index 00000000..d6dc516b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.maps.model.internal;
+
+import com.google.android.gms.maps.model.Tile;
+
+interface ITileProviderDelegate {
+ Tile getTile(int x, int y, int zoom);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/IMeasurementService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/IMeasurementService.aidl
new file mode 100644
index 00000000..692d414a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/IMeasurementService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.measurement.internal;
+
+interface IMeasurementService {
+
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleCallbacks.aidl
new file mode 100644
index 00000000..75db9fae
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleCallbacks.aidl
@@ -0,0 +1,12 @@
+package com.google.android.gms.people.internal;
+
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+
+import com.google.android.gms.common.data.DataHolder;
+
+interface IPeopleCallbacks {
+ void onDataHolder(int code, in Bundle resolution, in DataHolder holder) = 1;
+ void onDataHolders(int code, in Bundle resolution, in DataHolder[] holders) = 3;
+ void onParcelFileDescriptor(int code, in Bundle resolution, in ParcelFileDescriptor fileDescriptor, in Bundle extras) = 4;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleService.aidl
new file mode 100644
index 00000000..62ae1478
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleService.aidl
@@ -0,0 +1,44 @@
+package com.google.android.gms.people.internal;
+
+import android.os.Bundle;
+
+import com.google.android.gms.people.internal.IPeopleCallbacks;
+import com.google.android.gms.common.server.FavaDiagnosticsEntity;
+import com.google.android.gms.common.internal.ICancelToken;
+
+interface IPeopleService {
+ // void loadOwners1(IPeopleCallbacks var1, boolean var2, boolean var3, String var4, String var5);
+ // void loadCirclesOld(IPeopleCallbacks var1, String var2, String var3, String var4, int var5, String var6);
+ // void loadPeopleOld(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, int var6, boolean var7, long var8);
+ // void loadAvatarLegacy(IPeopleCallbacks var1, String var2, int var3, int var4);
+ // void loadContactImageLegacy(IPeopleCallbacks var1, long var2, boolean var4);
+ // void blockPerson(IPeopleCallbacks var1, String var2, String var3, String var4, boolean var5);
+ // Bundle syncRawContact(in Uri var1);
+ // void loadPeopleForAggregation8(IPeopleCallbacks var1, String var2, String var3, String var4, boolean var5, int var6);
+ // void setSyncToContactsSettings(IPeopleCallbacks var1, String var2, boolean var3, in String[] var4);
+
+ // Bundle startSync(String var1, String var2);
+ // void requestSync(IPeopleCallbacks var1, String var2, String var3, in Uri var4);
+ // void updatePersonCirclesOld(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, in List var6);
+ // boolean isSyncToContactsEnabled();
+ // Bundle requestSyncOld(String var1, String var2);
+ // void setAvatar(IPeopleCallbacks var1, String var2, String var3, in Uri var4, boolean var5);
+ // void loadCircles(IPeopleCallbacks var1, String var2, String var3, String var4, int var5, String var6, boolean var7);
+ // Bundle requestSyncOld19(String var1, String var2, long var3);
+ // void loadPeople20(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, int var6, boolean var7, long var8, String var10, int var11);
+ // void loadPeopleLive(IPeopleCallbacks var1, String var2, String var3, String var4, int var5, String var6);
+ // void updatePersonCircles(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, in List var6, in FavaDiagnosticsEntity var7);
+ // void loadRemoteImageLegacy(IPeopleCallbacks var1, String var2);
+ // void loadContactsGaiaIds24(IPeopleCallbacks var1, String var2, String var3);
+ // Bundle requestSyncOld25(String var1, String var2, long var3, boolean var5);
+ // void addCircle(IPeopleCallbacks var1, String var2, String var3, String var4, String var5);
+ // void addPeopleToCircle(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5);
+
+ Bundle registerDataChangedListener(IPeopleCallbacks callbacks, boolean register, String var3, String var4, int scopes) = 10;
+ void loadCircles(IPeopleCallbacks callbacks, String account, String pageGaiaId, String circleId, int type, String var6, boolean var7) = 18;
+ Bundle requestSync(String account, String var2, long var3, boolean var5, boolean var6) = 204;
+ void loadOwners(IPeopleCallbacks callbacks, boolean var2, boolean var3, String account, String var5, int sortOrder) = 304;
+ void loadPeopleForAggregation(IPeopleCallbacks callbacks, String account, String var3, String filter, int var5, boolean var6, int var7, int var8, String var9, boolean var10, int var11, int var12) = 401;
+ ICancelToken loadOwnerAvatar(IPeopleCallbacks callbacks, String account, String pageId, int size, int flags) = 504;
+ ICancelToken loadAutocompleteList(IPeopleCallbacks callbacks, String account, String pageId, boolean directorySearch, String var5, String query, int autocompleteType, int var8, int numberOfResults, boolean var10) = 506;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl
new file mode 100644
index 00000000..86169b99
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.playlog.internal;
+
+import com.google.android.gms.playlog.internal.LogEvent;
+import com.google.android.gms.playlog.internal.PlayLoggerContext;
+
+interface IPlayLogService {
+ void onEvent(String packageName, in PlayLoggerContext context, in LogEvent event) = 1;
+ void onMultiEvent(String packageName, in PlayLoggerContext context, in List events) = 2;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl b/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl
new file mode 100644
index 00000000..6e7bed53
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.playlog.internal;
+
+parcelable LogEvent;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/PlayLoggerContext.aidl b/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/PlayLoggerContext.aidl
new file mode 100644
index 00000000..9cc0e0e4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/PlayLoggerContext.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.playlog.internal;
+
+parcelable PlayLoggerContext;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/plus/internal/IPlusOneButtonCreator.aidl b/play-services-api/src/main/aidl/com/google/android/gms/plus/internal/IPlusOneButtonCreator.aidl
new file mode 100644
index 00000000..7e2121d2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/plus/internal/IPlusOneButtonCreator.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.plus.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IPlusOneButtonCreator {
+ IObjectWrapper create(IObjectWrapper context, int size, int annotation, String url, int activityRequestCode);
+ IObjectWrapper createForAccount(IObjectWrapper context, int size, int annotation, String url, String account);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/AccountState.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/AccountState.aidl
new file mode 100644
index 00000000..24ae0ffd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/AccountState.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable AccountState;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/CreateReminderOptionsInternal.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/CreateReminderOptionsInternal.aidl
new file mode 100644
index 00000000..142ddedf
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/CreateReminderOptionsInternal.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable CreateReminderOptionsInternal;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/LoadRemindersOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/LoadRemindersOptions.aidl
new file mode 100644
index 00000000..ff418443
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/LoadRemindersOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable LoadRemindersOptions;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/ReindexDueDatesOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/ReindexDueDatesOptions.aidl
new file mode 100644
index 00000000..55ac1beb
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/ReindexDueDatesOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable ReindexDueDatesOptions;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/UpdateRecurrenceOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/UpdateRecurrenceOptions.aidl
new file mode 100644
index 00000000..79f91dec
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/UpdateRecurrenceOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable UpdateRecurrenceOptions;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersCallbacks.aidl
new file mode 100644
index 00000000..5e5506ee
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersCallbacks.aidl
@@ -0,0 +1,17 @@
+package com.google.android.gms.reminders.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.common.data.DataHolder;
+
+import com.google.android.gms.reminders.AccountState;
+
+interface IRemindersCallbacks {
+ void onDataHolder(in DataHolder data, in Status status) = 0;
+ void onStatus(in Status status) = 1;
+ void onNoStatus() = 2;
+ void onDataHolderNoStatus(in DataHolder data, in Status status) = 3;
+ void onBool(boolean b, in Status status) = 4;
+ void onString(in String s, in Status status) = 5;
+ void onAccountState(in AccountState accountState, in Status status) = 6;
+ void onAsyncDataHolder(in DataHolder data) = 7;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersListener.aidl
new file mode 100644
index 00000000..2added91
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersListener.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.reminders.internal;
+
+interface IRemindersListener {
+
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersService.aidl
new file mode 100644
index 00000000..f9986484
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersService.aidl
@@ -0,0 +1,37 @@
+package com.google.android.gms.reminders.internal;
+
+import com.google.android.gms.reminders.internal.IRemindersCallbacks;
+
+import com.google.android.gms.reminders.AccountState;
+import com.google.android.gms.reminders.CreateReminderOptionsInternal;
+import com.google.android.gms.reminders.LoadRemindersOptions;
+import com.google.android.gms.reminders.ReindexDueDatesOptions;
+import com.google.android.gms.reminders.UpdateRecurrenceOptions;
+import com.google.android.gms.reminders.model.CustomizedSnoozePresetEntity;
+import com.google.android.gms.reminders.model.TaskEntity;
+import com.google.android.gms.reminders.model.TaskIdEntity;
+
+interface IRemindersService {
+ void loadReminders(IRemindersCallbacks callbacks, in LoadRemindersOptions options) = 0;
+ void addListener(IRemindersCallbacks callbacks) = 1;
+ void createReminder(IRemindersCallbacks callbacks, in TaskEntity task) = 2;
+ void updateReminder(IRemindersCallbacks callbacks, in TaskEntity task) = 3;
+ void deleteReminder(IRemindersCallbacks callbacks, in TaskIdEntity taskId) = 4;
+ void bumpReminder(IRemindersCallbacks callbacks, in TaskIdEntity taskId) = 5;
+ void hasUpcomingReminders(IRemindersCallbacks callbacks) = 6;
+ void createRecurrence(IRemindersCallbacks callbacks, in TaskEntity task) = 7;
+ void updateRecurrence(IRemindersCallbacks callbacks, String s1, in TaskEntity task, in UpdateRecurrenceOptions options) = 8;
+ void deleteRecurrence(IRemindersCallbacks callbacks, String s1, in UpdateRecurrenceOptions options) = 9;
+ void changeRecurrence(IRemindersCallbacks callbacks, String s1, in TaskEntity task, in UpdateRecurrenceOptions options) = 10;
+ void makeTaskRecurring(IRemindersCallbacks callbacks, in TaskEntity task) = 11;
+ void makeRecurrenceSingleInstance(IRemindersCallbacks callbacks, String s1, in TaskEntity task, in UpdateRecurrenceOptions options) = 12;
+ void clearListeners() = 13;
+ void batchUpdateReminders(IRemindersCallbacks callbacks, in List tasks) = 14;
+ void createReminderWithOptions(IRemindersCallbacks callbacks, in TaskEntity task, in CreateReminderOptionsInternal options) = 15;
+ void getCustomizedSnoozePreset(IRemindersCallbacks callbacks) = 16;
+ void setCustomizedSnoozePreset(IRemindersCallbacks callbacks, in CustomizedSnoozePresetEntity preset) = 17;
+ void setAccountState(IRemindersCallbacks callbacks, in AccountState accountState) = 18;
+ void getAccountState(IRemindersCallbacks callbacks) = 19;
+ void checkReindexDueDatesNeeded(IRemindersCallbacks callbacks, in ReindexDueDatesOptions options) = 20;
+ void reindexDueDates(IRemindersCallbacks callbacks, in ReindexDueDatesOptions options) = 21;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.aidl
new file mode 100644
index 00000000..bbb90836
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders.model;
+
+parcelable CustomizedSnoozePresetEntity;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskEntity.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskEntity.aidl
new file mode 100644
index 00000000..9a3883c2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskEntity.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders.model;
+
+parcelable TaskEntity;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskIdEntity.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskIdEntity.aidl
new file mode 100644
index 00000000..a4c41481
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskIdEntity.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders.model;
+
+parcelable TaskIdEntity;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl
new file mode 100644
index 00000000..f1e056b4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.safetynet;
+
+parcelable AttestationData;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl
new file mode 100644
index 00000000..9e5456b0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.safetynet;
+
+parcelable HarmfulAppsData;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl
new file mode 100644
index 00000000..5b18294d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.safetynet;
+
+parcelable SafeBrowsingData;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl
new file mode 100644
index 00000000..fe57be6d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl
@@ -0,0 +1,14 @@
+package com.google.android.gms.safetynet.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.safetynet.AttestationData;
+import com.google.android.gms.safetynet.HarmfulAppsData;
+import com.google.android.gms.safetynet.SafeBrowsingData;
+
+interface ISafetyNetCallbacks {
+ void onAttestationData(in Status status, in AttestationData attestationData) = 0;
+ void onString(String s) = 1;
+ void onSafeBrowsingData(in Status status, in SafeBrowsingData safeBrowsingData) = 2;
+ void onBoolean(in Status status, boolean b) = 3;
+ void onHarmfulAppsData(in Status status, in List harmfulAppsData) = 4;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl
new file mode 100644
index 00000000..7dfc749b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl
@@ -0,0 +1,12 @@
+package com.google.android.gms.safetynet.internal;
+
+import com.google.android.gms.safetynet.internal.ISafetyNetCallbacks;
+
+interface ISafetyNetService {
+ void attest(ISafetyNetCallbacks callbacks, in byte[] nonce) = 0;
+ void attestWithApiKey(ISafetyNetCallbacks callbacks, in byte[] nonce, String apiKey) = 6;
+ void getSharedUuid(ISafetyNetCallbacks callbacks) = 1;
+ void lookupUri(ISafetyNetCallbacks callbacks, String s1, in int[] threatTypes, int i, String s2) = 2;
+ void init(ISafetyNetCallbacks callbacks) = 3;
+ void getHarmfulAppsList(ISafetyNetCallbacks callbacks) = 4;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/administration/internal/ISearchAdministrationService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/administration/internal/ISearchAdministrationService.aidl
new file mode 100644
index 00000000..404544c2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/administration/internal/ISearchAdministrationService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.search.administration.internal;
+
+interface ISearchAdministrationService {
+
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/ClearCorpusRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/ClearCorpusRequest.aidl
new file mode 100644
index 00000000..9f718934
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/ClearCorpusRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable ClearCorpusRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusInfoRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusInfoRequest.aidl
new file mode 100644
index 00000000..11b0a4dc
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusInfoRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable GetCorpusInfoRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusRequest.aidl
new file mode 100644
index 00000000..b2e549d7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable GetCorpusStatusRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusResponse.aidl
new file mode 100644
index 00000000..a837a7db
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable GetCorpusStatusResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingRequest.aidl
new file mode 100644
index 00000000..ad68ef35
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable RequestIndexingRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingResponse.aidl
new file mode 100644
index 00000000..7aaa548c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable RequestIndexingResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaCallbacks.aidl
new file mode 100644
index 00000000..863b016f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaCallbacks.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.search.corpora.internal;
+
+import com.google.android.gms.search.corpora.RequestIndexingResponse;
+import com.google.android.gms.search.corpora.GetCorpusStatusResponse;
+
+interface ISearchCorporaCallbacks {
+ void onRequestIndexing(in RequestIndexingResponse response) = 1;
+ void onGetCorpusStatus(in GetCorpusStatusResponse response) = 3;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaService.aidl
new file mode 100644
index 00000000..fe2073c0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaService.aidl
@@ -0,0 +1,14 @@
+package com.google.android.gms.search.corpora.internal;
+
+import com.google.android.gms.search.corpora.ClearCorpusRequest;
+import com.google.android.gms.search.corpora.GetCorpusStatusRequest;
+import com.google.android.gms.search.corpora.GetCorpusInfoRequest;
+import com.google.android.gms.search.corpora.RequestIndexingRequest;
+import com.google.android.gms.search.corpora.internal.ISearchCorporaCallbacks;
+
+interface ISearchCorporaService {
+ void requestIndexing(in RequestIndexingRequest request, ISearchCorporaCallbacks callbacks) = 1;
+ void clearCorpus(in ClearCorpusRequest request, ISearchCorporaCallbacks callbacks) = 2;
+ void getCorpusStatus(in GetCorpusStatusRequest request, ISearchCorporaCallbacks callbacks) = 3;
+ void getCorpusInfo(in GetCorpusInfoRequest request, ISearchCorporaCallbacks callbacks) = 4;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsRequest.aidl
new file mode 100644
index 00000000..426cbe47
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetCurrentExperimentIdsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsResponse.aidl
new file mode 100644
index 00000000..8fdb4567
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetCurrentExperimentIdsResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesRequest.aidl
new file mode 100644
index 00000000..986ab4db
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetGlobalSearchSourcesRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesResponse.aidl
new file mode 100644
index 00000000..86d52a13
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetGlobalSearchSourcesResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsRequest.aidl
new file mode 100644
index 00000000..8d7382ed
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetPendingExperimentIdsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsResponse.aidl
new file mode 100644
index 00000000..ca99ad5f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetPendingExperimentIdsResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsRequest.aidl
new file mode 100644
index 00000000..2bd4d8b3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetExperimentIdsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsResponse.aidl
new file mode 100644
index 00000000..ff552760
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetExperimentIdsResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchRequest.aidl
new file mode 100644
index 00000000..79cbb179
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetIncludeInGlobalSearchRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchResponse.aidl
new file mode 100644
index 00000000..a5f2d6d0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetIncludeInGlobalSearchResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminCallbacks.aidl
new file mode 100644
index 00000000..b08d9530
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminCallbacks.aidl
@@ -0,0 +1,16 @@
+package com.google.android.gms.search.global.internal;
+
+import com.google.android.gms.search.global.GetCurrentExperimentIdsResponse;
+import com.google.android.gms.search.global.GetGlobalSearchSourcesResponse;
+import com.google.android.gms.search.global.GetPendingExperimentIdsResponse;
+import com.google.android.gms.search.global.SetExperimentIdsResponse;
+import com.google.android.gms.search.global.SetIncludeInGlobalSearchResponse;
+
+interface IGlobalSearchAdminCallbacks {
+ void onGetGlobalSearchSourcesResponse(in GetGlobalSearchSourcesResponse request) = 1;
+ void onSetExperimentIdsResponse(in SetExperimentIdsResponse response) = 2;
+ void onGetCurrentExperimentIdsResponse(in GetCurrentExperimentIdsResponse response) = 3;
+ void onGetPendingExperimentIdsResponse(in GetPendingExperimentIdsResponse response) = 4;
+
+ void onSetIncludeInGlobalSearchResponse(in SetIncludeInGlobalSearchResponse response) = 7;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminService.aidl
new file mode 100644
index 00000000..95bc32a7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminService.aidl
@@ -0,0 +1,17 @@
+package com.google.android.gms.search.global.internal;
+
+import com.google.android.gms.search.global.GetCurrentExperimentIdsRequest;
+import com.google.android.gms.search.global.GetGlobalSearchSourcesRequest;
+import com.google.android.gms.search.global.GetPendingExperimentIdsRequest;
+import com.google.android.gms.search.global.SetExperimentIdsRequest;
+import com.google.android.gms.search.global.SetIncludeInGlobalSearchRequest;
+import com.google.android.gms.search.global.internal.IGlobalSearchAdminCallbacks;
+
+interface IGlobalSearchAdminService {
+ void getGlobalSearchSources(in GetGlobalSearchSourcesRequest request, IGlobalSearchAdminCallbacks callbacks) = 1;
+ void setExperimentIds(in SetExperimentIdsRequest request, IGlobalSearchAdminCallbacks callbacks) = 2;
+ void getCurrentExperimentIds(in GetCurrentExperimentIdsRequest request, IGlobalSearchAdminCallbacks callbacks) = 3;
+ void getPendingExperimentIds(in GetPendingExperimentIdsRequest request, IGlobalSearchAdminCallbacks callbacks) = 4;
+
+ void setIncludeInGlobalSearch(in SetIncludeInGlobalSearchRequest request, IGlobalSearchAdminCallbacks callbacks) = 7;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryRequest.aidl
new file mode 100644
index 00000000..1986e95d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.queries;
+
+parcelable QueryRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryResponse.aidl
new file mode 100644
index 00000000..97047253
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.queries;
+
+parcelable QueryResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesCallbacks.aidl
new file mode 100644
index 00000000..8bcb891e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesCallbacks.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.search.queries.internal;
+
+import com.google.android.gms.search.queries.QueryResponse;
+
+interface ISearchQueriesCallbacks {
+ void onQuery(in QueryResponse response) = 1;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesService.aidl
new file mode 100644
index 00000000..091cdae5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesService.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.search.queries.internal;
+
+import com.google.android.gms.search.queries.QueryRequest;
+import com.google.android.gms.search.queries.internal.ISearchQueriesCallbacks;
+
+interface ISearchQueriesService {
+ void query(in QueryRequest request, ISearchQueriesCallbacks callbacks) = 1;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl
new file mode 100644
index 00000000..622b0ba7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.tapandpay.internal;
+
+interface ITapAndPayService {
+
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IOwService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IOwService.aidl
new file mode 100644
index 00000000..d9cb9209
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IOwService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.wallet.internal;
+
+interface IOwService {
+
+}
diff --git a/play-services-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl b/play-services-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl
new file mode 100644
index 00000000..6269896b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl
@@ -0,0 +1,5 @@
+package com.google.firebase.auth.api.internal;
+
+interface IFirebaseAuthService {
+
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/CompoundHashParcelable.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/CompoundHashParcelable.aidl
new file mode 100644
index 00000000..689e5918
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/CompoundHashParcelable.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.database.connection.idl;
+
+parcelable CompoundHashParcelable;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/ConnectionConfig.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/ConnectionConfig.aidl
new file mode 100644
index 00000000..d6c1fc31
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/ConnectionConfig.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.database.connection.idl;
+
+parcelable ConnectionConfig;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IConnectionAuthTokenProvider.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IConnectionAuthTokenProvider.aidl
new file mode 100644
index 00000000..447f9f4a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IConnectionAuthTokenProvider.aidl
@@ -0,0 +1,7 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.firebase.database.connection.idl.IGetTokenCallback;
+
+interface IConnectionAuthTokenProvider {
+ void zero(boolean var1, IGetTokenCallback var2) = 0;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IGetTokenCallback.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IGetTokenCallback.aidl
new file mode 100644
index 00000000..c4d45cdd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IGetTokenCallback.aidl
@@ -0,0 +1,6 @@
+package com.google.firebase.database.connection.idl;
+
+interface IGetTokenCallback {
+ void zero(String s) = 0;
+ void onError(String s) = 1;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IListenHashProvider.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IListenHashProvider.aidl
new file mode 100644
index 00000000..a5aaa187
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IListenHashProvider.aidl
@@ -0,0 +1,11 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.firebase.database.connection.idl.CompoundHashParcelable;
+
+interface IListenHashProvider {
+ String zzPY() = 0;
+
+ boolean zzPZ() = 1;
+
+ CompoundHashParcelable zzQF() = 2;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnection.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnection.aidl
new file mode 100644
index 00000000..21e00b1c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnection.aidl
@@ -0,0 +1,44 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+import com.google.firebase.database.connection.idl.ConnectionConfig;
+import com.google.firebase.database.connection.idl.IConnectionAuthTokenProvider;
+import com.google.firebase.database.connection.idl.IListenHashProvider;
+import com.google.firebase.database.connection.idl.IPersistentConnectionDelegate;
+import com.google.firebase.database.connection.idl.IRequestResultCallback;
+
+
+interface IPersistentConnection {
+ void setup(in ConnectionConfig var1, IConnectionAuthTokenProvider var2, IObjectWrapper var3, IPersistentConnectionDelegate var4) = 0;
+
+ void initialize() = 1;
+
+ void shutdown() = 2;
+
+ void refreshAuthToken() = 3;
+
+ void listen(in List var1, IObjectWrapper var2, IListenHashProvider var3, long var4, IRequestResultCallback var6) = 4;
+
+ void unlisten(in List var1, IObjectWrapper var2) = 5;
+
+ void purgeOutstandingWrites() = 6;
+
+ void put(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 7;
+
+ void compareAndPut(in List var1, IObjectWrapper var2, String var3, IRequestResultCallback var4) = 8;
+
+ void merge(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 9;
+
+ void onDisconnectPut(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 10;
+
+ void onDisconnectMerge(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 11;
+
+ void onDisconnectCancel(in List var1, IRequestResultCallback var2) = 12;
+
+ void interrupt(String var1) = 13;
+
+ void resume(String var1) = 14;
+
+ boolean isInterrupted(String var1) = 15;
+}
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnectionDelegate.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnectionDelegate.aidl
new file mode 100644
index 00000000..9ae649d0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnectionDelegate.aidl
@@ -0,0 +1,19 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+import com.google.firebase.database.connection.idl.RangeParcelable;
+
+interface IPersistentConnectionDelegate {
+ void zero(in List var1, IObjectWrapper var2, boolean var3, long var4) = 0;
+
+ void one(in List var1, in List var2, IObjectWrapper var3, long var4) = 1;
+
+ void two() = 2;
+
+ void onDisconnect() = 3;
+
+ void four(boolean var1) = 4;
+
+ void five(IObjectWrapper var1) = 5;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IRequestResultCallback.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IRequestResultCallback.aidl
new file mode 100644
index 00000000..5806bc35
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IRequestResultCallback.aidl
@@ -0,0 +1,5 @@
+package com.google.firebase.database.connection.idl;
+
+interface IRequestResultCallback {
+ void zero(String var1, String var2) = 0;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/RangeParcelable.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/RangeParcelable.aidl
new file mode 100644
index 00000000..08d6df18
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/RangeParcelable.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.database.connection.idl;
+
+parcelable RangeParcelable;
\ No newline at end of file
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/CorpusStatus.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/CorpusStatus.java
new file mode 100644
index 00000000..5c71ea0c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/CorpusStatus.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import android.os.Bundle;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class CorpusStatus extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode;
+ @SafeParceled(1)
+ public boolean found;
+ @SafeParceled(2)
+ public long lastIndexedSeqno;
+ @SafeParceled(3)
+ public long lastCommittedSeqno;
+ @SafeParceled(4)
+ public long committedNumDocuments;
+ @SafeParceled(5)
+ public Bundle counters;
+ @SafeParceled(6)
+ public String g;
+
+ public CorpusStatus() {
+ versionCode = 2;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(CorpusStatus.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdate.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdate.java
new file mode 100644
index 00000000..2f8a596f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdate.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class PIMEUpdate extends AutoSafeParcelable {
+
+ public static final Creator CREATOR = new AutoCreator(PIMEUpdate.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdateResponse.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdateResponse.java
new file mode 100644
index 00000000..d542f48f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdateResponse.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class PIMEUpdateResponse extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode;
+
+ @SafeParceled(1)
+ private String b;
+
+ @SafeParceled(2)
+ public final byte[] bytes;
+
+ @SafeParceled(3)
+ public final PIMEUpdate[] updates;
+
+ public PIMEUpdateResponse() {
+ versionCode = 1;
+ this.bytes = null;
+ this.updates = new PIMEUpdate[0];
+ }
+
+ public static final Creator CREATOR = new AutoCreator(PIMEUpdateResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/QuerySpecification.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/QuerySpecification.java
new file mode 100644
index 00000000..1be52c8f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/QuerySpecification.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.List;
+
+public class QuerySpecification extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode = 2;
+ @SafeParceled(1)
+ public final boolean b;
+ //@SafeParceled(value = 2, subType = "TODO")
+ public final List c;
+ //@SafeParceled(value = 3, subType = "TODO")
+ public final List d;
+ @SafeParceled(4)
+ public final boolean e;
+ @SafeParceled(5)
+ public final int f;
+ @SafeParceled(6)
+ public final int g;
+ @SafeParceled(7)
+ public final boolean h;
+ @SafeParceled(8)
+ public final int i;
+
+ private QuerySpecification() {
+ b = false;
+ c = null;
+ d = null;
+ e = false;
+ f = 0;
+ g = 0;
+ h = false;
+ i = 0;
+ }
+
+ @Override
+ public String toString() {
+ return "QuerySpecification{" +
+ "versionCode=" + versionCode +
+ ", b=" + b +
+ ", c=" + c +
+ ", d=" + d +
+ ", e=" + e +
+ ", f=" + f +
+ ", g=" + g +
+ ", h=" + h +
+ ", i=" + i +
+ '}';
+ }
+
+ public static final Creator CREATOR = new AutoCreator(QuerySpecification.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/RequestIndexingSpecification.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/RequestIndexingSpecification.java
new file mode 100644
index 00000000..720f773c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/RequestIndexingSpecification.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class RequestIndexingSpecification extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode;
+
+ public static final Creator CREATOR = new AutoCreator(RequestIndexingSpecification.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SearchResults.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SearchResults.java
new file mode 100644
index 00000000..fec25f00
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SearchResults.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class SearchResults extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode = 2;
+
+ public static Creator CREATOR = new AutoCreator(SearchResults.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestSpecification.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestSpecification.java
new file mode 100644
index 00000000..0f80a053
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestSpecification.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class SuggestSpecification extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode;
+
+ public SuggestSpecification() {
+ versionCode = 2;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(SuggestSpecification.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestionResults.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestionResults.java
new file mode 100644
index 00000000..f616d51d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestionResults.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class SuggestionResults extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode;
+ @SafeParceled(1)
+ public final String errorMessage;
+
+ @SafeParceled(2)
+ public final String[] s1;
+ @SafeParceled(3)
+ public final String[] s2;
+
+ private SuggestionResults() {
+ versionCode = 2;
+ errorMessage = null;
+ s1 = s2 = null;
+ }
+
+ public SuggestionResults(String errorMessage) {
+ versionCode = 2;
+ this.errorMessage = errorMessage;
+ this.s1 = null;
+ this.s2 = null;
+ }
+
+ public SuggestionResults(String[] s1, String[] s2) {
+ versionCode = 2;
+ this.errorMessage = null;
+ this.s1 = s1;
+ this.s2 = s2;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(SuggestionResults.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/UsageInfo.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/UsageInfo.java
new file mode 100644
index 00000000..a2f0f9e7
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/UsageInfo.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UsageInfo extends AutoSafeParcelable {
+
+ public static Creator CREATOR = new AutoCreator(UsageInfo.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java
new file mode 100644
index 00000000..0485f3a2
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AccountChangeEvent extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(AccountChangeEvent.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java
new file mode 100644
index 00000000..0d7f5cd8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AccountChangeEventsRequest extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ private int i;
+ @SafeParceled(3)
+ private String s;
+
+ public static Creator CREATOR = new AutoCreator(AccountChangeEventsRequest.class);
+
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java
new file mode 100644
index 00000000..0bff57a8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AccountChangeEventsResponse extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(value = 2, subClass = AccountChangeEvent.class)
+ private List events;
+
+ public AccountChangeEventsResponse() {
+ events = new ArrayList();
+ }
+
+ public static Creator CREATOR = new AutoCreator(AccountChangeEventsResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java b/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java
new file mode 100644
index 00000000..3b7d45f5
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth;
+
+import com.google.android.gms.common.api.Scope;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.List;
+
+public class TokenData extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+
+ @SafeParceled(2)
+ public final String token;
+
+ @SafeParceled(3)
+ public final Long expiry;
+
+ @SafeParceled(5)
+ public final boolean isOAuth;
+
+ @SafeParceled(value = 6, subClass = Scope.class)
+ public final List scopes;
+
+ public TokenData() {
+ token = null;
+ expiry = null;
+ isOAuth = false;
+ scopes = null;
+ }
+
+ public TokenData(String token, Long expiry, boolean isOAuth, List scopes) {
+ this.token = token;
+ this.expiry = expiry;
+ this.isOAuth = isOAuth;
+ this.scopes = scopes;
+ }
+
+ public TokenData(String token, Long expiry) {
+ this.token = token;
+ this.expiry = expiry;
+ this.isOAuth = false;
+ this.scopes = null;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(TokenData.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java
new file mode 100644
index 00000000..13ee988e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.api.credentials;
+
+import android.net.Uri;
+import android.text.TextUtils;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+@PublicApi
+public class Credential extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode = 1;
+
+ @SafeParceled(1)
+ private String id;
+
+ @SafeParceled(2)
+ private String name;
+
+ @SafeParceled(3)
+ private Uri profilePictureUri;
+
+ @SafeParceled(value = 4, subClass = IdToken.class)
+ private List tokens;
+
+ @SafeParceled(5)
+ private String password;
+
+ @SafeParceled(6)
+ private String accountType;
+
+ @SafeParceled(7)
+ private String generatedPassword;
+
+ private Credential() {
+ }
+
+ /**
+ * Returns the type of federated identity account used to sign in the user. While this may be
+ * any string, it is strongly recommended that values from {@link com.google.android.gms.auth.api.credentials.IdentityProviders}
+ * are used, which are the login domains for common identity providers.
+ *
+ * @return A string identifying the federated identity provider associated with this account,
+ * typically in the form of the identity provider's login domain. null will be returned if the
+ * credential is a password credential.
+ */
+ public String getAccountType() {
+ return accountType;
+ }
+
+ /**
+ * Returns the generated password for an account hint.
+ */
+ public String getGeneratedPassword() {
+ return generatedPassword;
+ }
+
+ /**
+ * Returns the credential identifier, typically an email address or user name, though it may
+ * also be some encoded unique identifier for a federated identity account.
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Returns the ID tokens that assert the identity of the user, if available. ID tokens provide
+ * a secure mechanism to verify that the user owns the identity asserted by the credential.
+ *
+ * This is useful for account hints, where the ID token can replace the need to separately
+ * verify that the user owns their claimed email address - with a valid ID token, it is not
+ * necessary to send an account activation link to the address, simplifying the account
+ * creation process for the user.
+ *
+ * A signed ID token is returned automatically for credential hints when the credential ID is a
+ * Google account that is authenticated on the device. This ID token can be sent along with
+ * your application's account creation operation, where the signature can be verified.
+ */
+ public List getIdTokens() {
+ return tokens;
+ }
+
+ /**
+ * Returns the display name of the credential, if available. Typically, the display name will
+ * be the name of the user, or some other string which the user can easily recognize and
+ * distinguish from other accounts they may have.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Returns the password used to sign in the user.
+ */
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Returns the URL to an image of the user, if available.
+ */
+ public Uri getProfilePictureUri() {
+ return profilePictureUri;
+ }
+
+ @PublicApi(exclude = true)
+ public String getAsString() {
+ if (TextUtils.isEmpty(accountType)) {
+ return id.toLowerCase(Locale.US) + "|";
+ } else {
+ Uri uri = Uri.parse(accountType);
+ return id.toLowerCase(Locale.US) + "|" + (TextUtils.isEmpty(uri.getScheme()) ? "" : uri.getScheme().toLowerCase(Locale.US)) + "://" +
+ (TextUtils.isEmpty(uri.getHost()) ? "unknown" : uri.getHost().toLowerCase(Locale.US)) + ":" + uri.getPort();
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || !(o instanceof Credential)) return false;
+
+ Credential that = (Credential) o;
+
+ if (id != null ? !id.equals(that.id) : that.id != null) return false;
+ if (name != null ? !name.equals(that.name) : that.name != null) return false;
+ if (profilePictureUri != null ? !profilePictureUri.equals(that.profilePictureUri) : that.profilePictureUri != null)
+ return false;
+ if (password != null ? !password.equals(that.password) : that.password != null)
+ return false;
+ if (accountType != null ? !accountType.equals(that.accountType) : that.accountType != null)
+ return false;
+ return generatedPassword != null ? generatedPassword.equals(that.generatedPassword) : that.generatedPassword == null;
+
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(new Object[]{id, name, profilePictureUri, password, accountType, generatedPassword});
+ }
+
+ public static class Builder {
+ private String id;
+ private String name;
+ private Uri profilePictureUri;
+ private String password;
+ private String accountType;
+
+ @PublicApi(exclude = true)
+ public List tokens;
+ @PublicApi(exclude = true)
+ private String generatedPassword;
+
+ public Builder(String id) {
+ this.id = id;
+ }
+
+ /**
+ * Copies the information stored in an existing credential, in order to allow that information to be modified.
+ *
+ * @param credential the existing credential
+ */
+ public Builder(Credential credential) {
+ this.id = credential.id;
+ this.name = credential.name;
+ this.profilePictureUri = credential.profilePictureUri;
+ this.password = credential.password;
+ this.accountType = credential.accountType;
+ this.tokens = credential.tokens;
+ this.generatedPassword = credential.generatedPassword;
+ }
+
+ public Credential build() {
+ Credential credential = new Credential();
+ credential.id = id;
+ credential.name = name;
+ credential.profilePictureUri = profilePictureUri;
+ credential.password = password;
+ credential.accountType = accountType;
+ credential.tokens = tokens;
+ credential.generatedPassword = generatedPassword;
+ return credential;
+ }
+
+ /**
+ * Specifies the account type for a federated credential. The value should be set to
+ * identity provider's login domain, such as "https://accounts.google.com" for Google
+ * accounts. The login domains for common identity providers are listed in {@link IdentityProviders}.
+ *
+ * @param accountType The type of the account. Typically, one of the values in {@link IdentityProviders}.
+ */
+ public Builder setAccountType(String accountType) {
+ this.accountType = accountType;
+ return this;
+ }
+
+ /**
+ * Sets the display name for the credential, which should be easy for the user to recognize
+ * as associated to the credential, and distinguishable from other credentials they may
+ * have. This string will be displayed more prominently than, or instead of, the account ID
+ * whenever available. In most cases, the name of the user is sufficient.
+ */
+ public Builder setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Sets the password for the credential. Either the password or the account type must be
+ * set for a credential, but not both.
+ */
+ public Builder setPassword(String password) {
+ this.password = password;
+ return this;
+ }
+
+ /**
+ * Sets a profile picture associated with the credential, typically a picture the user has
+ * selected to represent the account.
+ */
+ public Builder setProfilePictureUri(Uri profilePictureUri) {
+ this.profilePictureUri = profilePictureUri;
+ return this;
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator(Credential.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java
new file mode 100644
index 00000000..67d66c05
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.api.credentials;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class CredentialPickerConfig extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode = 1;
+
+ @SafeParceled(1)
+ private boolean showAddAccountButton;
+
+ @SafeParceled(2)
+ private boolean showCancelButton;
+
+ @SafeParceled(3)
+ private boolean forNewAccount;
+
+ private CredentialPickerConfig() {
+ }
+
+ public CredentialPickerConfig(boolean showAddAccountButton, boolean showCancelButton, boolean forNewAccount) {
+ this.showAddAccountButton = showAddAccountButton;
+ this.showCancelButton = showCancelButton;
+ this.forNewAccount = forNewAccount;
+ }
+
+ public boolean isForNewAccount() {
+ return forNewAccount;
+ }
+
+ public boolean shouldShowAddAccountButton() {
+ return showAddAccountButton;
+ }
+
+ public boolean shouldShowCancelButton() {
+ return showCancelButton;
+ }
+
+ public class Builder {
+ private boolean showAddAccountButton;
+ private boolean showCancelButton;
+ private boolean forNewAccount;
+
+ public CredentialPickerConfig build() {
+ return new CredentialPickerConfig(showAddAccountButton, showCancelButton, forNewAccount);
+ }
+
+ /**
+ * Sets whether the hint request is for a new account sign-up flow.
+ */
+ public Builder setForNewAccount(boolean forNewAccount) {
+ this.forNewAccount = forNewAccount;
+ return this;
+ }
+
+ /**
+ * Sets whether the add account button should be shown in credential picker dialog.
+ */
+ public Builder setShowAddAccountButton(boolean showAddAccountButton) {
+ this.showAddAccountButton = showAddAccountButton;
+ return this;
+ }
+
+ /**
+ * Sets whether the cancel button should be shown in credential picker dialog.
+ */
+ public Builder setShowCancelButton(boolean showCancelButton) {
+ this.showCancelButton = showCancelButton;
+ return this;
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator(CredentialPickerConfig.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java
new file mode 100644
index 00000000..80819c71
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.api.credentials;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+/**
+ * Parameters for requesting a Credential, via Auth.CredentialsApi.request(). Instances can be
+ * created using CredentialRequest.Builder.
+ */
+public class CredentialRequest extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode = 1;
+
+ @SafeParceled(1)
+ private boolean passwordLoginSupported;
+
+ @SafeParceled(2)
+ private String[] accountTypes;
+
+ @SafeParceled(3)
+ private CredentialPickerConfig credentialPickerConfig;
+
+ @SafeParceled(4)
+ private CredentialPickerConfig credentialHintPickerConfig;
+
+ public CredentialRequest(boolean passwordLoginSupported, String[] accountTypes, CredentialPickerConfig credentialPickerConfig, CredentialPickerConfig credentialHintPickerConfig) {
+ this.passwordLoginSupported = passwordLoginSupported;
+ this.accountTypes = accountTypes;
+ this.credentialPickerConfig = credentialPickerConfig;
+ this.credentialHintPickerConfig = credentialHintPickerConfig;
+ }
+
+ public String[] getAccountTypes() {
+ return accountTypes;
+ }
+
+ public CredentialPickerConfig getCredentialHintPickerConfig() {
+ return credentialHintPickerConfig;
+ }
+
+ public CredentialPickerConfig getCredentialPickerConfig() {
+ return credentialPickerConfig;
+ }
+
+ /**
+ * @deprecated Use {@link #isPasswordLoginSupported()}
+ */
+ @Deprecated
+ public boolean getSupportsPasswordLogin() {
+ return isPasswordLoginSupported();
+ }
+
+ public boolean isPasswordLoginSupported() {
+ return passwordLoginSupported;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(CredentialRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java
new file mode 100644
index 00000000..2ef78f95
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.api.credentials;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+@PublicApi
+public class IdToken extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode = 1;
+
+ @SafeParceled(1)
+ private String accountType;
+
+ @SafeParceled(2)
+ private String id;
+
+ private IdToken() {
+ }
+
+ public IdToken(String accountType, String id) {
+ this.accountType = accountType;
+ this.id = id;
+ }
+
+ /**
+ * Returns {@code AccountManager} account type for the token.
+ */
+ public String getAccountType() {
+ return accountType;
+ }
+
+ /**
+ * Returns the ID token, formatted according to the rules defined by the account type.
+ */
+ public String getIdToken() {
+ return id;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(IdToken.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java
new file mode 100644
index 00000000..bd7ae6f2
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.api.credentials.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DeleteRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator(DeleteRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java
new file mode 100644
index 00000000..3da7a72a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.api.credentials.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GeneratePasswordRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator(GeneratePasswordRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java
new file mode 100644
index 00000000..5ec25998
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.api.credentials.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SaveRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator(SaveRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java
new file mode 100644
index 00000000..6c73b4bc
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import android.accounts.Account;
+
+import org.microg.gms.auth.AuthConstants;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AccountRecoveryGuidanceRequest extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ @Deprecated
+ public final String accountName;
+ @SafeParceled(3)
+ public final Account account;
+
+ public AccountRecoveryGuidanceRequest(String accountName) {
+ this.accountName = accountName;
+ this.account = new Account(accountName, AuthConstants.DEFAULT_ACCOUNT_TYPE);
+ }
+
+ public AccountRecoveryGuidanceRequest(Account account) {
+ this.accountName = account.name;
+ this.account = account;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(AccountRecoveryGuidanceRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java
new file mode 100644
index 00000000..cd56eb1a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import android.accounts.Account;
+
+import org.microg.gms.auth.AuthConstants;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AccountRemovalRequest extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ @Deprecated
+ public final String accountName;
+ @SafeParceled(3)
+ public final Account account;
+
+ public AccountRemovalRequest(String accountName) {
+ this.accountName = accountName;
+ this.account = new Account(accountName, AuthConstants.DEFAULT_ACCOUNT_TYPE);
+ }
+
+ public AccountRemovalRequest(Account account) {
+ this.accountName = account.name;
+ this.account = account;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(AccountRemovalRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java
new file mode 100644
index 00000000..c7db433b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import com.google.android.gms.auth.firstparty.shared.AccountCredentials;
+import com.google.android.gms.auth.firstparty.shared.CaptchaSolution;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class ConfirmCredentialsRequest extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ public AccountCredentials accountCredentials;
+ @SafeParceled(3)
+ public CaptchaSolution captchaSolution;
+
+ public static final Creator CREATOR = new AutoCreator(ConfirmCredentialsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java
new file mode 100644
index 00000000..4a200050
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import android.accounts.Account;
+import android.os.Bundle;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+// TODO
+public class TokenRequest extends AutoSafeParcelable{
+
+ @SafeParceled(1)
+ private int versionCode = 4;
+ @SafeParceled(3)
+ public String accountName;
+ @SafeParceled(4)
+ public Bundle extras;
+ @SafeParceled(9)
+ public String consent;
+ @SafeParceled(15)
+ public String accountType;
+
+ public Account getAccount() {
+ return new Account(accountName, accountType);
+ }
+
+ public static final Creator CREATOR = new AutoCreator(TokenRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenResponse.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenResponse.java
new file mode 100644
index 00000000..999e9a96
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenResponse.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+public class TokenResponse {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java
new file mode 100644
index 00000000..0091dee5
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.delegate;
+
+import android.accounts.Account;
+import android.accounts.AccountAuthenticatorResponse;
+import android.os.Bundle;
+
+import com.google.android.gms.auth.firstparty.shared.AppDescription;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class ConfirmCredentialsWorkflowRequest extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 3;
+ @SafeParceled(2)
+ public String accountName;
+ @SafeParceled(3)
+ public AppDescription appDescription;
+ @SafeParceled(4)
+ public Bundle extras;
+ @SafeParceled(5)
+ public Account account;
+ @SafeParceled(6)
+ public AccountAuthenticatorResponse accountAuthenticatorResponse;
+
+ public static final Creator CREATOR = new AutoCreator(ConfirmCredentialsWorkflowRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/proximity/data/Permit.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/proximity/data/Permit.java
new file mode 100644
index 00000000..139bf29b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/proximity/data/Permit.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.proximity.data;
+
+public class Permit {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java
new file mode 100644
index 00000000..4b57130d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.shared;
+
+import android.accounts.Account;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+// TODO
+public class AccountCredentials extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 2;
+ @SafeParceled(3)
+ public String accountName;
+ @SafeParceled(9)
+ public String accountType;
+
+ public Account getAccount() {
+ return new Account(accountName, accountType);
+ }
+
+ public static final Creator CREATOR = new AutoCreator(AccountCredentials.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java
new file mode 100644
index 00000000..9e339e81
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.shared;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AppDescription extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ public int callingUid;
+ @SafeParceled(3)
+ public String sessiondId;
+ @SafeParceled(4)
+ public String sessiondSig;
+ @SafeParceled(5)
+ public String callingPkg;
+
+ public static final Creator CREATOR = new AutoCreator(AppDescription.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java
new file mode 100644
index 00000000..9563798e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.auth.firstparty.shared;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+// TODO
+public class CaptchaSolution extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+
+ public static final Creator CREATOR = new AutoCreator(CaptchaSolution.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java b/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java
new file mode 100644
index 00000000..81042a97
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.clearcut;
+
+import android.util.Base64;
+
+import com.google.android.gms.playlog.internal.PlayLoggerContext;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.Arrays;
+
+public class LogEventParcelable extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+
+ @SafeParceled(2)
+ public final PlayLoggerContext context;
+
+ @SafeParceled(3)
+ public final byte[] bytes;
+
+ @SafeParceled(4)
+ public final int[] testCodes;
+
+ @SafeParceled(5)
+ public final String[] mendelPackages;
+
+ @SafeParceled(6)
+ public final int[] experimentIds;
+
+ @SafeParceled(7)
+ public final byte[][] experimentTokens;
+
+ @SafeParceled(8)
+ public final boolean addPhenotypeExperimentTokens;
+
+ private LogEventParcelable() {
+ context = null;
+ bytes = null;
+ testCodes = experimentIds = null;
+ mendelPackages = null;
+ experimentTokens = null;
+ addPhenotypeExperimentTokens = false;
+ }
+
+ public LogEventParcelable(PlayLoggerContext context, byte[] bytes, int[] testCodes, String[] mendelPackages, int[] experimentIds, byte[][] experimentTokens, boolean addPhenotypeExperimentTokens) {
+ this.context = context;
+ this.bytes = bytes;
+ this.testCodes = testCodes;
+ this.mendelPackages = mendelPackages;
+ this.experimentIds = experimentIds;
+ this.experimentTokens = experimentTokens;
+ this.addPhenotypeExperimentTokens = addPhenotypeExperimentTokens;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("LogEventParcelable[")
+ .append(versionCode).append(", ").append(context)
+ .append(", LogEventBytes: ").append(getBytesAsString());
+ if (testCodes != null) sb.append(", TestCodes: ").append(Arrays.toString(testCodes));
+ if (mendelPackages != null)
+ sb.append(", MendelPackages: ").append(Arrays.toString(mendelPackages));
+ if (experimentIds != null)
+ sb.append(", ExperimentIds: ").append(Arrays.toString(experimentIds));
+ if (experimentTokens != null)
+ sb.append(", ExperimentTokens: ").append(Arrays.toString(experimentTokens));
+ return sb.append(", AddPhenotypeExperimentTokens: ").append(addPhenotypeExperimentTokens)
+ .append(']').toString();
+ }
+
+ private String getBytesAsString() {
+ if (bytes == null) return "null";
+ try {
+ CharsetDecoder d = Charset.forName("US-ASCII").newDecoder();
+ CharBuffer r = d.decode(ByteBuffer.wrap(bytes));
+ return r.toString();
+ } catch (Exception e) {
+ return Base64.encodeToString(bytes, Base64.NO_WRAP);
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator(LogEventParcelable.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/common/internal/CertData.java b/play-services-api/src/main/java/com/google/android/gms/common/internal/CertData.java
new file mode 100644
index 00000000..826d1c37
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/common/internal/CertData.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2019 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.common.internal;
+
+import android.os.RemoteException;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.dynamic.ObjectWrapper;
+
+import java.util.Arrays;
+
+public class CertData extends ICertData.Stub {
+ private final byte[] bytes;
+ private final int hashCode;
+
+ public CertData(byte[] bytes) {
+ this.bytes = bytes;
+ if (bytes.length < 25) throw new RuntimeException("CertData to small");
+ hashCode = Arrays.hashCode(Arrays.copyOfRange(bytes, 0, 25));
+ }
+
+ @Override
+ public int hashCode() {
+ return hashCode;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof ICertData)) return false;
+ ICertData cert = (ICertData) obj;
+ try {
+ if (cert.remoteHashCode() != hashCode()) return false;
+ return Arrays.equals(ObjectWrapper.unwrapTyped(cert.getWrappedBytes(), byte[].class), getBytes());
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+ public byte[] getBytes() {
+ return bytes;
+ }
+
+ @Override
+ public IObjectWrapper getWrappedBytes() throws RemoteException {
+ return ObjectWrapper.wrap(getBytes());
+ }
+
+ @Override
+ public int remoteHashCode() throws RemoteException {
+ return hashCode();
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java b/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java
new file mode 100644
index 00000000..c8240279
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2019 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.common.internal;
+
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.dynamic.ObjectWrapper;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class GoogleCertificatesQuery extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private String packageName;
+ @SafeParceled(2)
+ private IBinder certDataBinder;
+ private CertData certData;
+ @SafeParceled(3)
+ private boolean allowNonRelease;
+
+ public String getPackageName() {
+ return packageName;
+ }
+
+ public CertData getCertData() {
+ if (certData == null && certDataBinder != null) {
+ ICertData iCertData = null;
+ if (certDataBinder instanceof CertData) {
+ certData = (CertData) certDataBinder;
+ } else if (certDataBinder instanceof IObjectWrapper) {
+ certData = ObjectWrapper.unwrapTyped((IObjectWrapper) certDataBinder, CertData.class);
+ if (certData == null) {
+ byte[] bytes = ObjectWrapper.unwrapTyped((IObjectWrapper) certDataBinder, byte[].class);
+ if (bytes != null) {
+ certData = new CertData(bytes);
+ }
+ }
+ if (certData == null) {
+ iCertData = ObjectWrapper.unwrapTyped((IObjectWrapper) certDataBinder, ICertData.class);
+ }
+ } else if (certDataBinder instanceof ICertData) {
+ iCertData = (ICertData) certDataBinder;
+ }
+ if (iCertData != null) {
+ try {
+ byte[] bytes = ObjectWrapper.unwrapTyped(iCertData.getWrappedBytes(), byte[].class);
+ if (bytes != null) {
+ certData = new CertData(bytes);
+ }
+ } catch (RemoteException e) {
+ // Ignore
+ }
+ }
+ }
+ return certData;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(GoogleCertificatesQuery.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java
new file mode 100644
index 00000000..bce9276b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AddEventListenerRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(AddEventListenerRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java
new file mode 100644
index 00000000..559d52d3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AddPermissionRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(AddPermissionRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java
new file mode 100644
index 00000000..b99fb5f8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AuthorizeAccessRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(AuthorizeAccessRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java
new file mode 100644
index 00000000..fb18670d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CancelPendingActionsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CancelPendingActionsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java
new file mode 100644
index 00000000..a7e4630a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ChangeResourceParentsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ChangeResourceParentsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java
new file mode 100644
index 00000000..70892fac
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ChangeSequenceNumber extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ChangeSequenceNumber.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java
new file mode 100644
index 00000000..3a43cad4
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ChangesResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ChangesResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java
new file mode 100644
index 00000000..d892262f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CheckResourceIdsExistRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CheckResourceIdsExistRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java
new file mode 100644
index 00000000..cb5e8e65
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CloseContentsAndUpdateMetadataRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CloseContentsAndUpdateMetadataRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java
new file mode 100644
index 00000000..334c98d8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CloseContentsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CloseContentsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java
new file mode 100644
index 00000000..f59029b8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ContentsResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ContentsResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java
new file mode 100644
index 00000000..2812eb27
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ControlProgressRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ControlProgressRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java
new file mode 100644
index 00000000..46b5c419
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateContentsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CreateContentsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java
new file mode 100644
index 00000000..260283eb
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateFileIntentSenderRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CreateFileIntentSenderRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java
new file mode 100644
index 00000000..0e914da0
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateFileRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CreateFileRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java
new file mode 100644
index 00000000..b1e7e79c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateFolderRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CreateFolderRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java
new file mode 100644
index 00000000..562d7b37
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DeleteResourceRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(DeleteResourceRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java
new file mode 100644
index 00000000..c2aae15f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DeviceUsagePreferenceResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(DeviceUsagePreferenceResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java
new file mode 100644
index 00000000..abbebd38
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DisconnectRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(DisconnectRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java
new file mode 100644
index 00000000..52d2a5ec
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DownloadProgressResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(DownloadProgressResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java
new file mode 100644
index 00000000..7aaf7c63
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DriveIdResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(DriveIdResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java
new file mode 100644
index 00000000..3a96d337
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DrivePreferencesResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(DrivePreferencesResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java
new file mode 100644
index 00000000..40cb34d5
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DriveServiceResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(DriveServiceResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/EventResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/EventResponse.java
new file mode 100644
index 00000000..6e83957a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/EventResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class EventResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(EventResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java
new file mode 100644
index 00000000..5b8c5c14
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FetchThumbnailRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(FetchThumbnailRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java
new file mode 100644
index 00000000..99499f52
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FetchThumbnailResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(FetchThumbnailResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java
new file mode 100644
index 00000000..6d338d2e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetChangesRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(GetChangesRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java
new file mode 100644
index 00000000..cb56b4f5
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetDriveIdFromUniqueIdRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(GetDriveIdFromUniqueIdRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java
new file mode 100644
index 00000000..8f0e8c4f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetMetadataRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(GetMetadataRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java
new file mode 100644
index 00000000..d63fa651
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetPermissionsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(GetPermissionsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java
new file mode 100644
index 00000000..b407068a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetPermissionsResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(GetPermissionsResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java
new file mode 100644
index 00000000..a6413483
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ListEntriesResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ListEntriesResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java
new file mode 100644
index 00000000..b417a604
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ListParentsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ListParentsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java
new file mode 100644
index 00000000..e0c532cd
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ListParentsResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ListParentsResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java
new file mode 100644
index 00000000..fd326195
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LoadRealtimeRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(LoadRealtimeRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java
new file mode 100644
index 00000000..8d6ec093
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LoadRealtimeResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(LoadRealtimeResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java
new file mode 100644
index 00000000..61e1e656
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class MetadataResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(MetadataResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java
new file mode 100644
index 00000000..478a8800
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class OpenContentsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(OpenContentsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java
new file mode 100644
index 00000000..de7df066
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class OpenFileIntentSenderRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(OpenFileIntentSenderRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java
new file mode 100644
index 00000000..e9d152f5
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class RealtimeDocumentSyncRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(RealtimeDocumentSyncRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java
new file mode 100644
index 00000000..3a0a03c2
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class RemoveEventListenerRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(RemoveEventListenerRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java
new file mode 100644
index 00000000..8df27d1f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class RemovePermissionRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(RemovePermissionRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java
new file mode 100644
index 00000000..1db6cd07
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ResourceIdSetResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ResourceIdSetResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java
new file mode 100644
index 00000000..44a1bad1
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SetDrivePreferencesRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(SetDrivePreferencesRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java
new file mode 100644
index 00000000..cdb9827c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SetFileUploadPreferencesRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(SetFileUploadPreferencesRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java
new file mode 100644
index 00000000..084a1e7a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SetResourceParentsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(SetResourceParentsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java
new file mode 100644
index 00000000..767de36d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class StartStreamSession extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(StartStreamSession.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java
new file mode 100644
index 00000000..83c82274
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class StreamContentsRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(StreamContentsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java
new file mode 100644
index 00000000..38728f08
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class StringListResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(StringListResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java
new file mode 100644
index 00000000..aed23394
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SyncMoreResponse extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(SyncMoreResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java
new file mode 100644
index 00000000..bfb8f7be
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class TrashResourceRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(TrashResourceRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java
new file mode 100644
index 00000000..61cfed64
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UnsubscribeResourceRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(UnsubscribeResourceRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java
new file mode 100644
index 00000000..cce6e6ae
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UntrashResourceRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(UntrashResourceRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java
new file mode 100644
index 00000000..f71093f4
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UpdateMetadataRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(UpdateMetadataRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java
new file mode 100644
index 00000000..61587e3a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UpdatePermissionRequest extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(UpdatePermissionRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java b/play-services-api/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java
new file mode 100644
index 00000000..9752627e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.drive.metadata.internal;
+
+public class MetadataBundle {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/DataPoint.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/DataPoint.java
new file mode 100644
index 00000000..cc63ed7b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/fitness/data/DataPoint.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.fitness.data;
+
+public class DataPoint {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Device.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Device.java
new file mode 100644
index 00000000..9566ef23
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Device.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.fitness.data;
+
+public class Device {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Field.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Field.java
new file mode 100644
index 00000000..e0e56bb7
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Field.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.fitness.data;
+
+public class Field {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/fitness/data/Value.java b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Value.java
new file mode 100644
index 00000000..fc1b706c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/fitness/data/Value.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.fitness.data;
+
+public class Value {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.java b/play-services-api/src/main/java/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.java
new file mode 100644
index 00000000..f6716de3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013-2019 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.games.multiplayer.realtime;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.Parcelable.Creator;
+
+public final class RealTimeMessage implements Parcelable {
+ public static final int RELIABLE = 1;
+ public static final int UNRELIABLE = 0;
+
+ private final String mSenderParticipantId;
+ private final byte[] mMessageData;
+ private final int mIsReliable;
+
+ public RealTimeMessage(String senderParticipantId, byte[] messageData, int isReliable) {
+ this.mSenderParticipantId = senderParticipantId;
+ this.mMessageData = messageData.clone();
+ this.mIsReliable = isReliable;
+ }
+
+ private RealTimeMessage(Parcel parcel) {
+ this(parcel.readString(), parcel.createByteArray(), parcel.readInt());
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RealTimeMessage createFromParcel(Parcel in) {
+ return new RealTimeMessage(in);
+ }
+ @Override
+ public RealTimeMessage[] newArray(int size) {
+ return new RealTimeMessage[size];
+ }
+ };
+
+ public byte[] getMessageData() {
+ return this.mMessageData;
+ }
+
+ public String getSenderParticipantId() {
+ return this.mSenderParticipantId;
+ }
+
+ public boolean isReliable() {
+ return this.mIsReliable == RELIABLE;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int flag) {
+ parcel.writeString(this.mSenderParticipantId);
+ parcel.writeByteArray(this.mMessageData);
+ parcel.writeInt(this.mIsReliable);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/identity/accounts/api/AccountData.java b/play-services-api/src/main/java/com/google/android/gms/identity/accounts/api/AccountData.java
new file mode 100644
index 00000000..d909cbf3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/identity/accounts/api/AccountData.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.identity.accounts.api;
+
+public class AccountData {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/CountrySpecification.java b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/CountrySpecification.java
new file mode 100644
index 00000000..b9770e36
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/CountrySpecification.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.identity.intents.model;
+
+public class CountrySpecification {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/UserAddress.java b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/UserAddress.java
new file mode 100644
index 00000000..aa3959f2
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/UserAddress.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.identity.intents.model;
+
+public class UserAddress {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java
new file mode 100644
index 00000000..405f31d1
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps;
+
+import com.google.android.gms.maps.model.CameraPosition;
+import com.google.android.gms.maps.model.LatLngBounds;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public final class GoogleMapOptions extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode;
+ @SafeParceled(2)
+ private int zOrderOnTop;
+ @SafeParceled(3)
+ private boolean useViewLifecycleInFragment;
+ @SafeParceled(4)
+ private int mapType;
+ @SafeParceled(5)
+ private CameraPosition camera;
+ @SafeParceled(6)
+ private boolean zoomControlsEnabled;
+ @SafeParceled(7)
+ private boolean compassEnabled;
+ @SafeParceled(8)
+ private boolean scrollGesturesEnabled = true;
+ @SafeParceled(9)
+ private boolean zoomGesturesEnabled = true;
+ @SafeParceled(10)
+ private boolean tiltGesturesEnabled = true;
+ @SafeParceled(11)
+ private boolean rotateGesturesEnabled = true;
+ @SafeParceled(12)
+ private boolean liteMode = false;
+ @SafeParceled(14)
+ private boolean mapToobarEnabled = false;
+ @SafeParceled(15)
+ private boolean ambientEnabled = false;
+ @SafeParceled(16)
+ private float minZoom;
+ @SafeParceled(17)
+ private float maxZoom;
+ @SafeParceled(18)
+ private LatLngBounds boundsForCamera;
+ @SafeParceled(19)
+ private boolean scrollGesturesEnabledDuringRotateOrZoom = true;
+
+ public GoogleMapOptions() {
+ }
+
+ public Boolean getAmbientEnabled() {
+ return ambientEnabled;
+ }
+
+ public CameraPosition getCamera() {
+ return camera;
+ }
+
+ public Boolean getCompassEnabled() {
+ return compassEnabled;
+ }
+
+ public LatLngBounds getLatLngBoundsForCameraTarget() {
+ return boundsForCamera;
+ }
+
+ public Boolean getLiteMode() {
+ return liteMode;
+ }
+
+ public Boolean getMapToolbarEnabled() {
+ return mapToobarEnabled;
+ }
+
+ public int getMapType() {
+ return mapType;
+ }
+
+ public Float getMaxZoomPreference() {
+ return maxZoom;
+ }
+
+ public Float getMinZoomPreference() {
+ return minZoom;
+ }
+
+ public Boolean getRotateGesturesEnabled() {
+ return rotateGesturesEnabled;
+ }
+
+ public Boolean getScrollGesturesEnabled() {
+ return scrollGesturesEnabled;
+ }
+
+ public Boolean getScrollGesturesEnabledDuringRotateOrZoom() {
+ return scrollGesturesEnabledDuringRotateOrZoom;
+ }
+
+ public Boolean getTiltGesturesEnabled() {
+ return tiltGesturesEnabled;
+ }
+
+ public Boolean getUseViewLifecycleInFragment() {
+ return useViewLifecycleInFragment;
+ }
+
+ public Boolean getZOrderOnTop() {
+ return zOrderOnTop == 1; // TODO
+ }
+
+ public Boolean getZoomControlsEnabled() {
+ return zoomControlsEnabled;
+ }
+
+ public Boolean getZoomGesturesEnabled() {
+ return zoomGesturesEnabled;
+ }
+
+ @Deprecated
+ public boolean isCompassEnabled() {
+ return compassEnabled;
+ }
+
+ @Deprecated
+ public boolean isZoomControlsEnabled() {
+ return zoomControlsEnabled;
+ }
+
+ @Deprecated
+ public boolean isScrollGesturesEnabled() {
+ return scrollGesturesEnabled;
+ }
+
+ @Deprecated
+ public boolean isZoomGesturesEnabled() {
+ return zoomGesturesEnabled;
+ }
+
+ @Deprecated
+ public boolean isTiltGesturesEnabled() {
+ return tiltGesturesEnabled;
+ }
+
+ @Deprecated
+ public boolean isRotateGesturesEnabled() {
+ return rotateGesturesEnabled;
+ }
+
+
+ public static Creator CREATOR = new AutoCreator(GoogleMapOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java
new file mode 100644
index 00000000..e59c7935
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps;
+
+public class StreetViewPanoramaOptions {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/internal/Point.java b/play-services-api/src/main/java/com/google/android/gms/maps/internal/Point.java
new file mode 100644
index 00000000..9d31c133
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/internal/Point.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.internal;
+
+public class Point {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java
new file mode 100644
index 00000000..881c8abb
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+import org.microg.gms.common.PublicApi;
+
+/**
+ * Defines an image. For a marker, it can be used to set the image of the marker icon. For a ground
+ * overlay, it can be used to set the image to place on the surface of the earth.
+ */
+@PublicApi
+public class BitmapDescriptor {
+ private final IObjectWrapper remoteObject;
+
+ public BitmapDescriptor(IObjectWrapper remoteObject) {
+ this.remoteObject = remoteObject;
+ }
+
+ public IObjectWrapper getRemoteObject() {
+ return remoteObject;
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/CameraPosition.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/CameraPosition.java
new file mode 100644
index 00000000..c6fbe415
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/CameraPosition.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.Arrays;
+
+/**
+ * An immutable class that aggregates all camera position parameters.
+ */
+@PublicApi
+public final class CameraPosition extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ /**
+ * The location that the camera is pointing at.
+ */
+ @SafeParceled(2)
+ public final LatLng target;
+ /**
+ * Zoom level near the center of the screen.
+ * See {@link Builder#zoom(float)} for the definition of the camera's zoom level.
+ */
+ @SafeParceled(3)
+ public final float zoom;
+ /**
+ * The angle, in degrees, of the camera angle from the nadir (directly facing the Earth).
+ * See {@link Builder#tilt(float)} for details of restrictions on the range of values.
+ */
+ @SafeParceled(4)
+ public final float tilt;
+ /**
+ * Direction that the camera is pointing in, in degrees clockwise from north.
+ */
+ @SafeParceled(5)
+ public final float bearing;
+
+ /**
+ * This constructor is dirty setting the final fields to make the compiler happy.
+ * In fact, those are replaced by their real values later using SafeParcelUtil.
+ */
+ private CameraPosition() {
+ target = null;
+ zoom = tilt = bearing = 0;
+ }
+
+ /**
+ * Constructs a CameraPosition.
+ *
+ * @param target The target location to align with the center of the screen.
+ * @param zoom Zoom level at target. See {@link #zoom} for details of restrictions.
+ * @param tilt The camera angle, in degrees, from the nadir (directly down). See
+ * {@link #tilt} for details of restrictions.
+ * @param bearing Direction that the camera is pointing in, in degrees clockwise from north.
+ * This value will be normalized to be within 0 degrees inclusive and 360
+ * degrees exclusive.
+ * @throws NullPointerException if {@code target} is {@code null}
+ * @throws IllegalArgumentException if {@code tilt} is outside range of {@code 0} to {@code 90}
+ * degrees inclusive
+ */
+ public CameraPosition(LatLng target, float zoom, float tilt, float bearing)
+ throws NullPointerException, IllegalArgumentException {
+ if (target == null) {
+ throw new NullPointerException("null camera target");
+ }
+ this.target = target;
+ this.zoom = zoom;
+ if (tilt < 0 || 90 < tilt) {
+ throw new IllegalArgumentException("Tilt needs to be between 0 and 90 inclusive");
+ }
+ this.tilt = tilt;
+ if (bearing <= 0) {
+ bearing += 360;
+ }
+ this.bearing = bearing % 360;
+ }
+
+ /**
+ * Creates a builder for a camera position.
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Creates a builder for a camera position, initialized to a given position.
+ */
+ public static Builder builder(CameraPosition camera) {
+ return new Builder(camera);
+ }
+
+ /**
+ * Creates a CameraPostion from the attribute set
+ *
+ * @throws UnsupportedOperationException
+ */
+ public static CameraPosition createFromAttributes(Context context, AttributeSet attrs) {
+ return null; // TODO
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ CameraPosition that = (CameraPosition) o;
+
+ if (Float.compare(that.bearing, bearing) != 0)
+ return false;
+ if (Float.compare(that.tilt, tilt) != 0)
+ return false;
+ if (Float.compare(that.zoom, zoom) != 0)
+ return false;
+ if (!target.equals(that.target))
+ return false;
+
+ return true;
+ }
+
+ /**
+ * Constructs a CameraPosition pointed for a particular target and zoom level. The resultant
+ * bearing is North, and the viewing angle is perpendicular to the Earth's surface. i.e.,
+ * directly facing the Earth's surface, with the top of the screen pointing North.
+ *
+ * @param target The target location to align with the center of the screen.
+ * @param zoom Zoom level at target. See {@link Builder#zoom(float)} for details on the range
+ * the value will be clamped to. The larger the value the more zoomed in the
+ * camera is.
+ */
+ public static final CameraPosition fromLatLngZoom(LatLng target, float zoom) {
+ return builder().target(target).zoom(zoom).build();
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(new Object[] { target, zoom, tilt, bearing });
+ }
+
+ @Override
+ public String toString() {
+ return "CameraPosition{" +
+ "target=" + target +
+ ", zoom=" + zoom +
+ ", tilt=" + tilt +
+ ", bearing=" + bearing +
+ '}';
+ }
+
+ public static Creator CREATOR = new AutoCreator(CameraPosition.class);
+
+ /**
+ * Builds camera position.
+ */
+ public static final class Builder {
+ private LatLng target;
+ private float zoom;
+ private float tilt;
+ private float bearing;
+
+ public Builder() {
+ }
+
+ public Builder(CameraPosition previous) {
+ target = previous.target;
+ zoom = previous.zoom;
+ tilt = previous.tilt;
+ bearing = previous.bearing;
+ }
+
+ /**
+ * Sets the direction that the camera is pointing in, in degrees clockwise from north.
+ */
+ public Builder bearing(float bearing) {
+ this.bearing = bearing;
+ return this;
+ }
+
+ /**
+ * Builds a {@link CameraPosition}.
+ */
+ public CameraPosition build() {
+ return new CameraPosition(target, zoom, tilt, bearing);
+ }
+
+ /**
+ * Sets the location that the camera is pointing at.
+ */
+ public Builder target(LatLng target) {
+ this.target = target;
+ return this;
+ }
+
+ /**
+ * Sets the angle, in degrees, of the camera from the nadir (directly facing the Earth).
+ * When changing the camera position for a map, this value is restricted depending on the
+ * zoom level of the camera. The restrictions are as follows:
+ *
+ * - For zoom levels less than 10 the maximum is 30.
+ * - For zoom levels from 10 to 14 the maximum increases linearly from 30 to 45 (e.g. at
+ * zoom level 12, the maximum is 37.5).
+ * - For zoom levels from 14 to 15.5 the maximum increases linearly from 45 to 67.5.
+ * - For zoom levels greater than 15.5 the maximum is 67.5.
+ *
+ * The minimum is always 0 (directly down). If you specify a value outside this range and try to move the camera to this camera position it will be clamped to these bounds.
+ */
+ public Builder tilt(float tilt) {
+ this.tilt = tilt;
+ return this;
+ }
+
+ /**
+ * Sets the zoom level of the camera. Zoom level is defined such that at zoom level 0, the
+ * whole world is approximately 256dp wide (assuming that the camera is not tilted).
+ * Increasing the zoom level by 1 doubles the width of the world on the screen. Hence at
+ * zoom level N, the width of the world is approximately 256 * 2 N dp, i.e., at zoom level
+ * 2, the whole world is approximately 1024dp wide.
+ *
+ * When changing the camera position for a map, the zoom level of the camera is restricted
+ * to a certain range depending on various factors including location, map type and map
+ * size. Note that the camera zoom need not be an integer value.
+ */
+ public Builder zoom(float zoom) {
+ this.zoom = zoom;
+ return this;
+ }
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/CircleOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/CircleOptions.java
new file mode 100644
index 00000000..9f611060
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/CircleOptions.java
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import android.graphics.Color;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+/**
+ * Defines options for a Circle.
+ */
+@PublicApi
+public class CircleOptions extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode;
+ @SafeParceled(2)
+ private LatLng center;
+ @SafeParceled(3)
+ private double radius = 0;
+ @SafeParceled(4)
+ private float strokeWidth = 10;
+ @SafeParceled(5)
+ private int strokeColor = Color.BLACK;
+ @SafeParceled(6)
+ private int fillColor = Color.TRANSPARENT;
+ @SafeParceled(7)
+ private float zIndex = 0;
+ @SafeParceled(8)
+ private boolean visible = true;
+
+ /**
+ * Creates circle options.
+ */
+ public CircleOptions() {
+ }
+
+ /**
+ * Sets the center using a {@link LatLng}.
+ *
+ * The center must not be {@code null}.
+ *
+ * This method is mandatory because there is no default center.
+ *
+ * @param center The geographic center as a {@link LatLng}.
+ * @return this {@link CircleOptions} object
+ */
+ public CircleOptions center(LatLng center) {
+ this.center = center;
+ return this;
+ }
+
+ /**
+ * Sets the fill color.
+ *
+ * The fill color is the color inside the circle, in the integer format specified by
+ * {@link Color}. If TRANSPARENT is used then no fill is drawn.
+ *
+ * By default the fill color is transparent ({@code 0x00000000}).
+ *
+ * @param color color in the {@link Color} format
+ * @return this {@link CircleOptions} object
+ */
+ public CircleOptions fillColor(int color) {
+ this.fillColor = color;
+ return this;
+ }
+
+ /**
+ * Returns the center as a {@link LatLng}.
+ *
+ * @return The geographic center as a {@link LatLng}.
+ */
+ public LatLng getCenter() {
+ return center;
+ }
+
+ /**
+ * Returns the fill color.
+ *
+ * @return The color in the {@link Color} format.
+ */
+ public int getFillColor() {
+ return fillColor;
+ }
+
+ /**
+ * Returns the circle's radius, in meters.
+ *
+ * @return The radius in meters.
+ */
+ public double getRadius() {
+ return radius;
+ }
+
+ /**
+ * Returns the stroke color.
+ *
+ * @return The color in the {@link Color} format.
+ */
+ public int getStrokeColor() {
+ return strokeColor;
+ }
+
+ /**
+ * Returns the stroke width.
+ *
+ * @return The width in screen pixels.
+ */
+ public float getStrokeWidth() {
+ return strokeWidth;
+ }
+
+ /**
+ * Returns the zIndex.
+ *
+ * @return The zIndex value.
+ */
+ public float getZIndex() {
+ return zIndex;
+ }
+
+ /**
+ * Checks whether the circle is visible.
+ *
+ * @return {code true} if the circle is visible; {@code false} if it is invisible.
+ */
+ public boolean isVisible() {
+ return visible;
+ }
+
+ /**
+ * Sets the radius in meters.
+ *
+ * The radius must be zero or greater. The default radius is zero.
+ *
+ * @param radius radius in meters
+ * @return this {@link CircleOptions} object
+ */
+ public CircleOptions radius(double radius) {
+ this.radius = radius;
+ return this;
+ }
+
+ /**
+ * Sets the stroke color.
+ *
+ * The stroke color is the color of this circle's outline, in the integer format specified by
+ * {@link Color}. If TRANSPARENT is used then no outline is drawn.
+ *
+ * By default the stroke color is black ({@code 0xff000000}).
+ *
+ * @param color color in the {@link Color} format
+ * @return this {@link CircleOptions} object
+ */
+ public CircleOptions strokeColor(int color) {
+ this.strokeColor = color;
+ return this;
+ }
+
+ /**
+ * Sets the stroke width.
+ *
+ * The stroke width is the width (in screen pixels) of the circle's outline. It must be zero or
+ * greater. If it is zero then no outline is drawn.
+ *
+ * The default width is 10 pixels.
+ *
+ * @param width width in screen pixels
+ * @return this {@link CircleOptions} object
+ */
+ public CircleOptions strokeWidth(float width) {
+ this.strokeWidth = width;
+ return this;
+ }
+
+ /**
+ * Sets the visibility.
+ *
+ * If this circle is not visible then it is not drawn, but all other state is preserved.
+ *
+ * @param visible {@code false} to make this circle invisible
+ * @return this {@link CircleOptions} object
+ */
+ public CircleOptions visible(boolean visible) {
+ this.visible = visible;
+ return this;
+ }
+
+ /**
+ * Sets the zIndex.
+ *
+ * Overlays (such as circles) with higher zIndices are drawn above those with lower indices.
+ *
+ * By default the zIndex is {@code 0.0}.
+ *
+ * @param zIndex zIndex value
+ * @return this {@link CircleOptions} object
+ */
+ public CircleOptions zIndex(float zIndex) {
+ this.zIndex = zIndex;
+ return this;
+ }
+
+ public static Creator CREATOR = new AutoCreator(CircleOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java
new file mode 100644
index 00000000..b29afdf7
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import android.os.IBinder;
+
+import com.google.android.gms.dynamic.ObjectWrapper;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+/**
+ * Defines options for a ground overlay.
+ */
+@PublicApi
+public class GroundOverlayOptions extends AutoSafeParcelable {
+ /**
+ * Flag for when no dimension is specified for the height.
+ */
+ public static final float NO_DIMENSION = -1;
+
+ @SafeParceled(1)
+ private int versionCode;
+ @SafeParceled(2)
+ private IBinder image;
+ private BitmapDescriptor imageDescriptor;
+ @SafeParceled(3)
+ private LatLng location;
+ @SafeParceled(4)
+ private float width;
+ @SafeParceled(5)
+ private float height;
+ @SafeParceled(6)
+ private LatLngBounds bounds;
+ @SafeParceled(7)
+ private float bearing;
+ @SafeParceled(8)
+ private float zIndex;
+ @SafeParceled(9)
+ private boolean visible;
+ @SafeParceled(10)
+ private float transparency = 0;
+ @SafeParceled(11)
+ private float anchorU;
+ @SafeParceled(12)
+ private float anchorV;
+
+ /**
+ * Creates a new set of ground overlay options.
+ */
+ public GroundOverlayOptions() {
+ }
+
+ /**
+ * Specifies the anchor to be at a particular point in the image.
+ *
+ * The anchor specifies the point in the image that aligns with the ground overlay's location.
+ *
+ * The anchor point is specified in the continuous space [0.0, 1.0] x [0.0, 1.0], where (0, 0)
+ * is the top-left corner of the image, and (1, 1) is the bottom-right corner.
+ *
+ * @param u u-coordinate of the anchor, as a ratio of the image width (in the range [0, 1])
+ * @param v v-coordinate of the anchor, as a ratio of the image height (in the range [0, 1])
+ * @return this {@link GroundOverlayOptions} object with a new anchor set.
+ */
+ public GroundOverlayOptions anchor(float u, float v) {
+ this.anchorU = u;
+ this.anchorV = v;
+ return this;
+ }
+
+ /**
+ * Specifies the bearing of the ground overlay in degrees clockwise from north. The rotation is
+ * performed about the anchor point. If not specified, the default is 0 (i.e., up on the image
+ * points north).
+ *
+ * If a ground overlay with position set using {@link #positionFromBounds(LatLngBounds)} is
+ * rotated, its size will preserved and it will no longer be guaranteed to fit inside the
+ * bounds.
+ *
+ * @param bearing the bearing in degrees clockwise from north. Values outside the range
+ * [0, 360) will be normalized.
+ * @return this {@link GroundOverlayOptions} object with a new bearing set.
+ */
+ public GroundOverlayOptions bearing(float bearing) {
+ this.bearing = bearing;
+ return this;
+ }
+
+ /**
+ * Horizontal distance, normalized to [0, 1], of the anchor from the left edge.
+ *
+ * @return the u value of the anchor.
+ */
+ public float getAnchorU() {
+ return anchorU;
+ }
+
+ /**
+ * Vertical distance, normalized to [0, 1], of the anchor from the top edge.
+ *
+ * @return the v value of the anchor.
+ */
+ public float getAnchorV() {
+ return anchorV;
+ }
+
+ /**
+ * Gets the bearing set for this options object.
+ *
+ * @return the bearing of the ground overlay.
+ */
+ public float getBearing() {
+ return bearing;
+ }
+
+ /**
+ * Gets the bounds set for this options object.
+ *
+ * @return the bounds of the ground overlay. This will be {@code null} if the position was set
+ * using {@link #position(LatLng, float)} or {@link #position(LatLng, float, float)}
+ */
+ public LatLngBounds getBounds() {
+ return bounds;
+ }
+
+ /**
+ * Gets the height set for this options object.
+ *
+ * @return the height of the ground overlay.
+ */
+ public float getHeight() {
+ return height;
+ }
+
+ /**
+ * Gets the image set for this options object.
+ *
+ * @return the image of the ground overlay.
+ */
+ public BitmapDescriptor getImage() {
+ if (imageDescriptor == null && image != null) {
+ imageDescriptor = new BitmapDescriptor(ObjectWrapper.asInterface(image));
+ }
+ return imageDescriptor;
+ }
+
+ /**
+ * Gets the location set for this options object.
+ *
+ * @return the location to place the anchor of the ground overlay. This will be {@code null}
+ * if the position was set using {@link #positionFromBounds(LatLngBounds)}.
+ */
+ public LatLng getLocation() {
+ return location;
+ }
+
+ /**
+ * Gets the transparency set for this options object.
+ *
+ * @return the transparency of the ground overlay.
+ */
+ public float getTransparency() {
+ return transparency;
+ }
+
+ /**
+ * Gets the width set for this options object.
+ *
+ * @return the width of the ground overlay.
+ */
+ public float getWidth() {
+ return width;
+ }
+
+ /**
+ * Gets the zIndex set for this options object.
+ *
+ * @return the zIndex of the ground overlay.
+ */
+ public float getZIndex() {
+ return zIndex;
+ }
+
+ /**
+ * Specifies the image for this ground overlay.
+ *
+ * To load an image as a texture (which is used to draw the image on a map), it must be
+ * converted into an image with sides that are powers of two. This is so that a mipmap can be
+ * created in order to render the texture at various zoom levels - see
+ * Mipmap (Wikipedia) for details. Hence, to
+ * conserve memory by avoiding this conversion, it is advised that the dimensions of the image
+ * are powers of two.
+ *
+ * @param image the {@link BitmapDescriptor} to use for this ground overlay
+ * @return this {@link GroundOverlayOptions} object with a new image set.
+ */
+ public GroundOverlayOptions image(BitmapDescriptor image) {
+ this.imageDescriptor = image;
+ this.image = imageDescriptor.getRemoteObject().asBinder();
+ return this;
+ }
+
+ /**
+ * Gets the visibility setting for this options object.
+ *
+ * @return {@code true} if the ground overlay is to be visible; {@code false} if it is not.
+ */
+ public boolean isVisible() {
+ return visible;
+ }
+
+ /**
+ * Specifies the position for this ground overlay using an anchor point (a {@link LatLng}),
+ * width and height (both in meters). When rendered, the image will be scaled to fit the
+ * dimensions specified (i.e., its proportions will not necessarily be preserved).
+ *
+ * @param location the location on the map {@code LatLng} to which the anchor point in the
+ * given image will remain fixed. The anchor will remain fixed to the position
+ * on the ground when transformations are applied (e.g., setDimensions,
+ * setBearing, etc.).
+ * @param width the width of the overlay (in meters)
+ * @param height the height of the overlay (in meters)
+ * @return this {@link GroundOverlayOptions} object with a new position set.
+ * @throws IllegalArgumentException if anchor is null
+ * @throws IllegalArgumentException if width or height are negative
+ * @throws IllegalStateException if the position was already set using
+ * {@link #positionFromBounds(LatLngBounds)}
+ */
+ public GroundOverlayOptions position(LatLng location, float width, float height)
+ throws IllegalArgumentException, IllegalStateException {
+ position(location, width);
+ if (height < 0)
+ throw new IllegalArgumentException("height must not be negative");
+ this.height = height;
+ return this;
+ }
+
+ /**
+ * Specifies the position for this ground overlay using an anchor point (a {@link LatLng}) and
+ * the width (in meters). When rendered, the image will retain its proportions from the bitmap,
+ * i.e., the height will be calculated to preserve the original proportions of the image.
+ *
+ * @param location the location on the map {@link LatLng} to which the anchor point in the
+ * given image will remain fixed. The anchor will remain fixed to the position
+ * on the ground when transformations are applied (e.g., setDimensions,
+ * setBearing, etc.).
+ * @param width the width of the overlay (in meters). The height will be determined
+ * automatically based on the image proportions.
+ * @return this {@link GroundOverlayOptions} object with a new position set.
+ * @throws IllegalArgumentException if anchor is null
+ * @throws IllegalArgumentException if width is negative
+ * @throws IllegalStateException if the position was already set using
+ * {@link #positionFromBounds(LatLngBounds)}
+ */
+ public GroundOverlayOptions position(LatLng location, float width)
+ throws IllegalArgumentException, IllegalStateException {
+ if (location == null)
+ throw new IllegalArgumentException("location must not be null");
+ if (width < 0)
+ throw new IllegalArgumentException("width must not be negative");
+ if (bounds != null)
+ throw new IllegalStateException("Position already set using positionFromBounds()");
+ this.location = location;
+ this.width = width;
+ return this;
+ }
+
+ /**
+ * Specifies the position for this ground overlay. When rendered, the image will be scaled to
+ * fit the bounds (i.e., its proportions will not necessarily be preserved).
+ *
+ * @param bounds a {@link LatLngBounds} in which to place the ground overlay
+ * @return this {@link GroundOverlayOptions} object with a new position set.
+ * @throws IllegalStateException if the position was already set using
+ * {@link #position(LatLng, float)} or
+ * {@link #position(LatLng, float, float)}
+ */
+ public GroundOverlayOptions positionFromBounds(LatLngBounds bounds)
+ throws IllegalStateException {
+ if (location != null)
+ throw new IllegalStateException("Position already set using position()");
+ this.bounds = bounds;
+ return this;
+ }
+
+ /**
+ * Specifies the transparency of the ground overlay. The default transparency is {code 0}
+ * (opaque).
+ *
+ * @param transparency a float in the range {@code [0..1]} where {@code 0} means that the
+ * ground overlay is opaque and {code 1} means that the ground overlay is
+ * transparent
+ * @return this {@link GroundOverlayOptions} object with a new visibility setting.
+ * @throws IllegalArgumentException if the transparency is outside the range [0..1].
+ */
+ public GroundOverlayOptions transparency(float transparency) throws IllegalArgumentException {
+ if (transparency < 0 || transparency > 1)
+ throw new IllegalArgumentException("transparency must be in range [0..1]");
+ this.transparency = transparency;
+ return this;
+ }
+
+ /**
+ * Specifies the visibility for the ground overlay. The default visibility is {@code true}.
+ *
+ * @return this {@link GroundOverlayOptions} object with a new visibility setting.
+ */
+ public GroundOverlayOptions visible(boolean visible) {
+ this.visible = visible;
+ return this;
+ }
+
+ /**
+ * Specifies the ground overlay's zIndex, i.e., the order in which it will be drawn. See the
+ * documentation at the top of this class for more information about zIndex.
+ *
+ * @return this {@link GroundOverlayOptions} object with a new zIndex set.
+ */
+ public GroundOverlayOptions zIndex(float zIndex) {
+ this.zIndex = zIndex;
+ return this;
+ }
+
+ public static Creator CREATOR = new AutoCreator(GroundOverlayOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java
new file mode 100644
index 00000000..a950cd34
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import android.os.IBinder;
+import com.google.android.gms.dynamic.ObjectWrapper;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+@PublicApi
+public class MarkerOptions extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ private LatLng position;
+ @SafeParceled(3)
+ private String title;
+ @SafeParceled(4)
+ private String snippet;
+ /**
+ * This is a IBinder to the remote BitmapDescriptor created using BitmapDescriptorFactory
+ */
+ @SafeParceled(5)
+ private IBinder iconBinder;
+ private BitmapDescriptor icon;
+ @SafeParceled(6)
+ private float anchorU = 0.5F;
+ @SafeParceled(7)
+ private float anchorV = 1F;
+ @SafeParceled(8)
+ private boolean draggable;
+ @SafeParceled(9)
+ private boolean visible;
+ @SafeParceled(10)
+ private boolean flat;
+ @SafeParceled(11)
+ private float rotation = 0F;
+ @SafeParceled(12)
+ private float infoWindowAnchorU = 0F;
+ @SafeParceled(13)
+ private float infoWindowAnchorV = 1F;
+ @SafeParceled(14)
+ private float alpha = 1F;
+ @SafeParceled(15)
+ private float zIndex = 0F;
+
+ /**
+ * Creates a new set of marker options.
+ */
+ public MarkerOptions() {
+ }
+
+ /**
+ * Sets the alpha (opacity) of the marker. This is a value from 0 to 1, where 0 means the
+ * marker is completely transparent and 1 means the marker is completely opaque.
+ *
+ * @return the object for which the method was called, with the new alpha set.
+ */
+ public MarkerOptions alpha(float alpha) {
+ this.alpha = alpha;
+ return this;
+ }
+
+ /**
+ * Specifies the anchor to be at a particular point in the marker image.
+ *
+ * The anchor specifies the point in the icon image that is anchored to the marker's position
+ * on the Earth's surface.
+ *
+ * The anchor point is specified in the continuous space [0.0, 1.0] x [0.0, 1.0], where (0, 0)
+ * is the top-left corner of the image, and (1, 1) is the bottom-right corner. The anchoring
+ * point in a W x H image is the nearest discrete grid point in a (W + 1) x (H + 1) grid,
+ * obtained by scaling the then rounding. For example, in a 4 x 2 image, the anchor point
+ * (0.7, 0.6) resolves to the grid point at (3, 1).
+ *
+ * @param u u-coordinate of the anchor, as a ratio of the image width (in the range [0, 1])
+ * @param v v-coordinate of the anchor, as a ratio of the image height (in the range [0, 1])
+ * @return the object for which the method was called, with the new anchor set.
+ */
+ public MarkerOptions anchor(float u, float v) {
+ this.anchorU = u;
+ this.anchorV = v;
+ return this;
+ }
+
+ /**
+ * Sets the draggability for the marker.
+ *
+ * @return the object for which the method was called, with the new draggable state set.
+ */
+ public MarkerOptions draggable(boolean draggable) {
+ this.draggable = draggable;
+ return this;
+ }
+
+ /**
+ * Sets whether this marker should be flat against the map true or a billboard facing the
+ * camera false. If the marker is flat against the map, it will remain stuck to the map as the
+ * camera rotates and tilts but will still remain the same size as the camera zooms, unlike a
+ * GroundOverlay. If the marker is a billboard, it will always be drawn facing the camera
+ * and will rotate and tilt with the camera. The default value is false.
+ *
+ * @return the object for which the method was called, with the new flat state set.
+ */
+ public MarkerOptions flat(boolean flat) {
+ this.flat = flat;
+ return this;
+ }
+
+ /**
+ * Gets the alpha set for this MarkerOptions object.
+ *
+ * @return the alpha of the marker in the range [0, 1].
+ */
+ public float getAlpha() {
+ return alpha;
+ }
+
+ /**
+ * Horizontal distance, normalized to [0, 1], of the anchor from the left edge.
+ *
+ * @return the u value of the anchor.
+ */
+ public float getAnchorU() {
+ return anchorU;
+ }
+
+ /**
+ * Vertical distance, normalized to [0, 1], of the anchor from the top edge.
+ *
+ * @return the v value of the anchor.
+ */
+ public float getAnchorV() {
+ return anchorV;
+ }
+
+ /**
+ * Gets the custom icon set for this MarkerOptions object.
+ *
+ * @return An {@link BitmapDescriptor} representing the custom icon, or {@code null} if no
+ * custom icon is set.
+ */
+ public BitmapDescriptor getIcon() {
+ if (icon == null && iconBinder != null) {
+ icon = new BitmapDescriptor(ObjectWrapper.asInterface(iconBinder));
+ }
+ return icon;
+ }
+
+ /**
+ * Horizontal distance, normalized to [0, 1], of the info window anchor from the left edge.
+ *
+ * @return the u value of the info window anchor.
+ */
+ public float getInfoWindowAnchorU() {
+ return infoWindowAnchorU;
+ }
+
+ /**
+ * Vertical distance, normalized to [0, 1], of the info window anchor from the top edge.
+ *
+ * @return the v value of the info window anchor.
+ */
+ public float getInfoWindowAnchorV() {
+ return infoWindowAnchorV;
+ }
+
+ /**
+ * Returns the position set for this MarkerOptions object.
+ *
+ * @return A {@link LatLng} object specifying the marker's current position.
+ */
+ public LatLng getPosition() {
+ return position;
+ }
+
+ /**
+ * Gets the rotation set for this MarkerOptions object.
+ *
+ * @return the rotation of the marker in degrees clockwise from the default position.
+ */
+ public float getRotation() {
+ return rotation;
+ }
+
+ /**
+ * Gets the snippet set for this MarkerOptions object.
+ *
+ * @return A string containing the marker's snippet.
+ */
+ public String getSnippet() {
+ return snippet;
+ }
+
+ /**
+ * Gets the title set for this MarkerOptions object.
+ *
+ * @return A string containing the marker's title.
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * Sets the icon for the marker.
+ *
+ * @param icon if null, the default marker is used.
+ * @return the object for which the method was called, with the new icon set.
+ */
+ public MarkerOptions icon(BitmapDescriptor icon) {
+ this.icon = icon;
+ this.iconBinder = icon == null ? null : icon.getRemoteObject().asBinder();
+ return this;
+ }
+
+ /**
+ * Specifies the anchor point of the info window on the marker image. This is specified in the
+ * same coordinate system as the anchor. See {@link MarkerOptions#anchor(float, float)} for
+ * more details. The default is the top middle of the image.
+ *
+ * @param u u-coordinate of the info window anchor, as a ratio of the image width (in the range [0, 1])
+ * @param v v-coordinate of the info window anchor, as a ratio of the image height (in the range [0, 1])
+ * @return the object for which the method was called, with the new info window anchor set.
+ */
+ public MarkerOptions infoWindowAnchor(float u, float v) {
+ this.infoWindowAnchorU = u;
+ this.infoWindowAnchorV = v;
+ return this;
+ }
+
+ /**
+ * Gets the draggability setting for this MarkerOptions object.
+ *
+ * @return {@code true} if the marker is draggable; otherwise, returns {@code false}.
+ */
+ public boolean isDraggable() {
+ return draggable;
+ }
+
+ /**
+ * Gets the flat setting for this MarkerOptions object.
+ *
+ * @return {@code true} if the marker is flat against the map; {@code false} if the marker
+ * should face the camera.
+ */
+ public boolean isFlat() {
+ return flat;
+ }
+
+ /**
+ * Gets the visibility setting for this MarkerOptions object.
+ *
+ * @return {@code true} if the marker is visible; otherwise, returns {@code false}.
+ */
+ public boolean isVisible() {
+ return visible;
+ }
+
+ /**
+ * Sets the location for the marker.
+ *
+ * @return the object for which the method was called, with the new position set.
+ */
+ public MarkerOptions position(LatLng position) {
+ this.position = position;
+ return this;
+ }
+
+ /**
+ * Sets the rotation of the marker in degrees clockwise about the marker's anchor point. The
+ * axis of rotation is perpendicular to the marker. A rotation of 0 corresponds to the default
+ * position of the marker. When the marker is flat on the map, the default position is North
+ * aligned and the rotation is such that the marker always remains flat on the map. When the
+ * marker is a billboard, the default position is pointing up and the rotation is such that
+ * the marker is always facing the camera. The default value is 0.
+ *
+ * @return the object for which the method was called, with the new rotation set.
+ */
+ public MarkerOptions rotation(float rotation) {
+ this.rotation = rotation;
+ return this;
+ }
+
+ /**
+ * Sets the snippet for the marker.
+ *
+ * @return the object for which the method was called, with the new snippet set.
+ */
+ public MarkerOptions snippet(String snippet) {
+ this.snippet = snippet;
+ return this;
+ }
+
+ /**
+ * Sets the title for the marker.
+ *
+ * @return the object for which the method was called, with the new title set.
+ */
+ public MarkerOptions title(String title) {
+ this.title = title;
+ return this;
+ }
+
+ /**
+ * Sets the visibility for the marker.
+ *
+ * @return the object for which the method was called, with the new visibility state set.
+ */
+ public MarkerOptions visible(boolean visible) {
+ this.visible = visible;
+ return this;
+ }
+
+ public MarkerOptions zIndex(float zIndex) {
+ this.zIndex = zIndex;
+ return this;
+ }
+
+ public float getZIndex() {
+ return this.zIndex;
+ }
+
+ public static Creator CREATOR = new AutoCreator(MarkerOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java
new file mode 100644
index 00000000..94fca7e1
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import android.graphics.Color;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Defines options for a polygon.
+ * TODO: Docs
+ */
+@PublicApi
+public class PolygonOptions extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(value = 2, subClass = LatLng.class)
+ private List points = new ArrayList();
+ @SafeParceled(value = 3, subClass = LatLng.class, useClassLoader = true)
+ private List> holes = new ArrayList>();
+ @SafeParceled(4)
+ private float strokeWidth = 10;
+ @SafeParceled(5)
+ private int strokeColor = Color.BLACK;
+ @SafeParceled(6)
+ private int fillColor = Color.TRANSPARENT;
+ @SafeParceled(7)
+ private float zIndex = 0;
+ @SafeParceled(8)
+ private boolean visible = true;
+ @SafeParceled(9)
+ private boolean geodesic = false;
+
+ /**
+ * Creates polygon options.
+ */
+ public PolygonOptions() {
+ }
+
+ public PolygonOptions add(LatLng point) {
+ points.add(point);
+ return this;
+ }
+
+ public PolygonOptions add(LatLng... points) {
+ for (LatLng point : points) {
+ this.points.add(point);
+ }
+ return this;
+ }
+
+ public PolygonOptions add(Iterable points) {
+ for (LatLng point : points) {
+ this.points.add(point);
+ }
+ return this;
+ }
+
+ public PolygonOptions addHole(Iterable points) {
+ ArrayList hole = new ArrayList();
+ for (LatLng point : points) {
+ hole.add(point);
+ }
+ holes.add(hole);
+ return this;
+ }
+
+ public PolygonOptions fillColor(int color) {
+ this.fillColor = color;
+ return this;
+ }
+
+ public PolygonOptions geodesic(boolean geodesic) {
+ this.geodesic = geodesic;
+ return this;
+ }
+
+ public int getFillColor() {
+ return fillColor;
+ }
+
+ public List> getHoles() {
+ return holes;
+ }
+
+ public List getPoints() {
+ return points;
+ }
+
+ public int getStrokeColor() {
+ return strokeColor;
+ }
+
+ public float getStrokeWidth() {
+ return strokeWidth;
+ }
+
+ public float getZIndex() {
+ return zIndex;
+ }
+
+ public boolean isGeodesic() {
+ return geodesic;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public PolygonOptions strokeColor(int color) {
+ this.strokeColor = color;
+ return this;
+ }
+
+ public PolygonOptions strokeWidth(float width) {
+ this.strokeWidth = width;
+ return this;
+ }
+
+ public PolygonOptions visible(boolean visible) {
+ this.visible = visible;
+ return this;
+ }
+
+ public PolygonOptions zIndex(float zIndex) {
+ this.zIndex = zIndex;
+ return this;
+ }
+
+ public static Creator CREATOR = new AutoCreator(PolygonOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java
new file mode 100644
index 00000000..d9a9dc5b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import android.graphics.Color;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Defines options for a polyline.
+ * TODO
+ */
+@PublicApi
+public class PolylineOptions extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(value = 2, subClass = LatLng.class)
+ private List points = new ArrayList();
+ @SafeParceled(3)
+ private float width = 10;
+ @SafeParceled(4)
+ private int color = Color.BLACK;
+ @SafeParceled(5)
+ private float zIndex = 0;
+ @SafeParceled(6)
+ private boolean visible = true;
+ @SafeParceled(7)
+ private boolean geodesic = false;
+
+ public PolylineOptions() {
+ }
+
+ public PolylineOptions add(LatLng point) {
+ points.add(point);
+ return this;
+ }
+
+ public PolylineOptions add(LatLng... points) {
+ for (LatLng point : points) {
+ this.points.add(point);
+ }
+ return this;
+ }
+
+ public PolylineOptions addAll(Iterable points) {
+ for (LatLng point : points) {
+ this.points.add(point);
+ }
+ return this;
+ }
+
+ public PolylineOptions color(int color) {
+ this.color = color;
+ return this;
+ }
+
+ public PolylineOptions geodesic(boolean geodesic) {
+ this.geodesic = geodesic;
+ return this;
+ }
+
+ public int getColor() {
+ return color;
+ }
+
+ public List getPoints() {
+ return points;
+ }
+
+ public float getWidth() {
+ return width;
+ }
+
+ public float getZIndex() {
+ return zIndex;
+ }
+
+ public boolean isGeodesic() {
+ return geodesic;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public PolylineOptions visible(boolean visible) {
+ this.visible = visible;
+ return this;
+ }
+
+ public PolylineOptions width(float width) {
+ this.width = width;
+ return this;
+ }
+
+ public PolylineOptions zIndex(float zIndex) {
+ this.zIndex = zIndex;
+ return this;
+ }
+
+ public static Creator CREATOR = new AutoCreator(PolylineOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java
new file mode 100644
index 00000000..2737de9d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import org.microg.gms.common.PublicApi;
+
+@PublicApi
+public class StreetViewPanoramaCamera {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java
new file mode 100644
index 00000000..2dfcbd03
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import org.microg.gms.common.PublicApi;
+
+@PublicApi
+public class StreetViewPanoramaLink {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java
new file mode 100644
index 00000000..b1254689
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import org.microg.gms.common.PublicApi;
+
+@PublicApi
+public class StreetViewPanoramaLocation {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java
new file mode 100644
index 00000000..fa7f657f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import org.microg.gms.common.PublicApi;
+
+@PublicApi
+public class StreetViewPanoramaOrientation {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/Tile.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/Tile.java
new file mode 100644
index 00000000..3f0deea5
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/Tile.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+/**
+ * Contains information about a Tile that is returned by a {@link TileProvider}.
+ * TODO SafeParceled
+ */
+@PublicApi
+public class Tile extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ /**
+ * The width of the image encoded by {@link #data} in pixels.
+ */
+ @SafeParceled(2)
+ public final int width;
+ /**
+ * The height of the image encoded by {@link #data} in pixels.
+ */
+ @SafeParceled(3)
+ public final int height;
+ /**
+ * A byte array containing the image data. The image will be created from this data by calling
+ * {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}.
+ */
+ @SafeParceled(4)
+ public final byte[] data;
+
+ private Tile() {
+ width = height = 0;
+ data = null;
+ }
+
+ /**
+ * Constructs a {@link Tile}.
+ *
+ * @param width the width of the image in pixels
+ * @param height the height of the image in pixels
+ * @param data A byte array containing the image data. The image will be created from this
+ * data by calling
+ * {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}.
+ */
+ public Tile(int width, int height, byte[] data) {
+ this.width = width;
+ this.height = height;
+ this.data = data;
+ }
+
+ public static Creator CREATOR = new AutoCreator(Tile.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java
new file mode 100644
index 00000000..1fdffe36
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.google.android.gms.maps.model.internal.ITileProviderDelegate;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+/**
+ * Defines options for a TileOverlay.
+ */
+@PublicApi
+public class TileOverlayOptions extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+ /**
+ * This is a IBinder to the {@link #tileProvider}, built using {@link ITileProviderDelegate}.
+ */
+ @SafeParceled(2)
+ private IBinder tileProviderBinder;
+ private TileProvider tileProvider;
+ @SafeParceled(3)
+ private boolean visible = true;
+ @SafeParceled(4)
+ private float zIndex;
+ @SafeParceled(5)
+ private boolean fadeIn = true;
+
+ /**
+ * Creates a new set of tile overlay options.
+ */
+ public TileOverlayOptions() {
+ }
+
+ /**
+ * Specifies whether the tiles should fade in. The default is {@code true}.
+ *
+ * @return this {@link TileOverlayOptions} object with a new fadeIn setting.
+ */
+ public TileOverlayOptions fadeIn(boolean fadeIn) {
+ this.fadeIn = fadeIn;
+ return this;
+ }
+
+ /**
+ * Gets whether the tiles should fade in.
+ *
+ * @return {@code true} if the tiles are to fade in; {@code false} if it is not.
+ */
+ public boolean getFadeIn() {
+ return fadeIn;
+ }
+
+ /**
+ * Gets the tile provider set for this {@link TileOverlayOptions} object.
+ *
+ * @return the {@link TileProvider} of the tile overlay.
+ */
+ public TileProvider getTileProvider() {
+ return tileProvider;
+ }
+
+ /**
+ * Gets the zIndex set for this {@link TileOverlayOptions} object.
+ *
+ * @return the zIndex of the tile overlay.
+ */
+ public float getZIndex() {
+ return zIndex;
+ }
+
+ /**
+ * Gets the visibility setting for this {@link TileOverlayOptions} object.
+ *
+ * @return {@code true} if the tile overlay is to be visible; {@code false} if it is not.
+ */
+ public boolean isVisible() {
+ return visible;
+ }
+
+ /**
+ * Specifies the tile provider to use for this tile overlay.
+ *
+ * @param tileProvider the {@link TileProvider} to use for this tile overlay.
+ * @return the object for which the method was called, with the new tile provider set.
+ */
+ public TileOverlayOptions tileProvider(final TileProvider tileProvider) {
+ this.tileProvider = tileProvider;
+ this.tileProviderBinder = new ITileProviderDelegate.Stub() {
+ @Override
+ public Tile getTile(int x, int y, int zoom) throws RemoteException {
+ return tileProvider.getTile(x, y, zoom);
+ }
+ };
+ return this;
+ }
+
+ /**
+ * Specifies the visibility for the tile overlay. The default visibility is {@code true}.
+ *
+ * @return this {@link TileOverlayOptions} object with a new visibility setting.
+ */
+ public TileOverlayOptions visible(boolean visible) {
+ this.visible = visible;
+ return this;
+ }
+
+ /**
+ * Specifies the tile overlay's zIndex, i.e., the order in which it will be drawn where
+ * overlays with larger values are drawn above those with lower values. See the documentation
+ * at the top of this class for more information about zIndex.
+ *
+ * @return this {@link TileOverlayOptions} object with a new zIndex set.
+ */
+ public TileOverlayOptions zIndex(float zIndex) {
+ this.zIndex = zIndex;
+ return this;
+ }
+
+ public static Creator CREATOR = new AutoCreator(TileOverlayOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/TileProvider.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/TileProvider.java
new file mode 100644
index 00000000..9a1e930d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/TileProvider.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+/**
+ * An interface for a class that provides the tile images for a TileOverlay. For information about
+ * the tile coordinate system, see TileOverlay.
+ *
+ * Calls to methods in this interface might be made from multiple threads so implementations of
+ * this interface must be threadsafe.
+ */
+public interface TileProvider {
+ public static final Tile NO_TILE = new Tile(-1, -1, null);
+
+ /**
+ * Returns the tile to be used for this tile coordinate.
+ *
+ * @param x The x coordinate of the tile. This will be in the range [0, 2^(zoom - 1)] inclusive.
+ * @param y The y coordinate of the tile. This will be in the range [0, 2^(zoom - 1)] inclusive.
+ * @param zoom The zoom level of the tile.
+ * @return the {@link Tile} to be used for this tile coordinate. If you do not wish to provide
+ * a tile for this tile coordinate, return {@link #NO_TILE}. If the tile could not be found at
+ * this point in time, return null and further requests might be made with an exponential
+ * backoff.
+ */
+ public Tile getTile(int x, int y, int zoom);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java
new file mode 100644
index 00000000..93c4d813
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.maps.model;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+@PublicApi
+public class VisibleRegion extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode;
+ @SafeParceled(2)
+ private LatLng nearLeft;
+ @SafeParceled(3)
+ private LatLng nearRight;
+ @SafeParceled(4)
+ private LatLng farLeft;
+ @SafeParceled(5)
+ private LatLng farRight;
+ @SafeParceled(6)
+ private LatLngBounds bounds;
+
+ private VisibleRegion() {
+ }
+
+ public VisibleRegion(int versionCode, LatLng nearLeft, LatLng nearRight, LatLng farLeft,
+ LatLng farRight, LatLngBounds bounds) {
+ this.versionCode = versionCode;
+ this.nearLeft = nearLeft;
+ this.nearRight = nearRight;
+ this.farLeft = farLeft;
+ this.farRight = farRight;
+ this.bounds = bounds;
+ }
+
+ public VisibleRegion(LatLng nearLeft, LatLng nearRight, LatLng farLeft, LatLng farRight,
+ LatLngBounds bounds) {
+ this(1, nearLeft, nearRight, farLeft, farRight, bounds);
+ }
+
+ /**
+ * This is assuming that the visible region matches the bounds, which means that it's a north
+ * orientated top view
+ */
+ public VisibleRegion(LatLngBounds bounds) {
+ this(bounds.southwest, new LatLng(bounds.southwest.latitude, bounds.northeast.longitude),
+ new LatLng(bounds.northeast.latitude, bounds.southwest.longitude), bounds.northeast,
+ bounds);
+ }
+
+ public static Creator CREATOR = new AutoCreator(VisibleRegion.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/package-info.java b/play-services-api/src/main/java/com/google/android/gms/maps/model/package-info.java
new file mode 100644
index 00000000..8c40c393
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/maps/model/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Contains the Google Maps Android API model classes.
+ */
+package com.google.android.gms.maps.model;
diff --git a/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java b/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java
new file mode 100644
index 00000000..61180fd4
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.people.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class ParcelableLoadImageOptions extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode = 1;
+
+ @SafeParceled(1)
+ public int imageSize;
+
+ @SafeParceled(2)
+ public int avatarOptions;
+
+ @SafeParceled(3)
+ public boolean useLargePictureForCp2Images;
+
+ public static final Creator CREATOR = new AutoCreator(ParcelableLoadImageOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java b/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java
new file mode 100644
index 00000000..814a6574
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.people.model;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AccountMetadata extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 2;
+
+ @SafeParceled(2)
+ public boolean hasGooglePlus = true;
+
+ @SafeParceled(3)
+ public boolean hasFeature2 = true;
+
+ @SafeParceled(4)
+ public boolean hasFeature3 = true;
+
+ @SafeParceled(5)
+ public boolean hasFeature4 = true;
+
+ public static Creator CREATOR = new AutoCreator(AccountMetadata.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java b/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java
new file mode 100644
index 00000000..b03af386
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.people.model;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AvatarReference extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode;
+
+ @SafeParceled(1)
+ public int source;
+
+ @SafeParceled(2)
+ public String location;
+
+ public static final Creator CREATOR = new AutoCreator(AvatarReference.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java
new file mode 100644
index 00000000..791c19b8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.playlog.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.Date;
+
+public class LogEvent extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+
+ @SafeParceled(2)
+ public final long eventTime;
+
+ @SafeParceled(3)
+ public final String tag;
+
+ @SafeParceled(4)
+ public final byte[] data;
+
+ private LogEvent() {
+ eventTime = -1;
+ tag = null;
+ data = null;
+ }
+
+ @Override
+ public String toString() {
+ return "LogEvent{" +
+ "eventTime=" + new Date(eventTime) +
+ ", tag='" + tag + '\'' +
+ ", data=" + (data == null ? "null" : ('\'' + new String(data) + '\'')) +
+ '}';
+ }
+
+ public static Creator CREATOR = new AutoCreator(LogEvent.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java
new file mode 100644
index 00000000..ca31fb9b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.playlog.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class PlayLoggerContext extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+
+ @SafeParceled(2)
+ public final String packageName;
+
+ @SafeParceled(3)
+ public final int packageVersionCode;
+
+ @SafeParceled(4)
+ public final int logSource;
+
+ @SafeParceled(5)
+ public final String uploadAccount;
+
+ @SafeParceled(6)
+ public final int loggingId;
+
+ @SafeParceled(7)
+ public final boolean logAndroidId;
+
+ @SafeParceled(8)
+ public final String logSourceName;
+
+ @SafeParceled(9)
+ public final boolean isAnonymous;
+
+ @SafeParceled(10)
+ public final int qosTier;
+
+ private PlayLoggerContext() {
+ packageName = uploadAccount = logSourceName = null;
+ qosTier = packageVersionCode = logSource = loggingId = -1;
+ isAnonymous = logAndroidId = false;
+ }
+
+ public PlayLoggerContext(String packageName, int packageVersionCode, int logSource, String uploadAccount, int loggingId, boolean logAndroidId) {
+ this.packageName = packageName;
+ this.packageVersionCode = packageVersionCode;
+ this.logSource = logSource;
+ this.logSourceName = null;
+ this.uploadAccount = uploadAccount;
+ this.loggingId = loggingId;
+ this.logAndroidId = logAndroidId;
+ this.isAnonymous = false;
+ this.qosTier = 0;
+ }
+
+ public PlayLoggerContext(String packageName, int packageVersionCode, int logSource, String logSourceName, String uploadAccount, int loggingId, boolean isAnonymous, int qosTier) {
+ this.packageName = packageName;
+ this.packageVersionCode = packageVersionCode;
+ this.logSource = logSource;
+ this.logSourceName = logSourceName;
+ this.uploadAccount = uploadAccount;
+ this.loggingId = loggingId;
+ this.logAndroidId = !isAnonymous;
+ this.isAnonymous = isAnonymous;
+ this.qosTier = qosTier;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("PlayLoggerContext[").append(versionCode);
+ sb.append(", package=").append(packageName);
+ sb.append(", packageVersionCode=").append(packageVersionCode);
+ sb.append(", logSource=").append(logSource);
+ sb.append(", uploadAccount=").append(uploadAccount);
+ sb.append(", loggingId=").append(loggingId);
+ sb.append(", logAndroidId=").append(logAndroidId);
+ sb.append(", logSourceName=").append(logSourceName);
+ sb.append(", isAnonymous=").append(isAnonymous);
+ sb.append(", qosTier=").append(qosTier);
+ sb.append(']');
+ return sb.toString();
+ }
+
+ public static Creator CREATOR = new AutoCreator(PlayLoggerContext.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusCommonExtras.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusCommonExtras.java
new file mode 100644
index 00000000..72d908e3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusCommonExtras.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.internal;
+
+public class PlusCommonExtras {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusSession.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusSession.java
new file mode 100644
index 00000000..b5b3f8a0
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusSession.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.internal;
+
+public class PlusSession {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsRequest.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsRequest.java
new file mode 100644
index 00000000..aee4d0b6
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsRequest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class CardsRequest {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsResponse.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsResponse.java
new file mode 100644
index 00000000..bf6c9670
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsResponse.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class CardsResponse {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesRequest.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesRequest.java
new file mode 100644
index 00000000..c45512d4
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesRequest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class PeopleForProfilesRequest {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesResponse.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesResponse.java
new file mode 100644
index 00000000..4c108aa5
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesResponse.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class PeopleForProfilesResponse {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Comment.java b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Comment.java
new file mode 100644
index 00000000..37a215c0
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Comment.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.model.posts;
+
+public class Comment {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Post.java b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Post.java
new file mode 100644
index 00000000..3b9c3466
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Post.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.model.posts;
+
+public class Post {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Settings.java b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Settings.java
new file mode 100644
index 00000000..a7045a3c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Settings.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.plus.model.posts;
+
+public class Settings {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/AccountState.java b/play-services-api/src/main/java/com/google/android/gms/reminders/AccountState.java
new file mode 100644
index 00000000..4ad0101f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/AccountState.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AccountState extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(AccountState.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/CreateReminderOptionsInternal.java b/play-services-api/src/main/java/com/google/android/gms/reminders/CreateReminderOptionsInternal.java
new file mode 100644
index 00000000..cc0d81c6
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/CreateReminderOptionsInternal.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateReminderOptionsInternal extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CreateReminderOptionsInternal.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/LoadRemindersOptions.java b/play-services-api/src/main/java/com/google/android/gms/reminders/LoadRemindersOptions.java
new file mode 100644
index 00000000..fd69c55a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/LoadRemindersOptions.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LoadRemindersOptions extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(LoadRemindersOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/ReindexDueDatesOptions.java b/play-services-api/src/main/java/com/google/android/gms/reminders/ReindexDueDatesOptions.java
new file mode 100644
index 00000000..e6a4eba3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/ReindexDueDatesOptions.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013-2017 microG Project Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ReindexDueDatesOptions extends AutoSafeParcelable {
+ public static Creator