diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fff35a132d1fa84cf10b219955e9a16a28712a6d..d9088fdec45087be213d820bb4e44033b75c54ee 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,6 +2,7 @@ image: "registry.gitlab.e.foundation:5000/e/apps/docker-android-apps-cicd:latest
stages:
- build
+- publish
variables:
GIT_SUBMODULE_STRATEGY: recursive
@@ -31,7 +32,20 @@ build:
- echo mapbox.enabled true >> local.properties
- export TERM=dumb
- export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Xmx4096m"
- - ./gradlew assemble
+ - ./gradlew assembleRelease
artifacts:
paths:
- play-services-core/build/outputs/apk/
+
+publish:
+ stage: publish
+ only:
+ - tags # Run only on tags
+ except:
+ - branches # Do not run this job on a branch
+ script:
+ - |
+ curl --fail --output "/dev/null" --silent --show-error \
+ --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: ${PUBLICATION_TOKEN}" \
+ --data "{\"ref\" : \"${CI_COMMIT_SHA}\",\"name\": \"${CI_COMMIT_TAG}\", \"tag_name\": \"${CI_COMMIT_TAG}\", \"description\": \"${CI_COMMIT_TITLE}\", \"assets\": {\"links\": [{\"name\": \"GMSCore.apk\", \"url\": \"https://gitlab.e.foundation/api/v4/projects/149/jobs/artifacts/${CI_COMMIT_TAG}/raw/play-services-core/build/outputs/apk/withMapboxWithNearby/release/play-services-core-withMapbox-withNearby-release-unsigned.apk?job=build\", \"filepath\": \"/play-services-core/build/outputs/apk/withMapboxWithNearby/release/play-services-core-withMapbox-withNearby-release-unsigned.apk\", \"link_type\":\"other\" }] } }" \
+ --request POST https://gitlab.e.foundation/api/v4/projects/149/releases
diff --git a/.gitmodules b/.gitmodules
index 7baca207edb24250fcb44d143700d988fa271842..934ad6b7f0b54a972d2b7b4bc07151fdd3dd790b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,19 +1,7 @@
-[submodule "extern/UnifiedNlp"]
- path = extern/UnifiedNlp
- url = https://gitlab.e.foundation/e/apps/android_packages_apps_UnifiedNlp
- branch = dev
-[submodule "extern/GmsApi"]
- path = extern/GmsApi
- url = https://gitlab.e.foundation/e/apps/GmsApi
- branch = dev
[submodule "extern/Wearable"]
path = extern/Wearable
url = https://gitlab.e.foundation/e/apps/Wearable
branch = dev
-[submodule "extern/GmsLib"]
- path = extern/GmsLib
- url = https://gitlab.e.foundation/e/apps/GmsLib
- branch = dev
[submodule "extern/RemoteDroidGuard"]
path = extern/RemoteDroidGuard
url = https://gitlab.e.foundation/e/apps/android_packages_apps_RemoteDroidGuard
diff --git a/.travis.yml b/.travis.yml
index 87ad538a658853850efc446ab60a46d025d475b8..02f9e12f20c50c0b5ca12f2489825382f25f1adc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,16 +1,15 @@
-language: android
-sudo: false
-script:
- - jdk_switcher use oraclejdk8
+language: java
+jdk: openjdk8
+install:
+ - mkdir $HOME/android-cmdline-tools
+ - curl https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip > $HOME/android-cmdline-tools/cmdline-tools.zip
+ - unzip -qq -n $HOME/android-cmdline-tools/cmdline-tools.zip -d $HOME/android-cmdline-tools
+ - echo y | $HOME/android-cmdline-tools/tools/bin/sdkmanager --sdk_root=$HOME/android-sdk 'platform-tools'
+ - echo y | $HOME/android-cmdline-tools/tools/bin/sdkmanager --sdk_root=$HOME/android-sdk 'build-tools;29.0.3'
+ - echo y | $HOME/android-cmdline-tools/tools/bin/sdkmanager --sdk_root=$HOME/android-sdk 'platforms;android-30'
+env:
+ - ANDROID_HOME=$HOME/android-sdk TERM=dumb JAVA_OPTS="-Xmx2048m"
+before_script:
- echo sdk.dir $ANDROID_HOME > local.properties
- - export TERM=dumb
- - export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Xmx2048m"
- - ./gradlew --stacktrace assemble
-android:
- components:
- - tools
- - platform-tools
- - build-tools-29.0.2
- - android-27
- - android-28
- - extra-android-m2repository
+script:
+ - ./gradlew --no-daemon build
diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ed90b952240cb872426e64da9e41252cc61ae3e
--- /dev/null
+++ b/LICENSES/Apache-2.0.txt
@@ -0,0 +1,208 @@
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
+AND DISTRIBUTION
+
+ 1. Definitions.
+
+
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution
+as defined by Sections 1 through 9 of this document.
+
+
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct
+or indirect, to cause the direction or management of such entity, whether
+by contract or otherwise, or (ii) ownership of fifty percent (50%) or more
+of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions
+granted by this License.
+
+
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+
+
+"Object" form shall mean any form resulting from mechanical transformation
+or translation of a Source form, including but not limited to compiled object
+code, generated documentation, and conversions to other media types.
+
+
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice that
+is included in or attached to the work (an example is provided in the Appendix
+below).
+
+
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative
+Works shall not include works that remain separable from, or merely link (or
+bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative
+Works thereof, that is intentionally submitted to Licensor for inclusion in
+the Work by the copyright owner or by an individual or Legal Entity authorized
+to submit on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication
+sent to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently incorporated
+within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
+Derivative Works of, publicly display, publicly perform, sublicense, and distribute
+the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License,
+each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section) patent
+license to make, have made, use, offer to sell, sell, import, and otherwise
+transfer the Work, where such license applies only to those patent claims
+licensable by such Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work to which such
+Contribution(s) was submitted. If You institute patent litigation against
+any entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that the Work or a Contribution incorporated within the Work constitutes direct
+or contributory patent infringement, then any patent licenses granted to You
+under this License for that Work shall terminate as of the date such litigation
+is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or
+Derivative Works thereof in any medium, with or without modifications, and
+in Source or Object form, provided that You meet the following conditions:
+
+(a) You must give any other recipients of the Work or Derivative Works a copy
+of this License; and
+
+(b) You must cause any modified files to carry prominent notices stating that
+You changed the files; and
+
+(c) You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source
+form of the Work, excluding those notices that do not pertain to any part
+of the Derivative Works; and
+
+(d) If the Work includes a "NOTICE" text file as part of its distribution,
+then any Derivative Works that You distribute must include a readable copy
+of the attribution notices contained within such NOTICE file, excluding those
+notices that do not pertain to any part of the Derivative Works, in at least
+one of the following places: within a NOTICE text file distributed as part
+of the Derivative Works; within the Source form or documentation, if provided
+along with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents
+of the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works
+that You distribute, alongside or as an addendum to the NOTICE text from the
+Work, provided that such additional attribution notices cannot be construed
+as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction,
+or distribution of Your modifications, or for any such Derivative Works as
+a whole, provided Your use, reproduction, and distribution of the Work otherwise
+complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any
+Contribution intentionally submitted for inclusion in the Work by You to the
+Licensor shall be under the terms and conditions of this License, without
+any additional terms or conditions. Notwithstanding the above, nothing herein
+shall supersede or modify the terms of any separate license agreement you
+may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names,
+trademarks, service marks, or product names of the Licensor, except as required
+for reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to
+in writing, Licensor provides the Work (and each Contributor provides its
+Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied, including, without limitation, any warranties
+or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
+A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness
+of using or redistributing the Work and assume any risks associated with Your
+exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether
+in tort (including negligence), contract, or otherwise, unless required by
+applicable law (such as deliberate and grossly negligent acts) or agreed to
+in writing, shall any Contributor be liable to You for damages, including
+any direct, indirect, special, incidental, or consequential damages of any
+character arising as a result of this License or out of the use or inability
+to use the Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all other commercial
+damages or losses), even if such Contributor has been advised of the possibility
+of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work
+or Derivative Works thereof, You may choose to offer, and charge a fee for,
+acceptance of support, warranty, indemnity, or other liability obligations
+and/or rights consistent with this License. However, in accepting such obligations,
+You may act only on Your own behalf and on Your sole responsibility, not on
+behalf of any other Contributor, and only if You agree to indemnify, defend,
+and hold each Contributor harmless for any liability incurred by, or claims
+asserted against, such Contributor by reason of your accepting any such warranty
+or additional liability. END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own identifying
+information. (Don't include the brackets!) The text should be enclosed in
+the appropriate comment syntax for the file format. We also recommend that
+a file or class name and description of purpose be included on the same "printed
+page" as the copyright notice for easier identification within third-party
+archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+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.
diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3f92dfc5fdda05635f28da16a47fa1a5c99c0dc6
--- /dev/null
+++ b/LICENSES/CC-BY-4.0.txt
@@ -0,0 +1,324 @@
+Creative Commons Attribution 4.0 International Creative Commons Corporation
+("Creative Commons") is not a law firm and does not provide legal services
+or legal advice. Distribution of Creative Commons public licenses does not
+create a lawyer-client or other relationship. Creative Commons makes its licenses
+and related information available on an "as-is" basis. Creative Commons gives
+no warranties regarding its licenses, any material licensed under their terms
+and conditions, or any related information. Creative Commons disclaims all
+liability for damages resulting from their use to the fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and conditions
+that creators and other rights holders may use to share original works of
+authorship and other material subject to copyright and certain other rights
+specified in the public license below. The following considerations are for
+informational purposes only, are not exhaustive, and do not form part of our
+licenses.
+
+Considerations for licensors: Our public licenses are intended for use by
+those authorized to give the public permission to use material in ways otherwise
+restricted by copyright and certain other rights. Our licenses are irrevocable.
+Licensors should read and understand the terms and conditions of the license
+they choose before applying it. Licensors should also secure all rights necessary
+before applying our licenses so that the public can reuse the material as
+expected. Licensors should clearly mark any material not subject to the license.
+This includes other CC-licensed material, or material used under an exception
+or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors
+
+Considerations for the public: By using one of our public licenses, a licensor
+grants the public permission to use the licensed material under specified
+terms and conditions. If the licensor's permission is not necessary for any
+reason–for example, because of any applicable exception or limitation to copyright–then
+that use is not regulated by the license. Our licenses grant only permissions
+under copyright and certain other rights that a licensor has authority to
+grant. Use of the licensed material may still be restricted for other reasons,
+including because others have copyright or other rights in the material. A
+licensor may make special requests, such as asking that all changes be marked
+or described. Although not required by our licenses, you are encouraged to
+respect those requests where reasonable. More considerations for the public
+: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution
+4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to
+be bound by the terms and conditions of this Creative Commons Attribution
+4.0 International Public License ("Public License"). To the extent this Public
+License may be interpreted as a contract, You are granted the Licensed Rights
+in consideration of Your acceptance of these terms and conditions, and the
+Licensor grants You such rights in consideration of benefits the Licensor
+receives from making the Licensed Material available under these terms and
+conditions.
+
+Section 1 – Definitions.
+
+a. Adapted Material means material subject to Copyright and Similar Rights
+that is derived from or based upon the Licensed Material and in which the
+Licensed Material is translated, altered, arranged, transformed, or otherwise
+modified in a manner requiring permission under the Copyright and Similar
+Rights held by the Licensor. For purposes of this Public License, where the
+Licensed Material is a musical work, performance, or sound recording, Adapted
+Material is always produced where the Licensed Material is synched in timed
+relation with a moving image.
+
+b. Adapter's License means the license You apply to Your Copyright and Similar
+Rights in Your contributions to Adapted Material in accordance with the terms
+and conditions of this Public License.
+
+c. Copyright and Similar Rights means copyright and/or similar rights closely
+related to copyright including, without limitation, performance, broadcast,
+sound recording, and Sui Generis Database Rights, without regard to how the
+rights are labeled or categorized. For purposes of this Public License, the
+rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+d. Effective Technological Measures means those measures that, in the absence
+of proper authority, may not be circumvented under laws fulfilling obligations
+under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996,
+and/or similar international agreements.
+
+e. Exceptions and Limitations means fair use, fair dealing, and/or any other
+exception or limitation to Copyright and Similar Rights that applies to Your
+use of the Licensed Material.
+
+f. Licensed Material means the artistic or literary work, database, or other
+material to which the Licensor applied this Public License.
+
+g. Licensed Rights means the rights granted to You subject to the terms and
+conditions of this Public License, which are limited to all Copyright and
+Similar Rights that apply to Your use of the Licensed Material and that the
+Licensor has authority to license.
+
+h. Licensor means the individual(s) or entity(ies) granting rights under this
+Public License.
+
+i. Share means to provide material to the public by any means or process that
+requires permission under the Licensed Rights, such as reproduction, public
+display, public performance, distribution, dissemination, communication, or
+importation, and to make material available to the public including in ways
+that members of the public may access the material from a place and at a time
+individually chosen by them.
+
+j. Sui Generis Database Rights means rights other than copyright resulting
+from Directive 96/9/EC of the European Parliament and of the Council of 11
+March 1996 on the legal protection of databases, as amended and/or succeeded,
+as well as other essentially equivalent rights anywhere in the world.
+
+k. You means the individual or entity exercising the Licensed Rights under
+this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+ a. License grant.
+
+1. Subject to the terms and conditions of this Public License, the Licensor
+hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive,
+irrevocable license to exercise the Licensed Rights in the Licensed Material
+to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part; and
+
+ B. produce, reproduce, and Share Adapted Material.
+
+2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
+and Limitations apply to Your use, this Public License does not apply, and
+You do not need to comply with its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section 6(a).
+
+4. Media and formats; technical modifications allowed. The Licensor authorizes
+You to exercise the Licensed Rights in all media and formats whether now known
+or hereafter created, and to make technical modifications necessary to do
+so. The Licensor waives and/or agrees not to assert any right or authority
+to forbid You from making technical modifications necessary to exercise the
+Licensed Rights, including technical modifications necessary to circumvent
+Effective Technological Measures. For purposes of this Public License, simply
+making modifications authorized by this Section 2(a)(4) never produces Adapted
+Material.
+
+ 5. Downstream recipients.
+
+A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed
+Material automatically receives an offer from the Licensor to exercise the
+Licensed Rights under the terms and conditions of this Public License.
+
+B. No downstream restrictions. You may not offer or impose any additional
+or different terms or conditions on, or apply any Effective Technological
+Measures to, the Licensed Material if doing so restricts exercise of the Licensed
+Rights by any recipient of the Licensed Material.
+
+6. No endorsement. Nothing in this Public License constitutes or may be construed
+as permission to assert or imply that You are, or that Your use of the Licensed
+Material is, connected with, or sponsored, endorsed, or granted official status
+by, the Licensor or others designated to receive attribution as provided in
+Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+1. Moral rights, such as the right of integrity, are not licensed under this
+Public License, nor are publicity, privacy, and/or other similar personality
+rights; however, to the extent possible, the Licensor waives and/or agrees
+not to assert any such rights held by the Licensor to the limited extent necessary
+to allow You to exercise the Licensed Rights, but not otherwise.
+
+2. Patent and trademark rights are not licensed under this Public License.
+
+3. To the extent possible, the Licensor waives any right to collect royalties
+from You for the exercise of the Licensed Rights, whether directly or through
+a collecting society under any voluntary or waivable statutory or compulsory
+licensing scheme. In all other cases the Licensor expressly reserves any right
+to collect such royalties.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following
+conditions.
+
+ a. Attribution.
+
+1. If You Share the Licensed Material (including in modified form), You must:
+
+A. retain the following if it is supplied by the Licensor with the Licensed
+Material:
+
+i. identification of the creator(s) of the Licensed Material and any others
+designated to receive attribution, in any reasonable manner requested by the
+Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of warranties;
+
+v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+B. indicate if You modified the Licensed Material and retain an indication
+of any previous modifications; and
+
+C. indicate the Licensed Material is licensed under this Public License, and
+include the text of, or the URI or hyperlink to, this Public License.
+
+2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner
+based on the medium, means, and context in which You Share the Licensed Material.
+For example, it may be reasonable to satisfy the conditions by providing a
+URI or hyperlink to a resource that includes the required information.
+
+3. If requested by the Licensor, You must remove any of the information required
+by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+4. If You Share Adapted Material You produce, the Adapter's License You apply
+must not prevent recipients of the Adapted Material from complying with this
+Public License.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to
+Your use of the Licensed Material:
+
+a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
+reuse, reproduce, and Share all or a substantial portion of the contents of
+the database;
+
+b. if You include all or a substantial portion of the database contents in
+a database in which You have Sui Generis Database Rights, then the database
+in which You have Sui Generis Database Rights (but not its individual contents)
+is Adapted Material; and
+
+c. You must comply with the conditions in Section 3(a) if You Share all or
+a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not replace
+Your obligations under this Public License where the Licensed Rights include
+other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+a. Unless otherwise separately undertaken by the Licensor, to the extent possible,
+the Licensor offers the Licensed Material as-is and as-available, and makes
+no representations or warranties of any kind concerning the Licensed Material,
+whether express, implied, statutory, or other. This includes, without limitation,
+warranties of title, merchantability, fitness for a particular purpose, non-infringement,
+absence of latent or other defects, accuracy, or the presence or absence of
+errors, whether or not known or discoverable. Where disclaimers of warranties
+are not allowed in full or in part, this disclaimer may not apply to You.
+
+b. To the extent possible, in no event will the Licensor be liable to You
+on any legal theory (including, without limitation, negligence) or otherwise
+for any direct, special, indirect, incidental, consequential, punitive, exemplary,
+or other losses, costs, expenses, or damages arising out of this Public License
+or use of the Licensed Material, even if the Licensor has been advised of
+the possibility of such losses, costs, expenses, or damages. Where a limitation
+of liability is not allowed in full or in part, this limitation may not apply
+to You.
+
+c. The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most closely
+approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+a. This Public License applies for the term of the Copyright and Similar Rights
+licensed here. However, if You fail to comply with this Public License, then
+Your rights under this Public License terminate automatically.
+
+b. Where Your right to use the Licensed Material has terminated under Section
+6(a), it reinstates:
+
+1. automatically as of the date the violation is cured, provided it is cured
+within 30 days of Your discovery of the violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+c. For the avoidance of doubt, this Section 6(b) does not affect any right
+the Licensor may have to seek remedies for Your violations of this Public
+License.
+
+d. For the avoidance of doubt, the Licensor may also offer the Licensed Material
+under separate terms or conditions or stop distributing the Licensed Material
+at any time; however, doing so will not terminate this Public License.
+
+ e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+a. The Licensor shall not be bound by any additional or different terms or
+conditions communicated by You unless expressly agreed.
+
+b. Any arrangements, understandings, or agreements regarding the Licensed
+Material not stated herein are separate from and independent of the terms
+and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+a. For the avoidance of doubt, this Public License does not, and shall not
+be interpreted to, reduce, limit, restrict, or impose conditions on any use
+of the Licensed Material that could lawfully be made without permission under
+this Public License.
+
+b. To the extent possible, if any provision of this Public License is deemed
+unenforceable, it shall be automatically reformed to the minimum extent necessary
+to make it enforceable. If the provision cannot be reformed, it shall be severed
+from this Public License without affecting the enforceability of the remaining
+terms and conditions.
+
+c. No term or condition of this Public License will be waived and no failure
+to comply consented to unless expressly agreed to by the Licensor.
+
+d. Nothing in this Public License constitutes or may be interpreted as a limitation
+upon, or waiver of, any privileges and immunities that apply to the Licensor
+or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative
+Commons may elect to apply one of its public licenses to material it publishes
+and in those instances will be considered the "Licensor." The text of the
+Creative Commons public licenses is dedicated to the public domain under the
+CC0 Public Domain Dedication. Except for the limited purpose of indicating
+that material is shared under a Creative Commons public license or as otherwise
+permitted by the Creative Commons policies published at creativecommons.org/policies,
+Creative Commons does not authorize the use of the trademark "Creative Commons"
+or any other trademark or logo of Creative Commons without its prior written
+consent including, without limitation, in connection with any unauthorized
+modifications to any of its public licenses or any other arrangements, understandings,
+or agreements concerning use of licensed material. For the avoidance of doubt,
+this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/README.md b/README.md
index b378765fa41d4d443c458a63c126a29976c4c4eb..4b47042c93cc089bc5b72614b6ce8c221d7dedef 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ microG GmsCore is a FLOSS (Free/Libre Open Source Software) framework to allow a
License
-------
- Copyright 2013-2019 microG Project Team
+ Copyright 2013-2020 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.
diff --git a/build.gradle b/build.gradle
index b6ffdcde07818031b191fa61a4fb217bfc22c7a5..539c6bb8536d55e0f0ffe5c7aecc50c7121fe55e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,63 +1,114 @@
/*
- * 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-alpha4'
+ ext.remoteDroidGuardVersion = '0.1.2'
+ 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.coreVersion = '1.3.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.volleyVersion = '1.1.1'
+ ext.wireVersion = '3.2.2'
+
+ ext.androidBuildGradleVersion = '3.6.3'
+
+ ext.androidBuildVersionTools = '29.0.3'
+
+ ext.androidMinSdk = 14
+ ext.androidTargetSdk = 29
+ ext.androidCompileSdk = 30
+
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"
+ classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion"
}
}
+def execResult(...args) {
+ def stdout = new ByteArrayOutputStream()
+ exec {
+ commandLine args
+ standardOutput = stdout
+ }
+ return stdout.toString().trim()
+}
+
+def gmsVersion = "20.39.15"
+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 c6448e7c55ff95c49a6affe2e514ef96b0a30bf3..0000000000000000000000000000000000000000
--- a/extern/GmsApi
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c6448e7c55ff95c49a6affe2e514ef96b0a30bf3
diff --git a/extern/GmsLib b/extern/GmsLib
deleted file mode 160000
index 614e111fa02b9aeb195879735ababe869074617c..0000000000000000000000000000000000000000
--- a/extern/GmsLib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 614e111fa02b9aeb195879735ababe869074617c
diff --git a/extern/RemoteDroidGuard b/extern/RemoteDroidGuard
index 0c5c944a54962a4c60cffa44785a36d7251df635..04a68eb65a861bb9e62dd3558bbf4d0d4d9a7c67 160000
--- a/extern/RemoteDroidGuard
+++ b/extern/RemoteDroidGuard
@@ -1 +1 @@
-Subproject commit 0c5c944a54962a4c60cffa44785a36d7251df635
+Subproject commit 04a68eb65a861bb9e62dd3558bbf4d0d4d9a7c67
diff --git a/extern/UnifiedNlp b/extern/UnifiedNlp
deleted file mode 160000
index 5516c49cb40d5008bd76a0818bb856da1b134f05..0000000000000000000000000000000000000000
--- a/extern/UnifiedNlp
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5516c49cb40d5008bd76a0818bb856da1b134f05
diff --git a/firebase-auth-api/build.gradle b/firebase-auth-api/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..bb8662f85ac55d77e5a3ac4bfe406f92a2c2d322
--- /dev/null
+++ b/firebase-auth-api/build.gradle
@@ -0,0 +1,26 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+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')
+}
diff --git a/firebase-auth-api/src/main/AndroidManifest.xml b/firebase-auth-api/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..95249c36de315f83657c2d770f866fa18a5f735e
--- /dev/null
+++ b/firebase-auth-api/src/main/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..adedd1929d349babc6992622845a63ea10aa8191
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable ActionCodeSettings;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..20cabbd494f1eb59000e529aec170e999fcd6adf
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable EmailAuthCredential;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..b3d6abbc04549b745e3c47593a3af3260456a620
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable PhoneAuthCredential;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..123af808d51c172e48e793430ba282aecfbdac80
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable UserProfileChangeRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..9e0520ba40e6aba50e72a76dc6453d0f8966a9ef
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ApplyActionCodeAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..e95043ad23de3e0a142fc9d61c4cb183cc7b401a
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ChangeEmailAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..55457b484f08bb65f08e4d95f89e8aea51344235
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ChangePasswordAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..6d4afa8f984cc22a139df0ee5b356ed948e2607b
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable CheckActionCodeAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..12f79de93655cd37e1369eb738aab249dc8858a2
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ConfirmPasswordResetAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..fae42151ddbdd12ad915c3d58cd9416d77f891a4
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable CreateAuthUriResponse;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..9191617f867c350f50c7bcbd737bf11052acef58
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable CreateUserWithEmailAndPasswordAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..d45bda0aec6c7e3430fcf60a8a0ae24cd3fa2c51
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable DeleteAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..50bfa3b5020523cd1a2859add2f377bfa240d33e
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable FinalizeMfaEnrollmentAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..2453bd6febb1144a8532df70dc78149c521bdc3b
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable FinalizeMfaSignInAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..cc44192eda166212818c4d50009568bbd7391738
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetAccessTokenAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..50c33169232be1f411992b99470abbcba92d0ad4
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetAccountInfoUser;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..0760f596b5596161e7843910ac4fbff2b53b2307
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetProvidersForEmailAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..b6838f6d56c4245986b120db0e6eea8bc016461f
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetTokenResponse;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..9c285521df4a8e7392ffe7d7dce6c16f60925851
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl
@@ -0,0 +1,22 @@
+package com.google.firebase.auth.api.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.firebase.auth.PhoneAuthCredential;
+import com.google.firebase.auth.api.internal.CreateAuthUriResponse;
+import com.google.firebase.auth.api.internal.GetAccountInfoUser;
+import com.google.firebase.auth.api.internal.GetTokenResponse;
+import com.google.firebase.auth.api.internal.ResetPasswordResponse;
+
+interface IFirebaseAuthCallbacks {
+ void onGetTokenResponse(in GetTokenResponse response) = 0;
+ void onGetTokenResponseAndUser(in GetTokenResponse response, in GetAccountInfoUser user) = 1;
+ void onCreateAuthUriResponse(in CreateAuthUriResponse response) = 2;
+ void onResetPasswordResponse(in ResetPasswordResponse response) = 3;
+ void onFailure(in Status status) = 4;
+ void onDeleteAccountResponse() = 5;
+ void onEmailVerificationResponse() = 6;
+
+ void onSendVerificationCodeResponse(String sessionInfo) = 8;
+ void onVerificationCompletedResponse(in PhoneAuthCredential credential) = 9;
+ void onVerificationAutoTimeOut(String sessionInfo) = 10;
+}
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..071449243b62112850c7d662b6feac16fdf768aa
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl
@@ -0,0 +1,108 @@
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.api.internal.ApplyActionCodeAidlRequest;
+import com.google.firebase.auth.api.internal.ChangeEmailAidlRequest;
+import com.google.firebase.auth.api.internal.ChangePasswordAidlRequest;
+import com.google.firebase.auth.api.internal.CheckActionCodeAidlRequest;
+import com.google.firebase.auth.api.internal.ConfirmPasswordResetAidlRequest;
+import com.google.firebase.auth.api.internal.CreateUserWithEmailAndPasswordAidlRequest;
+import com.google.firebase.auth.api.internal.DeleteAidlRequest;
+import com.google.firebase.auth.api.internal.FinalizeMfaEnrollmentAidlRequest;
+import com.google.firebase.auth.api.internal.FinalizeMfaSignInAidlRequest;
+import com.google.firebase.auth.api.internal.GetAccessTokenAidlRequest;
+import com.google.firebase.auth.api.internal.GetProvidersForEmailAidlRequest;
+import com.google.firebase.auth.api.internal.IFirebaseAuthCallbacks;
+import com.google.firebase.auth.api.internal.LinkEmailAuthCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.LinkFederatedCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.LinkPhoneAuthCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.ReloadAidlRequest;
+import com.google.firebase.auth.api.internal.SendEmailVerificationWithSettingsAidlRequest;
+import com.google.firebase.auth.api.internal.SendGetOobConfirmationCodeEmailAidlRequest;
+import com.google.firebase.auth.api.internal.SendVerificationCodeAidlRequest;
+import com.google.firebase.auth.api.internal.SendVerificationCodeRequest;
+import com.google.firebase.auth.api.internal.SetFirebaseUiVersionAidlRequest;
+import com.google.firebase.auth.api.internal.SignInAnonymouslyAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithCustomTokenAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithEmailAndPasswordAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithEmailLinkAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithPhoneNumberAidlRequest;
+import com.google.firebase.auth.api.internal.StartMfaPhoneNumberEnrollmentAidlRequest;
+import com.google.firebase.auth.api.internal.StartMfaPhoneNumberSignInAidlRequest;
+import com.google.firebase.auth.api.internal.UnenrollMfaAidlRequest;
+import com.google.firebase.auth.api.internal.UnlinkEmailCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.UnlinkFederatedCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.UpdateProfileAidlRequest;
+import com.google.firebase.auth.api.internal.VerifyAssertionRequest;
+import com.google.firebase.auth.api.internal.VerifyBeforeUpdateEmailAidlRequest;
+import com.google.firebase.auth.ActionCodeSettings;
+import com.google.firebase.auth.EmailAuthCredential;
+import com.google.firebase.auth.PhoneAuthCredential;
+import com.google.firebase.auth.UserProfileChangeRequest;
+
+interface IFirebaseAuthService {
+ void getAccessTokenCompat(String refreshToken, IFirebaseAuthCallbacks callbacks) = 0;
+ void signInWithCustomTokenCompat(String token, IFirebaseAuthCallbacks callbacks) = 1;
+ void signInWithCredentialCompat(in VerifyAssertionRequest verifyAssertionRequest, IFirebaseAuthCallbacks callbacks) = 2;
+ void updateProfileCompat(String cachedState, in UserProfileChangeRequest userProfileChangeRequest, IFirebaseAuthCallbacks callbacks) = 3;
+ void changeEmailCompat(String cachedState, String email, IFirebaseAuthCallbacks callbacks) = 4;
+ void changePasswordCompat(String cachedState, String password, IFirebaseAuthCallbacks callbacks) = 5;
+ void createUserWithEmailAndPasswordCompat(String email, String password, IFirebaseAuthCallbacks callbacks) = 6;
+ void signInWithEmailAndPasswordCompat(String email, String password, IFirebaseAuthCallbacks callbacks) = 7;
+ void getProvidersForEmailCompat(String email, IFirebaseAuthCallbacks callbacks) = 8;
+
+ void linkEmailAuthCredentialCompat(String email, String password, String cachedState, IFirebaseAuthCallbacks callbacks) = 10;
+ void linkFederatedCredentialCompat(String cachedState, in VerifyAssertionRequest verifyAssertionRequest, IFirebaseAuthCallbacks callbacks) = 11;
+ void unlinkEmailCredentialCompat(String cachedState, IFirebaseAuthCallbacks callbacks) = 12;
+ void unlinkFederatedCredentialCompat(String provider, String cachedState, IFirebaseAuthCallbacks callbacks) = 13;
+ void reloadCompat(String cachedState, IFirebaseAuthCallbacks callbacks) = 14;
+ void signInAnonymouslyCompat(IFirebaseAuthCallbacks callbacks) = 15;
+ void deleteCompat(String cachedState, IFirebaseAuthCallbacks callbacks) = 16;
+ void checkActionCodeCompat(String code, IFirebaseAuthCallbacks callbacks) = 18;
+ void applyActionCodeCompat(String code, IFirebaseAuthCallbacks callbacks) = 19;
+ void confirmPasswordResetCompat(String code, String newPassword, IFirebaseAuthCallbacks callbacks) = 20;
+ void sendVerificationCodeCompat(in SendVerificationCodeRequest request, IFirebaseAuthCallbacks callbacks) = 21;
+ void signInWithPhoneNumberCompat(in PhoneAuthCredential credential, IFirebaseAuthCallbacks callbacks) = 22;
+ void linkPhoneAuthCredentialCompat(String cachedState, in PhoneAuthCredential credential, IFirebaseAuthCallbacks callbacks) = 23;
+
+ void sendEmailVerificationCompat(String token, in ActionCodeSettings actionCodeSettings, IFirebaseAuthCallbacks callbacks) = 25;
+ void setFirebaseUIVersionCompat(String firebaseUiVersion, IFirebaseAuthCallbacks callbacks) = 26;
+ void sendGetOobConfirmationCodeEmailCompat(String email, in ActionCodeSettings actionCodeSettings, IFirebaseAuthCallbacks callbacks) = 27;
+ void signInWithEmailLinkCompat(in EmailAuthCredential credential, IFirebaseAuthCallbacks callbacks) = 28;
+
+ void getAccessToken(in GetAccessTokenAidlRequest request, IFirebaseAuthCallbacks callbacks) = 100;
+ void signInWithCustomToken(in SignInWithCustomTokenAidlRequest request, IFirebaseAuthCallbacks callbacks) = 101;
+ void signInWithCredential(in SignInWithCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 102;
+ void updateProfile(in UpdateProfileAidlRequest request, IFirebaseAuthCallbacks callbacks) = 103;
+ void changeEmail(in ChangeEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 104;
+ void changePassword(in ChangePasswordAidlRequest request, IFirebaseAuthCallbacks callbacks) = 105;
+ void createUserWithEmailAndPassword(in CreateUserWithEmailAndPasswordAidlRequest request, IFirebaseAuthCallbacks callbacks) = 106;
+ void signInWithEmailAndPassword(in SignInWithEmailAndPasswordAidlRequest request, IFirebaseAuthCallbacks callbacks) = 107;
+ void getProvidersForEmail(in GetProvidersForEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 108;
+
+ void linkEmailAuthCredential(in LinkEmailAuthCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 110;
+ void linkFederatedCredential(in LinkFederatedCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 111;
+ void unlinkEmailCredential(in UnlinkEmailCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 112;
+ void unlinkFederatedCredential(in UnlinkFederatedCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 113;
+ void reload(in ReloadAidlRequest request, IFirebaseAuthCallbacks callbacks) = 114;
+ void signInAnonymously(in SignInAnonymouslyAidlRequest request, IFirebaseAuthCallbacks callbacks) = 115;
+ void delete(in DeleteAidlRequest request, IFirebaseAuthCallbacks callbacks) = 116;
+ void checkActionCode(in CheckActionCodeAidlRequest request, IFirebaseAuthCallbacks callbacks) = 118;
+ void applyActionCode(in ApplyActionCodeAidlRequest request, IFirebaseAuthCallbacks callbacks) = 119;
+ void confirmPasswordReset(in ConfirmPasswordResetAidlRequest request, IFirebaseAuthCallbacks callbacks) = 120;
+ void sendVerificationCode(in SendVerificationCodeAidlRequest request, IFirebaseAuthCallbacks callbacks) = 121;
+ void signInWithPhoneNumber(in SignInWithPhoneNumberAidlRequest request, IFirebaseAuthCallbacks callbacks) = 122;
+ void linkPhoneAuthCredential(in LinkPhoneAuthCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 123;
+
+ void sendEmailVerification(in SendEmailVerificationWithSettingsAidlRequest request, IFirebaseAuthCallbacks callbacks) = 125;
+ void setFirebaseUiVersion(in SetFirebaseUiVersionAidlRequest request, IFirebaseAuthCallbacks callbacks) = 126;
+ void sendGetOobConfirmationCodeEmail(in SendGetOobConfirmationCodeEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 127;
+ void signInWithEmailLink(in SignInWithEmailLinkAidlRequest request, IFirebaseAuthCallbacks callbacks) = 128;
+
+ void startMfaEnrollmentWithPhoneNumber(in StartMfaPhoneNumberEnrollmentAidlRequest request, IFirebaseAuthCallbacks callbacks) = 129;
+ void unenrollMfa(in UnenrollMfaAidlRequest request, IFirebaseAuthCallbacks callbacks) = 130;
+ void finalizeMfaEnrollment(in FinalizeMfaEnrollmentAidlRequest request, IFirebaseAuthCallbacks callbacks) = 131;
+ void startMfaSignInWithPhoneNumber(in StartMfaPhoneNumberSignInAidlRequest request, IFirebaseAuthCallbacks callbacks) = 132;
+ void finalizeMfaSignIn(in FinalizeMfaSignInAidlRequest request, IFirebaseAuthCallbacks callbacks) = 133;
+ void verifyBeforeUpdateEmail(in VerifyBeforeUpdateEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 134;
+}
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..bee0011b7b77b376003c6045b1bd92bbff17e9fe
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable LinkEmailAuthCredentialAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..3894901d984fa9fc823b4a335139a51164cef4f6
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable LinkFederatedCredentialAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..62caaf6ae67270cf7023c05fa9bf7afdbeca0939
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable LinkPhoneAuthCredentialAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..5057e2e419b6739809184950e6cadff33b28a426
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ReloadAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..572587f02d57b74eef7d2df7372f7c26a40cfffd
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ResetPasswordResponse;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..6db47c5b86da253178eb2de74fcf07f515568393
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendEmailVerificationWithSettingsAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..5e1e51909d2bd0d478e7b6048181e64c766a75f5
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendGetOobConfirmationCodeEmailAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..21b497165e4267d885a0372fa4149e54277b4efa
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendVerificationCodeAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..3f797f58ead9d415cd299bca9e1b3afb853fc11a
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendVerificationCodeRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..39ff41a03af3539d5ee2824db983df4a38b1cbeb
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SetFirebaseUiVersionAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..2b4c21fb1746711251487f541cecfe4702d53e45
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInAnonymouslyAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..acda7af49b22cef53a70f15c601a8265ce97082d
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithCredentialAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..047489e034c0cd0a9094b8ee9fd3974d63f5ed93
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithCustomTokenAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..77a277de8816d55712917904bad55a9f3be4ba6e
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithEmailAndPasswordAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..1bb2d32dca74360ba5cabf67a2aa0fef569b7e17
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithEmailLinkAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..270d3420ecb879a2643cfed678aa58f8b4462dba
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithPhoneNumberAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..630a4c93253704936cc9fa52fe00c9a0a69161f4
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable StartMfaPhoneNumberEnrollmentAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..65c8063079b45301857d39b6d60caad9483665ce
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable StartMfaPhoneNumberSignInAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..62446017277ab82cdbc635a0efe05233b7345173
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable StringList;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..5ce470b87b1594308195375f1dd4ba2ea70c0f36
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UnenrollMfaAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..735a31959c2b81ea0e93bcc689ea0012ec6d3b07
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UnlinkEmailCredentialAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..eb473913bc84d3da4a428c5d6c31a141f8b1a8e1
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UnlinkFederatedCredentialAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..db6603cf71399ecb3e2a214240549bdc7c9d8bbd
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UpdateProfileAidlRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..7f4787ffb33d718afea75331322722f016871ca1
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable VerifyAssertionRequest;
diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..792989275c73c73e43da47c2044c7202c414854f
--- /dev/null
+++ b/firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable VerifyBeforeUpdateEmailAidlRequest;
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/ActionCodeSettings.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/ActionCodeSettings.java
new file mode 100644
index 0000000000000000000000000000000000000000..df07dd64218a3dbf8fdf5de1e220369bed8803f9
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/ActionCodeSettings.java
@@ -0,0 +1,182 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+/**
+ * Structure that contains the required continue/state URL with optional Android and iOS bundle identifiers.
+ * The stateUrl used to initialize this class is the link/deep link/fallback url used while constructing the Firebase dynamic link.
+ */
+@PublicApi
+public class ActionCodeSettings extends AutoSafeParcelable {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String url;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String iOSBundle;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public String iOSAppStoreId;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public String androidPackageName;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public boolean androidInstallApp;
+ @Field(6)
+ @PublicApi(exclude = true)
+ public String androidMinimumVersion;
+ @Field(7)
+ @PublicApi(exclude = true)
+ public boolean handleCodeInApp;
+ @Field(8)
+ @PublicApi(exclude = true)
+ public String localeHeader;
+ @Field(9)
+ @PublicApi(exclude = true)
+ public int requestType;
+ @Field(10)
+ @PublicApi(exclude = true)
+ public String dynamicLinkDomain;
+
+ private ActionCodeSettings() {
+ }
+
+ /**
+ * @return whether the oob code should be handled by the app. See {@link Builder#setHandleCodeInApp(boolean)}
+ */
+ public boolean canHandleCodeInApp() {
+ return handleCodeInApp;
+ }
+
+ /**
+ * @return the preference for whether to attempt to install the app if it is not present. See {@link Builder#setAndroidPackageName(String, boolean, String)}
+ */
+ public boolean getAndroidInstallApp() {
+ return androidInstallApp;
+ }
+
+ /**
+ * @return the minimum Android app version. See {@link Builder#setAndroidPackageName(String, boolean, String)}
+ */
+ public String getAndroidMinimumVersion() {
+ return androidMinimumVersion;
+ }
+
+ /**
+ * @return the Android Package Name. See {@link Builder#setAndroidPackageName(String, boolean, String)}
+ */
+ public String getAndroidPackageName() {
+ return androidPackageName;
+ }
+
+ /**
+ * @return the iOS Bundle. See {@link Builder#setIOSBundleId(String)}
+ */
+ public String getIOSBundle() {
+ return iOSBundle;
+ }
+
+ /**
+ * @return the URL. See {@link Builder#setUrl(String)}
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * @return a new instance of {@link ActionCodeSettings.Builder}.
+ */
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ /**
+ * A Builder class for {@link ActionCodeSettings}. Get an instance of this Builder using {@link #newBuilder()}.
+ */
+ public static class Builder {
+ private String url;
+ private String iOSBundleId;
+ private String androidPackageName;
+ private boolean androidInstallApp;
+ private String androidMinimumVersion;
+ private boolean canHandleCodeInApp;
+ private String dynamicLinkDomain;
+
+ public ActionCodeSettings build() {
+ ActionCodeSettings settings = new ActionCodeSettings();
+ settings.url = url;
+ settings.iOSBundle = iOSBundleId;
+ settings.androidPackageName = androidPackageName;
+ settings.androidInstallApp = androidInstallApp;
+ settings.handleCodeInApp = canHandleCodeInApp;
+ settings.dynamicLinkDomain = dynamicLinkDomain;
+ return settings;
+ }
+
+ /**
+ * Sets the Android package name and returns the current builder instance.
+ * If {@code installIfNotAvailable} is set to true and the link is opened on an android device, it will try to install the app if not already available.
+ * Otherwise the web URL is used.
+ *
+ * A minimum version string is also available. If the installed app is an older version, the user is taken to the Play Store to upgrade the app.
+ */
+ public Builder setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) {
+ this.androidPackageName = androidPackageName;
+ this.androidInstallApp = installIfNotAvailable;
+ this.androidMinimumVersion = minimumVersion;
+ return this;
+ }
+
+ /**
+ * Sets the optional FDL domain, overriding the default FDL domain that would be used.
+ * Must be one of the 5 domains configured in the Firebase console.
+ */
+ public Builder setDynamicLinkDomain(String dynamicLinkDomain) {
+ this.dynamicLinkDomain = dynamicLinkDomain;
+ return this;
+ }
+
+ /**
+ * The default is false. When set to true, the action code link will be sent as a universal link and will be open by the app if installed.
+ * In the false case, the code will be sent to the web widget first and then on continue will redirect to the app if installed.
+ */
+ public Builder setHandleCodeInApp(boolean status) {
+ this.canHandleCodeInApp = status;
+ return this;
+ }
+
+ /**
+ * To be used if the email link that is sent might be opened on an iOS device.
+ *
+ * Sets the iOS bundle Id and returns the current {@link ActionCodeSettings.Builder} instance.
+ */
+ public Builder setIOSBundleId(String iOSBundleId) {
+ this.iOSBundleId = iOSBundleId;
+ return this;
+ }
+
+ /**
+ * Sets the URL, which has different meanings in different contexts. For email actions, this is the state/continue URL.
+ * When the app is not installed, this is the web continue URL with any developer provided state appended (the continueURL query parameter).
+ * When the app is installed, this is contained in the Firebase dynamic link payload.
+ * In the case where the code is sent directly to the app and the app is installed, this is the continueURL query parameter in the dynamic link payload.
+ * Otherwise, when the code is handled by the widget itself, it is the payload itself.
+ */
+ public Builder setUrl(String url) {
+ this.url = url;
+ return this;
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(ActionCodeSettings.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/AuthCredential.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/AuthCredential.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf3b7e6e4b634c6eda31dbef5f0dacf2172eb11d
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/AuthCredential.java
@@ -0,0 +1,28 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+/**
+ * Represents a credential that the Firebase Authentication server can use to authenticate a user.
+ */
+@PublicApi
+public abstract class AuthCredential extends AutoSafeParcelable {
+ /**
+ * Returns the unique string identifier for the provider type with which the credential is associated.
+ */
+ public abstract String getProvider();
+
+ /**
+ * Returns the unique string identifier for the sign in method with which the credential is associated. Should match that returned by {@link FirebaseAuth#fetchSignInMethodsForEmail(String)} after this user has signed in with this type of credential.
+ */
+ public abstract String getSignInMethod();
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java
new file mode 100644
index 0000000000000000000000000000000000000000..f224434bec778103b258e39e93684463a00fac1b
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java
@@ -0,0 +1,66 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import com.google.firebase.auth.api.internal.VerifyAssertionRequest;
+
+import org.microg.gms.common.PublicApi;
+
+@PublicApi
+public class DefaultOAuthCredential extends OAuthCredential {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String provider;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String idToken;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public String accessToken;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public VerifyAssertionRequest webSignInToken;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public String pendingToken;
+ @Field(6)
+ @PublicApi(exclude = true)
+ public String secret;
+ @Field(7)
+ @PublicApi(exclude = true)
+ public String rawNonce;
+
+
+ @Override
+ public String getAccessToken() {
+ return accessToken;
+ }
+
+ @Override
+ public String getIdToken() {
+ return idToken;
+ }
+
+ @Override
+ public String getSecret() {
+ return secret;
+ }
+
+ @Override
+ public String getProvider() {
+ return provider;
+ }
+
+ @Override
+ public String getSignInMethod() {
+ return provider;
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(DefaultOAuthCredential.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/EmailAuthCredential.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/EmailAuthCredential.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6adfd2c147a97e10899c4e054857523b19e350e
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/EmailAuthCredential.java
@@ -0,0 +1,54 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+
+/**
+ * Wraps an email and password tuple for authentication purposes.
+ */
+@PublicApi
+public class EmailAuthCredential extends AuthCredential {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String email;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String password;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public String signInLink;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public String cachedState;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public boolean isForLinking;
+
+ /**
+ * Returns the unique string identifier for the provider type with which the credential is associated.
+ */
+ @Override
+ public String getProvider() {
+ return "password";
+ }
+
+ /**
+ * Returns either {@link EmailAuthProvider#EMAIL_LINK_SIGN_IN_METHOD} for a credential generated with {@link EmailAuthProvider#getCredentialWithLink(String, String)} or {@link EmailAuthProvider#EMAIL_PASSWORD_SIGN_IN_METHOD} for a credential generated with {@link EmailAuthProvider#getCredential(String, String)}.
+ */
+ @Override
+ public String getSignInMethod() {
+ if (password != null && !password.isEmpty()) {
+ return "password";
+ }
+ return "emailLink";
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(EmailAuthCredential.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/OAuthCredential.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/OAuthCredential.java
new file mode 100644
index 0000000000000000000000000000000000000000..772a456e879f61477d52521dbdae82130d0e832a
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/OAuthCredential.java
@@ -0,0 +1,32 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+
+/**
+ * Holds credentials generated by a sign-in with a credential to an IDP that uses OAuth
+ */
+@PublicApi
+public abstract class OAuthCredential extends AuthCredential {
+ /**
+ * Returns the OAuth access token associated with this credential.
+ */
+ public abstract String getAccessToken();
+
+ /**
+ * Returns the OAuth ID token associated with this credential.
+ */
+ public abstract String getIdToken();
+
+ /**
+ * Returns the OAuth secret associated with this credential. This will be null for OAuth 2.0 providers.
+ */
+ public abstract String getSecret();
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java
new file mode 100644
index 0000000000000000000000000000000000000000..1798a307faeffc25aaa2d55506dc62851927ed68
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java
@@ -0,0 +1,64 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+
+/**
+ * Wraps phone number and verification information for authentication purposes.
+ */
+@PublicApi
+public class PhoneAuthCredential extends AuthCredential {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String sessionInfo;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String smsCode;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public boolean hasVerificationCode;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public String phoneNumber;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public boolean autoCreate;
+ @Field(6)
+ @PublicApi(exclude = true)
+ public String temporaryProof;
+ @Field(7)
+ @PublicApi(exclude = true)
+ public String mfaEnrollmentId;
+
+ /**
+ * Returns the unique string identifier for the provider type with which the credential is associated.
+ */
+ @Override
+ public String getProvider() {
+ return "phone";
+ }
+
+ /**
+ * Returns the unique string identifier for the sign in method with which the credential is associated. Should match that returned by {@link FirebaseAuth#fetchSignInMethodsForEmail(String)} after this user has signed in with this type of credential.
+ */
+ @Override
+ public String getSignInMethod() {
+ return "phone";
+ }
+
+ /**
+ * Gets the auto-retrieved SMS verification code if applicable. When SMS verification is used, you will be called back first via onCodeSent(String, PhoneAuthProvider.ForceResendingToken), and later onVerificationCompleted(PhoneAuthCredential) with a {@link PhoneAuthCredential} containing a non-null SMS code if auto-retrieval succeeded. If Firebase used another approach to verify the phone number and triggers a callback via onVerificationCompleted(PhoneAuthCredential), then SMS code can be null.
+ */
+ public String getSmsCode() {
+ return smsCode;
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(PhoneAuthCredential.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a86c21da6ad52e6f04fc46ff5c3a059c63b7c9a5
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java
@@ -0,0 +1,88 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import android.net.Uri;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+/**
+ * Request used to update user profile information.
+ */
+@PublicApi
+public class UserProfileChangeRequest extends AutoSafeParcelable {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String displayName;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String photoUrl;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public boolean shouldRemoveDisplayName;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public boolean shouldRemovePhotoUri;
+
+ private UserProfileChangeRequest() {
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public Uri getPhotoUri() {
+ return Uri.parse(photoUrl);
+ }
+
+ /**
+ * The request builder.
+ */
+ public static class Builder {
+ private String displayName;
+ private Uri photoUri;
+ private boolean shouldRemoveDisplayName;
+ private boolean shouldRemovePhotoUri;
+
+ /**
+ * Sets the updated display name.
+ * @return the {@link UserProfileChangeRequest.Builder} for chaining
+ */
+ public Builder setDisplayName(String displayName) {
+ this.displayName = displayName;
+ shouldRemoveDisplayName = displayName == null;
+ return this;
+ }
+
+ /**
+ * Sets the updated photo {@link Uri}.
+ * @return the {@link UserProfileChangeRequest.Builder} for chaining
+ */
+ public Builder setPhotoUri(Uri photoUri) {
+ this.photoUri = photoUri;
+ shouldRemovePhotoUri = photoUri == null;
+ return this;
+ }
+
+ /**
+ * Returns a {@link UserProfileChangeRequest} instance
+ */
+ public UserProfileChangeRequest build() {
+ UserProfileChangeRequest request = new UserProfileChangeRequest();
+ request.displayName = displayName;
+ request.photoUrl = photoUri.toString();
+ request.shouldRemoveDisplayName = shouldRemoveDisplayName;
+ request.shouldRemovePhotoUri = shouldRemovePhotoUri;
+ return request;
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(UserProfileChangeRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d68ed77c73f024a4b65bff050aca7783f30d964d
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ApplyActionCodeAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ApplyActionCodeAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..70b4e103d6f73f9518f733e77b9608a96a7eee4b
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ChangeEmailAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ChangeEmailAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..70823dad52c6d74473d1e9cbbdf72bede36af25d
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ChangePasswordAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ChangePasswordAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..57f3f942e220c0754e287333f87f9fba180fe1e8
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CheckActionCodeAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(CheckActionCodeAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9505ed8cb7831e2f7f00f045d95d51a40ead535
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ConfirmPasswordResetAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ConfirmPasswordResetAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..e32735a45a0eaf4734542b72489f6101c1f74435
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java
@@ -0,0 +1,27 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CreateAuthUriResponse extends AutoSafeParcelable {
+ @Field(2)
+ public String authUri;
+ @Field(3)
+ public boolean isRegistered;
+ @Field(4)
+ public String providerId;
+ @Field(5)
+ public boolean isForExistingProvider;
+ @Field(6)
+ public StringList stringList = new StringList();
+ @Field(7)
+ public List signInMethods = new ArrayList<>();
+ public static final Creator CREATOR = new AutoCreator<>(CreateAuthUriResponse.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a1eb8b99f9f16bd868cbc7c96144272f6430baa4
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateUserWithEmailAndPasswordAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String password;
+ @Field(3)
+ public String tenantId;
+
+ public static final Creator CREATOR = new AutoCreator<>(CreateUserWithEmailAndPasswordAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d815a6e17ba6ae904b19a0df99de822baed342d
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DeleteAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(DeleteAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d76ac82f7d9699ee3ceb2d21e3c6fd71874792a3
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FinalizeMfaEnrollmentAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(FinalizeMfaEnrollmentAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f578a74037c21ad4a3b53a7b8c7994828c0f574d
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FinalizeMfaSignInAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(FinalizeMfaSignInAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b7d9e993ec6c695bd120f46d7c01ff20c598633
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java
@@ -0,0 +1,15 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetAccessTokenAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String refreshToken;
+
+ public static final Creator CREATOR = new AutoCreator<>(GetAccessTokenAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java
new file mode 100644
index 0000000000000000000000000000000000000000..6113649cd42816e0cc5e29e7f6f050172c0a3ddf
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java
@@ -0,0 +1,43 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.DefaultOAuthCredential;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.List;
+
+public class GetAccountInfoUser extends AutoSafeParcelable {
+ @Field(2)
+ public String localId;
+ @Field(3)
+ public String email;
+ @Field(4)
+ public boolean isEmailVerified;
+ @Field(5)
+ public String displayName;
+ @Field(6)
+ public String photoUrl;
+ @Field(7)
+ public ProviderUserInfoList providerInfoList = new ProviderUserInfoList();
+ @Field(8)
+ public String password;
+ @Field(9)
+ public String phoneNumber;
+ @Field(10)
+ public long creationTimestamp;
+ @Field(11)
+ public long lastSignInTimestamp;
+ @Field(12)
+ public boolean isNewUser;
+ @Field(13)
+ public DefaultOAuthCredential defaultOAuthCredential;
+ @Field(14)
+ public List mfaInfoList;
+
+ public static final Creator CREATOR = new AutoCreator<>(GetAccountInfoUser.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..393bf1192dfdb25cff92bfdb9adff4e62f2caa52
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetProvidersForEmailAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(GetProvidersForEmailAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..66e786f789151ca8636fb3235539ba213118a9a1
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java
@@ -0,0 +1,44 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetTokenResponse extends AutoSafeParcelable {
+ @Field(2)
+ public String refreshToken;
+ @Field(3)
+ public String accessToken;
+ @Field(4)
+ public Long expiresIn;
+ @Field(5)
+ public String tokenType;
+ @Field(6)
+ public Long issuedAt;
+
+ public GetTokenResponse() {
+ issuedAt = System.currentTimeMillis();
+ }
+
+ public static GetTokenResponse parseJson(String json) {
+ try {
+ JSONObject object = new JSONObject(json);
+ GetTokenResponse response = new GetTokenResponse();
+ response.refreshToken = object.optString("refresh_token", null);
+ response.accessToken = object.optString("access_token", null);
+ response.tokenType = object.optString("token_type", null);
+ response.expiresIn = object.optLong("expires_in");
+ response.issuedAt = object.optLong("issued_at");
+ return response;
+ } catch (JSONException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(GetTokenResponse.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f80f2ceea2008372d3335f6f2bd02248d4b7bf2b
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LinkEmailAuthCredentialAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String password;
+ @Field(3)
+ public String cachedState;
+ public static final Creator CREATOR = new AutoCreator<>(LinkEmailAuthCredentialAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..6fd81225fcdf2178df29dea537ea43b46227e666
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LinkFederatedCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LinkFederatedCredentialAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..afc653b476cf25898c17bf4e3c22c896e37e2456
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LinkPhoneAuthCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LinkPhoneAuthCredentialAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e2ddaf0aee51282f4bb23b3b0d19962bb9a202d
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class MfaInfo extends AutoSafeParcelable {
+
+
+ public static final Creator CREATOR = new AutoCreator<>(MfaInfo.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f7a19b0775e13d9b659e08bb2fa4ca125637240
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java
@@ -0,0 +1,27 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ProviderUserInfo extends AutoSafeParcelable {
+ @Field(2)
+ public String federatedId;
+ @Field(3)
+ public String displayName;
+ @Field(4)
+ public String photoUrl;
+ @Field(5)
+ public String providerId;
+ @Field(6)
+ public String rawUserInfo;
+ @Field(7)
+ public String phoneNumber;
+ @Field(8)
+ public String email;
+
+ public static final Creator CREATOR = new AutoCreator<>(ProviderUserInfo.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java
new file mode 100644
index 0000000000000000000000000000000000000000..ff99d31e2ea0bf9c7fadc46f645f045f630ca421
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ProviderUserInfoList extends AutoSafeParcelable {
+ @Field(2)
+ public List providerUserInfos = new ArrayList<>();
+
+
+ public static final Creator CREATOR = new AutoCreator<>(ProviderUserInfoList.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..de609f76f3b14fa7968c14b599e2216645635d92
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ReloadAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String cachedState;
+ public static final Creator CREATOR = new AutoCreator<>(ReloadAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..06af06364d1079c3925ad6d3dfed45123328dba1
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java
@@ -0,0 +1,20 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ResetPasswordResponse extends AutoSafeParcelable {
+ @Field(2)
+ public String email;
+ @Field(3)
+ public String newEmail;
+ @Field(4)
+ public String requestType;
+ @Field(5)
+ public MfaInfo mfaInfo;
+ public static final Creator CREATOR = new AutoCreator<>(ResetPasswordResponse.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bda971e6568bfdeea59c4feb3aa01f561f304d4
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.ActionCodeSettings;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendEmailVerificationWithSettingsAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String token;
+ @Field(2)
+ public ActionCodeSettings settings;
+ public static final Creator CREATOR = new AutoCreator<>(SendEmailVerificationWithSettingsAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..04dd49cc0ab525e244a53da90595e985c742f490
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java
@@ -0,0 +1,20 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.ActionCodeSettings;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendGetOobConfirmationCodeEmailAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public ActionCodeSettings settings;
+ @Field(3)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(SendGetOobConfirmationCodeEmailAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9b3eccd3ff0b459feb9c6fab314d4bf91188a0d6
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendVerificationCodeAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public SendVerificationCodeRequest request;
+ public static final Creator CREATOR = new AutoCreator<>(SendVerificationCodeAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..971d6fa78293156cdd142f1840e090a04c569874
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java
@@ -0,0 +1,25 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendVerificationCodeRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String phoneNumber;
+ @Field(2)
+ public Long timeoutInSeconds;
+ @Field(3)
+ public boolean forceNewSmsVerificationSession;
+ @Field(4)
+ public String languageHeader;
+ @Field(5)
+ public String tenantId;
+ @Field(6)
+ public String recaptchaToken;
+
+ public static final Creator CREATOR = new AutoCreator<>(SendVerificationCodeRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..964382e81e229aa993cb9415f16f54accf7f7b1c
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SetFirebaseUiVersionAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(SetFirebaseUiVersionAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..2549412d6e9d1c7786190fe4c5b76ac61df27931
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInAnonymouslyAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(SignInAnonymouslyAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..94190acb770b3246e85c658e80de733defd06852
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithCredentialAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f7f10775c5afc34271870eaed698aaf328c8c3a
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithCustomTokenAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String token;
+ @Field(2)
+ public String tenantId;
+
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithCustomTokenAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c8aa04d97f7fc40e8c7ff07ec6863ef51cf57076
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithEmailAndPasswordAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String password;
+ @Field(3)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithEmailAndPasswordAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..71028fa1fafd4e036800f2f8eb6a45b42f03d871
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithEmailLinkAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithEmailLinkAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d076cf30a774c140d6fb51c3188bb9fff21497bd
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.PhoneAuthCredential;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithPhoneNumberAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public PhoneAuthCredential credential;
+ @Field(2)
+ public String tenantId;
+
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithPhoneNumberAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4a93b6bf8ba66360caf42cfb270ce4b75bb875b
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class StartMfaPhoneNumberEnrollmentAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(StartMfaPhoneNumberEnrollmentAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..151d4e6ea4e8edf1857020530cab612b9feab3cd
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class StartMfaPhoneNumberSignInAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(StartMfaPhoneNumberSignInAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StringList.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StringList.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c72245c3936e167727af6fe9ee3f752d2e21a76
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StringList.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StringList extends AutoSafeParcelable {
+ @Field(1)
+ public int versionCode = 1;
+ @Field(2)
+ public List values = new ArrayList<>();
+ public static final Creator CREATOR = new AutoCreator<>(StringList.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..49c4b0f66324058e77c25110edc35f34a108509e
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UnenrollMfaAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(UnenrollMfaAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..55770dd95cacdf3619ba69f5cff6e573f2bd8f0c
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UnlinkEmailCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(UnlinkEmailCredentialAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..1533997c7173d7051be431341f4cdcf836305c55
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UnlinkFederatedCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(UnlinkFederatedCredentialAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..25d40202c307cf916e691063f00b8039b8fd66c4
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.UserProfileChangeRequest;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UpdateProfileAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public UserProfileChangeRequest request;
+ @Field(2)
+ public String cachedState;
+ public static final Creator CREATOR = new AutoCreator<>(UpdateProfileAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..47e3c22027bc034bc5bc32e2af1d438d5ab9383a
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class VerifyAssertionRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(VerifyAssertionRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6d5c1211f5d9773f6a1ca26be2e852a4d3fd8ad
--- /dev/null
+++ b/firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class VerifyBeforeUpdateEmailAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(VerifyBeforeUpdateEmailAidlRequest.class);
+}
diff --git a/firebase-auth-api/src/main/java/org/microg/gms/firebase/auth/Constants.java b/firebase-auth-api/src/main/java/org/microg/gms/firebase/auth/Constants.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f83c9fec481f738356e20270cfe1cc80916bd97
--- /dev/null
+++ b/firebase-auth-api/src/main/java/org/microg/gms/firebase/auth/Constants.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.firebase.auth;
+
+public class Constants {
+ public static final String EXTRA_API_KEY = "com.google.firebase.auth.API_KEY";
+ public static final String EXTRA_LIBRARY_VERSION = "com.google.firebase.auth.LIBRARY_VERSION";
+}
diff --git a/firebase-auth-core/build.gradle b/firebase-auth-core/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..4a2e3e465ff47267465d3dd6c51c57f4addfc2be
--- /dev/null
+++ b/firebase-auth-core/build.gradle
@@ -0,0 +1,46 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+
+dependencies {
+ api project(':firebase-auth-api')
+
+ implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion"
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion"
+
+ implementation "androidx.appcompat:appcompat:$appcompatVersion"
+
+ implementation project(':play-services-base-core')
+ implementation project(':play-services-base-core-ui')
+
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion"
+
+ implementation "com.android.volley:volley:$volleyVersion"
+}
+
+android {
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+}
diff --git a/firebase-auth-core/src/main/AndroidManifest.xml b/firebase-auth-core/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d3507793995dd3a381ae9f9faf05ff3b09d85a4f
--- /dev/null
+++ b/firebase-auth-core/src/main/AndroidManifest.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/firebase-auth-core/src/main/assets/recaptcha.html b/firebase-auth-core/src/main/assets/recaptcha.html
new file mode 100644
index 0000000000000000000000000000000000000000..3da22b32ee7e6cca42581a00f13a6ff5bcc0a5d3
--- /dev/null
+++ b/firebase-auth-core/src/main/assets/recaptcha.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt
new file mode 100644
index 0000000000000000000000000000000000000000..18f9d9e32f15873b31913b7621cd4552ccc5d7dc
--- /dev/null
+++ b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt
@@ -0,0 +1,649 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.firebase.auth
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.os.Build
+import android.os.Handler
+import android.os.Parcel
+import android.provider.Telephony
+import android.telephony.SmsMessage
+import android.util.Log
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.lifecycleScope
+import com.google.android.gms.common.api.CommonStatusCodes
+import com.google.android.gms.common.api.Status
+import com.google.android.gms.common.internal.GetServiceRequest
+import com.google.android.gms.common.internal.IGmsCallbacks
+import com.google.firebase.auth.ActionCodeSettings
+import com.google.firebase.auth.EmailAuthCredential
+import com.google.firebase.auth.PhoneAuthCredential
+import com.google.firebase.auth.UserProfileChangeRequest
+import com.google.firebase.auth.api.internal.*
+import org.json.JSONArray
+import org.json.JSONObject
+import org.microg.gms.BaseService
+import org.microg.gms.common.GmsService
+import org.microg.gms.common.PackageUtils
+
+private const val TAG = "GmsFirebaseAuth"
+
+fun JSONObject.getStringOrNull(key: String) = if (has(key)) getString(key) else null
+fun JSONObject.getJSONArrayOrNull(key: String) = if (has(key)) getJSONArray(key) else null
+fun JSONArray?.orEmpty() = this ?: JSONArray()
+fun JSONObject.getJSONArrayLength(key: String) = getJSONArrayOrNull(key).orEmpty().length()
+
+private val ActionCodeSettings.requestTypeAsString: String
+ get() = when (requestType) {
+ 1 -> "PASSWORD_RESET"
+ 2 -> "OLD_EMAIL_AGREE"
+ 3 -> "NEW_EMAIL_ACCEPT"
+ 4 -> "VERIFY_EMAIL"
+ 5 -> "RECOVER_EMAIL"
+ 6 -> "EMAIL_SIGNIN"
+ 7 -> "VERIFY_AND_CHANGE_EMAIL"
+ 8 -> "REVERT_SECOND_FACTOR_ADDITION"
+ else -> "OOB_REQ_TYPE_UNSPECIFIED"
+ }
+
+private val UserProfileChangeRequest.deleteAttributeList: List
+ get() {
+ val list = arrayListOf()
+ if (shouldRemoveDisplayName) list.add("DISPLAY_NAME")
+ if (shouldRemovePhotoUri) list.add("PHOTO_URL")
+ return list
+ }
+
+private fun Intent.getSmsMessages(): Array {
+ return if (Build.VERSION.SDK_INT >= 19) {
+ Telephony.Sms.Intents.getMessagesFromIntent(this)
+ } else {
+ (getSerializableExtra("pdus") as? Array)?.map { SmsMessage.createFromPdu(it) }.orEmpty().toTypedArray()
+ }
+}
+
+class FirebaseAuthService : BaseService(TAG, GmsService.FIREBASE_AUTH) {
+ override fun handleServiceRequest(callback: IGmsCallbacks, request: GetServiceRequest, service: GmsService?) {
+ PackageUtils.getAndCheckCallingPackage(this, request.packageName)
+ val apiKey = request.extras?.getString(Constants.EXTRA_API_KEY)
+ val libraryVersion = request.extras?.getString(Constants.EXTRA_LIBRARY_VERSION)
+ if (apiKey == null || libraryVersion == null) {
+ callback.onPostInitComplete(CommonStatusCodes.DEVELOPER_ERROR, null, null)
+ } else {
+ callback.onPostInitComplete(0, FirebaseAuthServiceImpl(this, lifecycle, request.packageName, libraryVersion, apiKey).asBinder(), null)
+ }
+ }
+}
+
+class FirebaseAuthServiceImpl(private val context: Context, private val lifecycle: Lifecycle, private val packageName: String, private val libraryVersion: String, private val apiKey: String) : IFirebaseAuthService.Stub(), LifecycleOwner {
+ private val client = IdentityToolkitClient(context, apiKey)
+ private var authorizedDomain: String? = null
+
+ private suspend fun getAuthorizedDomain(): String {
+ authorizedDomain?.let { return it }
+ val authorizedDomain = try {
+ client.getProjectConfig().getJSONArray("authorizedDomains").getString(0)
+ } catch (e: Exception) {
+ Log.w(TAG, e)
+ "localhost"
+ }
+ this.authorizedDomain = authorizedDomain
+ return authorizedDomain
+ }
+
+ private suspend fun refreshTokenResponse(cachedState: String): GetTokenResponse {
+ var tokenResponse = GetTokenResponse.parseJson(cachedState)
+ if (System.currentTimeMillis() + 300000L < tokenResponse.issuedAt + tokenResponse.expiresIn * 1000) {
+ return tokenResponse
+ }
+ return client.getTokenByRefreshToken(tokenResponse.refreshToken).toGetTokenResponse()
+ }
+
+ private fun JSONObject.toGetTokenResponse() = GetTokenResponse().apply {
+ refreshToken = getStringOrNull("refresh_token")
+ accessToken = getStringOrNull("access_token")
+ expiresIn = getStringOrNull("expires_in")?.toLong()
+ tokenType = getStringOrNull("token_type")
+ }
+
+ private fun JSONObject.toGetAccountInfoUser(): GetAccountInfoUser = GetAccountInfoUser().apply {
+ localId = getStringOrNull("localId")
+ email = getStringOrNull("email")
+ isEmailVerified = optBoolean("emailVerified")
+ displayName = getStringOrNull("displayName")
+ photoUrl = getStringOrNull("photoUrl")
+ for (i in 0 until getJSONArrayLength("providerUserInfo")) {
+ getJSONArray("providerUserInfo").getJSONObject(i).run {
+ providerInfoList.providerUserInfos.add(ProviderUserInfo().apply {
+ federatedId = getStringOrNull("federatedId")
+ displayName = getStringOrNull("displayName")
+ photoUrl = getStringOrNull("photoUrl")
+ providerId = getStringOrNull("providerId")
+ phoneNumber = getStringOrNull("phoneNumber")
+ email = getStringOrNull("email")
+ rawUserInfo = this@run.toString()
+ })
+ }
+ }
+ password = getStringOrNull("rawPassword")
+ phoneNumber = getStringOrNull("phoneNumber")
+ creationTimestamp = getStringOrNull("createdAt")?.toLong() ?: 0L
+ lastSignInTimestamp = getStringOrNull("lastLoginAt")?.toLong() ?: 0L
+ }
+
+ private fun JSONObject.toCreateAuthUriResponse(): CreateAuthUriResponse = CreateAuthUriResponse().apply {
+ authUri = getStringOrNull("authUri")
+ isRegistered = optBoolean("registered")
+ providerId = getStringOrNull("providerId")
+ isForExistingProvider = optBoolean("forExistingProvider")
+ for (i in 0 until getJSONArrayLength("allProviders")) {
+ stringList.values.add(getJSONArray("allProviders").getString(i))
+ }
+ for (i in 0 until getJSONArrayLength("signinMethods")) {
+ signInMethods.add(getJSONArray("signinMethods").getString(i))
+ }
+ }
+
+ override fun getLifecycle(): Lifecycle = lifecycle
+
+ override fun applyActionCode(request: ApplyActionCodeAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: applyActionCode")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun applyActionCodeCompat(code: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: applyActionCodeCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun changeEmail(request: ChangeEmailAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: changeEmail")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun changeEmailCompat(cachedState: String?, email: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: changeEmailCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun changePassword(request: ChangePasswordAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: changePassword")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun changePasswordCompat(cachedState: String?, password: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: changePasswordCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun checkActionCode(request: CheckActionCodeAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: checkActionCode")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun checkActionCodeCompat(code: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: checkActionCodeCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun confirmPasswordReset(request: ConfirmPasswordResetAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: confirmPasswordReset")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun confirmPasswordResetCompat(code: String?, newPassword: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: confirmPasswordResetCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun createUserWithEmailAndPassword(request: CreateUserWithEmailAndPasswordAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "createUserWithEmailAndPassword")
+ try {
+ val tokenResult = client.signupNewUser(email = request.email, password = request.password, tenantId = request.tenantId)
+ val idToken = tokenResult.getString("idToken")
+ val refreshToken = tokenResult.getString("refreshToken")
+ val getTokenResponse = client.getTokenByRefreshToken(refreshToken).toGetTokenResponse()
+ val accountInfoResult = client.getAccountInfo(idToken = idToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser().apply { this.isNewUser = true }
+ Log.d(TAG, "callback: onGetTokenResponseAndUser")
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun createUserWithEmailAndPasswordCompat(email: String?, password: String?, callbacks: IFirebaseAuthCallbacks) {
+ createUserWithEmailAndPassword(CreateUserWithEmailAndPasswordAidlRequest().apply { this.email = email; this.password = password }, callbacks)
+ }
+
+ override fun delete(request: DeleteAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: delete")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun deleteCompat(cachedState: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: deleteCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun finalizeMfaEnrollment(request: FinalizeMfaEnrollmentAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: finalizeMfaEnrollment")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun finalizeMfaSignIn(request: FinalizeMfaSignInAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: finalizeMfaSignIn")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun getAccessToken(request: GetAccessTokenAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "getAccessToken")
+ try {
+ callbacks.onGetTokenResponse(client.getTokenByRefreshToken(request.refreshToken).toGetTokenResponse())
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun getAccessTokenCompat(refreshToken: String?, callbacks: IFirebaseAuthCallbacks) {
+ getAccessToken(GetAccessTokenAidlRequest().apply { this.refreshToken = refreshToken }, callbacks)
+ }
+
+ override fun getProvidersForEmail(request: GetProvidersForEmailAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "getProvidersForEmail")
+ try {
+ callbacks.onCreateAuthUriResponse(client.createAuthUri(identifier = request.email, tenantId = request.tenantId).toCreateAuthUriResponse())
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun getProvidersForEmailCompat(email: String?, callbacks: IFirebaseAuthCallbacks) {
+ getProvidersForEmail(GetProvidersForEmailAidlRequest().apply { this.email = email }, callbacks)
+ }
+
+ override fun linkEmailAuthCredential(request: LinkEmailAuthCredentialAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "linkEmailAuthCredential")
+ try {
+ val getTokenResponse = refreshTokenResponse(request.cachedState)
+ val accountInfoResult = client.getAccountInfo(idToken = getTokenResponse.accessToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser()
+ val setAccountInfo = client.setAccountInfo(idToken = getTokenResponse.accessToken, localId = accountInfoResult.localId, email = request.email, password = request.password).toGetAccountInfoUser()
+ accountInfoResult.email = setAccountInfo.email
+ accountInfoResult.isEmailVerified = setAccountInfo.isEmailVerified
+ accountInfoResult.providerInfoList = setAccountInfo.providerInfoList
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun linkEmailAuthCredentialCompat(email: String?, password: String?, cachedState: String?, callbacks: IFirebaseAuthCallbacks) {
+ linkEmailAuthCredential(LinkEmailAuthCredentialAidlRequest().apply { this.email = email; this.password = password; this.cachedState = cachedState }, callbacks)
+ }
+
+ override fun linkFederatedCredential(request: LinkFederatedCredentialAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: linkFederatedCredential")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun linkFederatedCredentialCompat(cachedState: String?, verifyAssertionRequest: VerifyAssertionRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: linkFederatedCredentialCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun linkPhoneAuthCredential(request: LinkPhoneAuthCredentialAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: linkPhoneAuthCredential")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun linkPhoneAuthCredentialCompat(cachedState: String?, credential: PhoneAuthCredential?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: linkPhoneAuthCredentialCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun reload(request: ReloadAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ try {
+ Log.d(TAG, "reload")
+ val getTokenResponse = refreshTokenResponse(request.cachedState)
+ val accountInfoResult = client.getAccountInfo(idToken = getTokenResponse.accessToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser()
+ Log.d(TAG, "callback: onGetTokenResponseAndUser")
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun reloadCompat(cachedState: String?, callbacks: IFirebaseAuthCallbacks) {
+ reload(ReloadAidlRequest().apply { this.cachedState = cachedState }, callbacks)
+ }
+
+ override fun sendEmailVerification(request: SendEmailVerificationWithSettingsAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ try {
+ Log.d(TAG, "sendEmailVerification")
+ client.getOobConfirmationCode(
+ requestType = "VERIFY_EMAIL",
+ idToken = request.token,
+ iOSBundleId = request.settings?.iOSBundle,
+ iOSAppStoreId = request.settings?.iOSAppStoreId,
+ continueUrl = request.settings?.url,
+ androidInstallApp = request.settings?.androidInstallApp,
+ androidMinimumVersion = request.settings?.androidMinimumVersion,
+ androidPackageName = request.settings?.androidPackageName,
+ canHandleCodeInApp = request.settings?.handleCodeInApp
+ )
+ callbacks.onEmailVerificationResponse()
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun sendEmailVerificationCompat(token: String?, actionCodeSettings: ActionCodeSettings?, callbacks: IFirebaseAuthCallbacks) {
+ sendEmailVerification(SendEmailVerificationWithSettingsAidlRequest().apply { this.token = token; this.settings = actionCodeSettings }, callbacks)
+ }
+
+ override fun sendVerificationCode(request: SendVerificationCodeAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ try {
+ Log.d(TAG, "sendVerificationCode")
+ val reCaptchaToken = when {
+ request.request.recaptchaToken != null -> request.request.recaptchaToken
+ ReCaptchaOverlay.isSupported(context) -> ReCaptchaOverlay.awaitToken(context, apiKey, getAuthorizedDomain())
+ ReCaptchaActivity.isSupported(context) -> ReCaptchaActivity.awaitToken(context, apiKey, getAuthorizedDomain())
+ else -> throw RuntimeException("No recaptcha token available")
+ }
+ var sessionInfo: String? = null
+ var registered = true
+ val receiver = object : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ var smsCode: String? = null
+ for (message in intent.getSmsMessages()) {
+ smsCode = Regex("\\b([0-9]{6})\\b").find(message.messageBody)?.groups?.get(1)?.value
+ ?: continue
+ Log.d(TAG, "Received SMS verification code: $smsCode")
+ break
+ }
+ if (smsCode == null) return
+ registered = false
+ context.unregisterReceiver(this)
+ try {
+ callbacks.onVerificationCompletedResponse(PhoneAuthCredential().apply {
+ this.phoneNumber = request.request.phoneNumber
+ this.sessionInfo = sessionInfo
+ this.smsCode = smsCode
+ })
+ Log.d(TAG, "callback: onVerificationCompletedResponse")
+ } catch (e: Exception) {
+ Log.w(TAG, e)
+ }
+ }
+ }
+ context.registerReceiver(receiver, IntentFilter("android.provider.Telephony.SMS_RECEIVED"))
+ var timeout = request.request.timeoutInSeconds * 1000L
+ if (timeout <= 0L) timeout = 120000L
+ Handler().postDelayed({
+ if (registered) {
+ Log.d(TAG, "Waited ${timeout}ms for verification code SMS, timeout.")
+ context.unregisterReceiver(receiver)
+ callbacks.onVerificationAutoTimeOut(sessionInfo)
+ Log.d(TAG, "callback: onVerificationAutoTimeOut")
+ }
+ }, timeout)
+ sessionInfo = client.sendVerificationCode(phoneNumber = request.request.phoneNumber, reCaptchaToken = reCaptchaToken).getString("sessionInfo")
+ callbacks.onSendVerificationCodeResponse(sessionInfo)
+ Log.d(TAG, "callback: onSendVerificationCodeResponse")
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun sendVerificationCodeCompat(request: SendVerificationCodeRequest, callbacks: IFirebaseAuthCallbacks) {
+ sendVerificationCode(SendVerificationCodeAidlRequest().apply { this.request = request }, callbacks)
+ }
+
+ override fun sendGetOobConfirmationCodeEmail(request: SendGetOobConfirmationCodeEmailAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ try {
+ Log.d(TAG, "sendGetOobConfirmationCodeEmail")
+ client.getOobConfirmationCode(
+ requestType = request.settings?.requestTypeAsString ?: "OOB_REQ_TYPE_UNSPECIFIED",
+ email = request.email,
+ iOSBundleId = request.settings?.iOSBundle,
+ iOSAppStoreId = request.settings?.iOSAppStoreId,
+ continueUrl = request.settings?.url,
+ androidInstallApp = request.settings?.androidInstallApp,
+ androidMinimumVersion = request.settings?.androidMinimumVersion,
+ androidPackageName = request.settings?.androidPackageName,
+ canHandleCodeInApp = request.settings?.handleCodeInApp
+ )
+ Log.d(TAG, "callback: onResetPasswordResponse")
+ callbacks.onResetPasswordResponse(null)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun sendGetOobConfirmationCodeEmailCompat(email: String?, actionCodeSettings: ActionCodeSettings?, callbacks: IFirebaseAuthCallbacks) {
+ sendGetOobConfirmationCodeEmail(SendGetOobConfirmationCodeEmailAidlRequest().apply { this.email = email; this.settings = actionCodeSettings }, callbacks)
+ }
+
+ override fun setFirebaseUiVersion(request: SetFirebaseUiVersionAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: setFirebaseUiVersion")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun setFirebaseUIVersionCompat(firebaseUiVersion: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: setFirebaseUIVersionCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun signInAnonymously(request: SignInAnonymouslyAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "signInAnonymously")
+ try {
+ val tokenResult = client.signupNewUser(tenantId = request.tenantId)
+ val idToken = tokenResult.getString("idToken")
+ val refreshToken = tokenResult.getString("refreshToken")
+ val getTokenResponse = client.getTokenByRefreshToken(refreshToken).toGetTokenResponse()
+ val accountInfoResult = client.getAccountInfo(idToken = idToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser().apply { this.isNewUser = true }
+ Log.d(TAG, "callback: onGetTokenResponseAndUser")
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun signInAnonymouslyCompat(callbacks: IFirebaseAuthCallbacks) {
+ signInAnonymously(SignInAnonymouslyAidlRequest(), callbacks)
+ }
+
+ override fun signInWithCredential(request: SignInWithCredentialAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: signInWithCredential")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun signInWithCredentialCompat(verifyAssertionRequest: VerifyAssertionRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: signInWithCredentialCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun signInWithCustomToken(request: SignInWithCustomTokenAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "signInWithCustomToken")
+ try {
+ val tokenResult = client.verifyCustomToken(token = request.token)
+ val idToken = tokenResult.getString("idToken")
+ val refreshToken = tokenResult.getString("refreshToken")
+ val isNewUser = tokenResult.optBoolean("isNewUser")
+ val getTokenResponse = client.getTokenByRefreshToken(refreshToken).toGetTokenResponse()
+ val accountInfoResult = client.getAccountInfo(idToken = idToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser().apply { this.isNewUser = isNewUser }
+ Log.d(TAG, "callback: onGetTokenResponseAndUser")
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun signInWithCustomTokenCompat(token: String, callbacks: IFirebaseAuthCallbacks) {
+ signInWithCustomToken(SignInWithCustomTokenAidlRequest().apply { this.token = token }, callbacks)
+ }
+
+ override fun signInWithEmailAndPassword(request: SignInWithEmailAndPasswordAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "signInWithEmailAndPassword")
+ try {
+ val tokenResult = client.verifyPassword(email = request.email, password = request.password, tenantId = request.tenantId)
+ val idToken = tokenResult.getString("idToken")
+ val refreshToken = tokenResult.getString("refreshToken")
+ val getTokenResponse = client.getTokenByRefreshToken(refreshToken).toGetTokenResponse()
+ val accountInfoResult = client.getAccountInfo(idToken = idToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser()
+ Log.d(TAG, "callback: onGetTokenResponseAndUser")
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun signInWithEmailAndPasswordCompat(email: String?, password: String?, callbacks: IFirebaseAuthCallbacks) {
+ signInWithEmailAndPassword(SignInWithEmailAndPasswordAidlRequest().apply { this.email = email; this.password = password }, callbacks)
+ }
+
+ override fun signInWithEmailLink(request: SignInWithEmailLinkAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: signInWithEmailLink")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun signInWithEmailLinkCompat(credential: EmailAuthCredential?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: signInWithEmailLinkCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun signInWithPhoneNumber(request: SignInWithPhoneNumberAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "signInWithPhoneNumber")
+ try {
+ val tokenResult = client.verifyPhoneNumber(
+ phoneNumber = request.credential.phoneNumber,
+ temporaryProof = request.credential.temporaryProof,
+ sessionInfo = request.credential.sessionInfo,
+ code = request.credential.smsCode
+ )
+ val idToken = tokenResult.getString("idToken")
+ val refreshToken = tokenResult.getString("refreshToken")
+ val isNewUser = tokenResult.optBoolean("isNewUser")
+ val getTokenResponse = client.getTokenByRefreshToken(refreshToken).toGetTokenResponse()
+ val accountInfoResult = client.getAccountInfo(idToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser().apply { this.isNewUser = isNewUser }
+ Log.d(TAG, "callback: onGetTokenResponseAndUser")
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun signInWithPhoneNumberCompat(credential: PhoneAuthCredential?, callbacks: IFirebaseAuthCallbacks) {
+ signInWithPhoneNumber(SignInWithPhoneNumberAidlRequest().apply { this.credential = credential }, callbacks)
+ }
+
+ override fun startMfaEnrollmentWithPhoneNumber(request: StartMfaPhoneNumberEnrollmentAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: startMfaEnrollmentWithPhoneNumber")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun startMfaSignInWithPhoneNumber(request: StartMfaPhoneNumberSignInAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: startMfaSignInWithPhoneNumber")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun unenrollMfa(request: UnenrollMfaAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: unenrollMfa")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun unlinkEmailCredential(request: UnlinkEmailCredentialAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: unlinkEmailCredential")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun unlinkEmailCredentialCompat(cachedState: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: unlinkEmailCredentialCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun unlinkFederatedCredential(request: UnlinkFederatedCredentialAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: unlinkFederatedCredential")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun unlinkFederatedCredentialCompat(provider: String?, cachedState: String?, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: unlinkFederatedCredentialCompat")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+ override fun updateProfile(request: UpdateProfileAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ lifecycleScope.launchWhenStarted {
+ Log.d(TAG, "updateProfile")
+ try {
+ val getTokenResponse = refreshTokenResponse(request.cachedState)
+ val accountInfoResult = client.getAccountInfo(idToken = getTokenResponse.accessToken).getJSONArray("users").getJSONObject(0).toGetAccountInfoUser()
+ val setAccountInfo = client.setAccountInfo(idToken = getTokenResponse.accessToken, localId = accountInfoResult.localId, displayName = request.request.displayName, photoUrl = request.request.photoUrl, deleteAttribute = request.request.deleteAttributeList).toGetAccountInfoUser()
+ accountInfoResult.photoUrl = setAccountInfo.photoUrl
+ accountInfoResult.displayName = setAccountInfo.displayName
+ callbacks.onGetTokenResponseAndUser(getTokenResponse, accountInfoResult)
+ } catch (e: Exception) {
+ Log.w(TAG, "callback: onFailure", e)
+ callbacks.onFailure(Status(CommonStatusCodes.INTERNAL_ERROR, e.message))
+ }
+ }
+ }
+
+ override fun updateProfileCompat(cachedState: String?, userProfileChangeRequest: UserProfileChangeRequest, callbacks: IFirebaseAuthCallbacks) {
+ updateProfile(UpdateProfileAidlRequest().apply { this.cachedState = cachedState; this.request = userProfileChangeRequest}, callbacks)
+ }
+
+ override fun verifyBeforeUpdateEmail(request: VerifyBeforeUpdateEmailAidlRequest, callbacks: IFirebaseAuthCallbacks) {
+ Log.d(TAG, "Not yet implemented: verifyBeforeUpdateEmail")
+ callbacks.onFailure(Status(CommonStatusCodes.CANCELED, "Not supported"))
+ }
+
+
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean {
+ if (super.onTransact(code, data, reply, flags)) return true
+ Log.d(TAG, "onTransact: $code, $data, $flags")
+ return false
+ }
+}
diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt
new file mode 100644
index 0000000000000000000000000000000000000000..459feb1f471932a88d496daf15c8ce17546f3bd0
--- /dev/null
+++ b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt
@@ -0,0 +1,139 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.firebase.auth
+
+import android.content.Context
+import android.util.Log
+import com.android.volley.NetworkResponse
+import com.android.volley.ParseError
+import com.android.volley.Request.Method.GET
+import com.android.volley.Request.Method.POST
+import com.android.volley.Response
+import com.android.volley.VolleyError
+import com.android.volley.toolbox.HttpHeaderParser
+import com.android.volley.toolbox.JsonObjectRequest
+import com.android.volley.toolbox.JsonRequest
+import com.android.volley.toolbox.Volley
+import org.json.JSONArray
+import org.json.JSONException
+import org.json.JSONObject
+import java.io.UnsupportedEncodingException
+import java.lang.RuntimeException
+import java.nio.charset.Charset
+import kotlin.coroutines.resume
+import kotlin.coroutines.resumeWithException
+import kotlin.coroutines.suspendCoroutine
+
+private const val TAG = "GmsFirebaseAuthClient"
+
+class IdentityToolkitClient(context: Context, private val apiKey: String) {
+ private val queue = Volley.newRequestQueue(context)
+
+ private fun buildRelyingPartyUrl(method: String) = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/$method?key=$apiKey"
+ private fun buildStsUrl(method: String) = "https://securetoken.googleapis.com/v1/$method?key=$apiKey"
+
+ private suspend fun request(method: String, data: JSONObject): JSONObject = suspendCoroutine { continuation ->
+ queue.add(JsonObjectRequest(POST, buildRelyingPartyUrl(method), data, {
+ continuation.resume(it)
+ }, {
+ Log.d(TAG, String(it.networkResponse.data))
+ continuation.resumeWithException(RuntimeException(it))
+ }))
+ }
+
+ suspend fun createAuthUri(identifier: String? = null, tenantId: String? = null, continueUri: String? = "http://localhost"): JSONObject =
+ request("createAuthUri", JSONObject()
+ .put("identifier", identifier)
+ .put("tenantId", tenantId)
+ .put("continueUri", continueUri))
+
+ suspend fun getAccountInfo(idToken: String? = null): JSONObject =
+ request("getAccountInfo", JSONObject()
+ .put("idToken", idToken))
+
+ suspend fun getProjectConfig(): JSONObject = suspendCoroutine { continuation ->
+ queue.add(JsonObjectRequest(GET, buildRelyingPartyUrl("getProjectConfig"), null, { continuation.resume(it) }, { continuation.resumeWithException(RuntimeException(it)) }))
+ }
+
+ suspend fun getOobConfirmationCode(requestType: String, email: String? = null, newEmail: String? = null, continueUrl: String? = null, idToken: String? = null, iOSBundleId: String? = null, iOSAppStoreId: String? = null, androidMinimumVersion: String? = null, androidInstallApp: Boolean? = null, androidPackageName: String? = null, canHandleCodeInApp: Boolean? = null): JSONObject =
+ request("getOobConfirmationCode", JSONObject()
+ .put("kind", "identitytoolkit#relyingparty")
+ .put("requestType", requestType)
+ .put("email", email)
+ .put("newEmail", newEmail)
+ .put("continueUrl", continueUrl)
+ .put("idToken", idToken)
+ .put("iOSBundleId", iOSBundleId)
+ .put("iOSAppStoreId", iOSAppStoreId)
+ .put("androidMinimumVersion", androidMinimumVersion)
+ .put("androidInstallApp", androidInstallApp)
+ .put("androidPackageName", androidPackageName)
+ .put("canHandleCodeInApp", canHandleCodeInApp))
+
+
+ suspend fun sendVerificationCode(phoneNumber: String? = null, reCaptchaToken: String? = null): JSONObject =
+ request("sendVerificationCode", JSONObject()
+ .put("phoneNumber", phoneNumber)
+ .put("recaptchaToken", reCaptchaToken))
+
+ suspend fun setAccountInfo(idToken: String? = null, localId: String? = null, email: String? = null, password: String? = null, displayName: String? = null, photoUrl: String? = null, deleteAttribute: List = emptyList()): JSONObject =
+ request("setAccountInfo", JSONObject()
+ .put("idToken", idToken)
+ .put("localId", localId)
+ .put("email", email)
+ .put("password", password)
+ .put("displayName", displayName)
+ .put("photoUrl", photoUrl)
+ .put("deleteAttribute", JSONArray().apply { deleteAttribute.forEach { put(it) } }))
+
+ suspend fun signupNewUser(email: String? = null, password: String? = null, tenantId: String? = null): JSONObject =
+ request("signupNewUser", JSONObject()
+ .put("email", email)
+ .put("password", password)
+ .put("tenantId", tenantId))
+
+ suspend fun verifyCustomToken(token: String? = null, returnSecureToken: Boolean = true): JSONObject =
+ request("verifyCustomToken", JSONObject()
+ .put("token", token)
+ .put("returnSecureToken", returnSecureToken))
+
+ suspend fun verifyPassword(email: String? = null, password: String? = null, tenantId: String? = null, returnSecureToken: Boolean = true): JSONObject =
+ request("verifyPassword", JSONObject()
+ .put("email", email)
+ .put("password", password)
+ .put("tenantId", tenantId)
+ .put("returnSecureToken", returnSecureToken))
+
+ suspend fun verifyPhoneNumber(phoneNumber: String? = null, sessionInfo: String? = null, code: String? = null, idToken: String? = null, verificationProof: String? = null, temporaryProof: String? = null): JSONObject =
+ request("verifyPhoneNumber", JSONObject()
+ .put("verificationProof", verificationProof)
+ .put("code", code)
+ .put("idToken", idToken)
+ .put("temporaryProof", temporaryProof)
+ .put("phoneNumber", phoneNumber)
+ .put("sessionInfo", sessionInfo))
+
+ suspend fun getTokenByRefreshToken(refreshToken: String): JSONObject = suspendCoroutine { continuation ->
+ queue.add(StsRequest(POST, buildStsUrl("token"), "grant_type=refresh_token&refresh_token=$refreshToken", { continuation.resume(it) }, { continuation.resumeWithException(RuntimeException(it)) }))
+ }
+}
+
+private class StsRequest(method: Int, url: String, request: String?, listener: (JSONObject) -> Unit, errorListener: (VolleyError) -> Unit) : JsonRequest(method, url, request, listener, errorListener) {
+ override fun parseNetworkResponse(response: NetworkResponse?): Response {
+ return try {
+ val jsonString = String(response!!.data, Charset.forName(HttpHeaderParser.parseCharset(response!!.headers, PROTOCOL_CHARSET)))
+ Response.success(JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response))
+ } catch (e: UnsupportedEncodingException) {
+ Response.error(ParseError(e))
+ } catch (je: JSONException) {
+ Response.error(ParseError(je))
+ }
+ }
+
+ override fun getBodyContentType(): String {
+ return "application/x-www-form-urlencoded"
+ }
+}
diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..784d4298a934eacc6cf583ebf92cd359efc5f8ec
--- /dev/null
+++ b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt
@@ -0,0 +1,103 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.firebase.auth
+
+import android.annotation.SuppressLint
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import android.content.Intent.*
+import android.os.Bundle
+import android.os.ResultReceiver
+import android.util.Log
+import android.webkit.JavascriptInterface
+import android.webkit.WebSettings
+import android.webkit.WebView
+import androidx.appcompat.app.AppCompatActivity
+import org.microg.gms.firebase.auth.core.R
+import kotlin.coroutines.resume
+import kotlin.coroutines.resumeWithException
+import kotlin.coroutines.suspendCoroutine
+
+private const val TAG = "GmsFirebaseAuthCaptcha"
+
+class ReCaptchaActivity : AppCompatActivity() {
+ private val receiver: ResultReceiver?
+ get() = intent.getParcelableExtra(EXTRA_RESULT_RECEIVER)
+ private val hostname: String
+ get() = intent.getStringExtra(EXTRA_HOSTNAME) ?: "localhost:5000"
+ private var finished = false
+
+ @SuppressLint("SetJavaScriptEnabled", "AddJavascriptInterface")
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ openWebsite()
+ }
+
+ private fun openWebsite() {
+ val apiKey = intent.getStringExtra(EXTRA_API_KEY) ?: return finishResult(Activity.RESULT_CANCELED)
+ setContentView(R.layout.activity_recaptcha)
+ val view = findViewById(R.id.web)
+ val settings = view.settings
+ settings.javaScriptEnabled = true
+ settings.useWideViewPort = false
+ settings.setSupportZoom(false)
+ settings.displayZoomControls = false
+ settings.cacheMode = WebSettings.LOAD_NO_CACHE
+ view.addJavascriptInterface(object : Any() {
+ @JavascriptInterface
+ fun onReCaptchaToken(token: String) {
+ Log.d(TAG, "onReCaptchaToken: $token")
+ finishResult(Activity.RESULT_OK, token)
+ }
+ }, "MyCallback")
+ val captcha = assets.open("recaptcha.html").bufferedReader().readText().replace("%apikey%", apiKey)
+ view.loadDataWithBaseURL("https://$hostname/", captcha, null, null, "https://$hostname/")
+ }
+
+ fun finishResult(resultCode: Int, token: String? = null) {
+ finished = true
+ setResult(resultCode, token?.let { Intent().apply { putExtra(EXTRA_TOKEN, it) } })
+ receiver?.send(resultCode, token?.let { Bundle().apply { putString(EXTRA_TOKEN, it) } })
+ finish()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ if (!finished) receiver?.send(Activity.RESULT_CANCELED, null)
+ }
+
+ companion object {
+ const val EXTRA_TOKEN = "token"
+ const val EXTRA_API_KEY = "api_key"
+ const val EXTRA_HOSTNAME = "hostname"
+ const val EXTRA_RESULT_RECEIVER = "receiver"
+
+ fun isSupported(context: Context): Boolean = true
+
+ suspend fun awaitToken(context: Context, apiKey: String, hostname: String? = null) = suspendCoroutine { continuation ->
+ val intent = Intent(context, ReCaptchaActivity::class.java)
+ val resultReceiver = object : ResultReceiver(null) {
+ override fun onReceiveResult(resultCode: Int, resultData: Bundle?) {
+ try {
+ if (resultCode == Activity.RESULT_OK) {
+ continuation.resume(resultData?.getString(EXTRA_TOKEN)!!)
+ }
+ } catch (e: Exception) {
+ continuation.resumeWithException(e)
+ }
+ }
+ }
+ intent.putExtra(EXTRA_API_KEY, apiKey)
+ intent.putExtra(EXTRA_RESULT_RECEIVER, resultReceiver)
+ intent.putExtra(EXTRA_HOSTNAME, hostname)
+ intent.addFlags(FLAG_ACTIVITY_NEW_TASK)
+ intent.addFlags(FLAG_ACTIVITY_REORDER_TO_FRONT)
+ intent.addFlags(FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
+ context.startActivity(intent)
+ }
+ }
+}
diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5af19c68790df6f8ede9cb9d1ac3b827c34f0dba
--- /dev/null
+++ b/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt
@@ -0,0 +1,119 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.firebase.auth
+
+import android.content.Context
+import android.graphics.PixelFormat
+import android.os.Build
+import android.provider.Settings
+import android.util.DisplayMetrics
+import android.util.Log
+import android.view.*
+import android.webkit.JavascriptInterface
+import android.webkit.WebSettings
+import android.webkit.WebView
+import android.widget.FrameLayout
+import org.microg.gms.firebase.auth.core.R
+import kotlin.coroutines.Continuation
+import kotlin.coroutines.resume
+import kotlin.coroutines.resumeWithException
+import kotlin.coroutines.suspendCoroutine
+
+
+private const val TAG = "GmsFirebaseAuthCaptcha"
+
+class ReCaptchaOverlay(val context: Context, val apiKey: String, val hostname: String?, val continuation: Continuation) {
+
+ val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
+ var finished = false
+ var container: View? = null
+
+ private fun show() {
+ val layoutParamsType = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
+ } else {
+ WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
+ }
+
+ val params = WindowManager.LayoutParams(
+ WindowManager.LayoutParams.MATCH_PARENT,
+ WindowManager.LayoutParams.WRAP_CONTENT,
+ layoutParamsType,
+ 0,
+ PixelFormat.TRANSLUCENT)
+
+ params.gravity = Gravity.CENTER or Gravity.START
+ params.x = 0
+ params.y = 0
+
+ val interceptorLayout: FrameLayout = object : FrameLayout(context) {
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (event.keyCode == KeyEvent.KEYCODE_BACK || event.keyCode == KeyEvent.KEYCODE_HOME) {
+ cancel()
+ return true
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+ }
+
+ val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater?
+ if (inflater != null) {
+ val container = inflater.inflate(R.layout.activity_recaptcha, interceptorLayout)
+ this.container = container
+ container.setBackgroundResource(androidx.appcompat.R.drawable.abc_dialog_material_background)
+ val pad = (5.0 * (context.resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)).toInt()
+ container.setOnTouchListener { v, _ ->
+ v.performClick()
+ cancel()
+ return@setOnTouchListener true
+ }
+ val view = container.findViewById(R.id.web)
+ view.setPadding(pad, pad, pad, pad)
+ val settings = view.settings
+ settings.javaScriptEnabled = true
+ settings.useWideViewPort = false
+ settings.setSupportZoom(false)
+ settings.displayZoomControls = false
+ settings.cacheMode = WebSettings.LOAD_NO_CACHE
+ view.addJavascriptInterface(object : Any() {
+ @JavascriptInterface
+ fun onReCaptchaToken(token: String) {
+ Log.d(TAG, "onReCaptchaToken: $token")
+ if (!finished) {
+ finished = true
+ continuation.resume(token)
+ }
+ close()
+ }
+ }, "MyCallback")
+ val captcha = context.assets.open("recaptcha.html").bufferedReader().readText().replace("%apikey%", apiKey)
+ view.loadDataWithBaseURL("https://$hostname/", captcha, null, null, "https://$hostname/")
+ windowManager.addView(container, params)
+ }
+ }
+
+ fun cancel() {
+ if (!finished) {
+ finished = true
+ continuation.resumeWithException(RuntimeException("User cancelled"))
+ }
+ close()
+ }
+
+ fun close() {
+ container?.let { windowManager.removeView(it) }
+ }
+
+ companion object {
+ fun isSupported(context: Context): Boolean = Build.VERSION.SDK_INT < Build.VERSION_CODES.M || Settings.canDrawOverlays(context)
+
+ suspend fun awaitToken(context: Context, apiKey: String, hostname: String? = null) = suspendCoroutine { continuation ->
+ ReCaptchaOverlay(context, apiKey, hostname ?: "localhost:5000", continuation).show()
+ }
+ }
+}
diff --git a/firebase-auth-core/src/main/res/layout/activity_recaptcha.xml b/firebase-auth-core/src/main/res/layout/activity_recaptcha.xml
new file mode 100644
index 0000000000000000000000000000000000000000..36ea80bb4c5e899fd6d39321d739aaa67f047ddd
--- /dev/null
+++ b/firebase-auth-core/src/main/res/layout/activity_recaptcha.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/firebase-dynamic-links-api/build.gradle b/firebase-dynamic-links-api/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..32edbc9b62625076052db314b1d5a6fca19312e1
--- /dev/null
+++ b/firebase-dynamic-links-api/build.gradle
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2019 e Foundation
+ *
+ * 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'
+
+String getMyVersionName() {
+ 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)
+}
+
+group = 'org.microg'
+version = getMyVersionName()
+
+android {
+ compileSdkVersion androidCompileSdk()
+ buildToolsVersion "$androidBuildVersionTools"
+
+ defaultConfig {
+ versionName getMyVersionName()
+ minSdkVersion androidMinSdk()
+ targetSdkVersion androidTargetSdk()
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+ api project(':play-services-basement')
+}
diff --git a/firebase-dynamic-links-api/gradle.properties b/firebase-dynamic-links-api/gradle.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c601b6d60b7e46141f217cd1fb26096cb1244503
--- /dev/null
+++ b/firebase-dynamic-links-api/gradle.properties
@@ -0,0 +1,34 @@
+#
+# Copyright 2019 e Foundation
+#
+# 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=Firebase Dynamic Links API
+POM_DESCRIPTION=Interfaces and objects for IPC between Firebase Library and microG
+
+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=alexandruchircu
+POM_DEVELOPER_NAME=Alexandru Chircu
+
diff --git a/play-services-core/src/main/res/xml/preferences_checkin.xml b/firebase-dynamic-links-api/src/main/AndroidManifest.xml
similarity index 70%
rename from play-services-core/src/main/res/xml/preferences_checkin.xml
rename to firebase-dynamic-links-api/src/main/AndroidManifest.xml
index 45c982a725cb891d03288e7231018b340c02ae73..ae17555c5d6f1c71a70b65c9c011545c6260eb4a 100644
--- a/play-services-core/src/main/res/xml/preferences_checkin.xml
+++ b/firebase-dynamic-links-api/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
-
-
-
\ No newline at end of file
+
diff --git a/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/DynamicLinkData.aidl b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/DynamicLinkData.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..5862178ae36fdfdbb112c741ccffe85b0024afa6
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/DynamicLinkData.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.dynamiclinks.internal;
+
+parcelable DynamicLinkData;
\ No newline at end of file
diff --git a/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksCallbacks.aidl b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksCallbacks.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..9f9915ffb0f0cfc6c528bbd4fd8cb279ddea9654
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksCallbacks.aidl
@@ -0,0 +1,12 @@
+package com.google.firebase.dynamiclinks.internal;
+
+
+import com.google.firebase.dynamiclinks.internal.DynamicLinkData;
+import com.google.firebase.dynamiclinks.internal.ShortDynamicLink;
+
+import com.google.android.gms.common.api.Status;
+
+interface IDynamicLinksCallbacks {
+ void onStatusDynamicLinkData(in Status status, in DynamicLinkData dldata) = 0;
+ void onStatusShortDynamicLink(in Status status, in ShortDynamicLink sdlink) = 1;
+}
diff --git a/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksService.aidl b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksService.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..57f083f539d61259ed8adbf7e725405324e0f902
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksService.aidl
@@ -0,0 +1,12 @@
+package com.google.firebase.dynamiclinks.internal;
+
+
+import com.google.firebase.dynamiclinks.internal.IDynamicLinksCallbacks;
+
+import android.os.Bundle;
+
+
+interface IDynamicLinksService {
+ void getInitialLink(IDynamicLinksCallbacks callback, String var2) = 0;
+ void func2(IDynamicLinksCallbacks callback, in Bundle var2) = 1;
+}
diff --git a/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/ShortDynamicLink.aidl b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/ShortDynamicLink.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..f4852a0305959d659169e36f5393ed5e4e6c9032
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/ShortDynamicLink.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.dynamiclinks.internal;
+
+parcelable ShortDynamicLink;
\ No newline at end of file
diff --git a/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/Warning.aidl b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/Warning.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..4331c92a4d86ee23204dcb9d6cdd5c0fa786ed32
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/aidl/com/google/firebase/dynamiclinks/internal/Warning.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.dynamiclinks.internal;
+
+parcelable Warning;
\ No newline at end of file
diff --git a/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/DynamicLinkData.java b/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/DynamicLinkData.java
new file mode 100644
index 0000000000000000000000000000000000000000..02270cd137c2739050fa42c3190e8e8bb6441d5d
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/DynamicLinkData.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2019 e Foundation
+ *
+ * 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.firebase.dynamiclinks.internal;
+
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import android.os.Bundle;
+import android.net.Uri;
+
+
+public class DynamicLinkData extends AutoSafeParcelable {
+ @SafeParceled(1)
+ public final String dynamicLink;
+
+ @SafeParceled(2)
+ public final String deepLink;
+
+ @SafeParceled(3)
+ public final int minVersion;
+
+ @SafeParceled(4)
+ public final long clickTimestamp;
+
+ @SafeParceled(5)
+ public final Bundle extensionBundle;
+
+ @SafeParceled(6)
+ public final Uri redirectUrl;
+
+ public DynamicLinkData() {
+ dynamicLink = new String();
+ deepLink = new String();
+ minVersion = 0;
+ clickTimestamp = 0;
+ extensionBundle = new Bundle();
+ redirectUrl = Uri.EMPTY;
+ }
+
+
+ public static final Creator CREATOR = new AutoCreator(DynamicLinkData.class);
+}
\ No newline at end of file
diff --git a/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/ShortDynamicLink.java b/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/ShortDynamicLink.java
new file mode 100644
index 0000000000000000000000000000000000000000..893e409872328569053322cded4f5d12ad072484
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/ShortDynamicLink.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2019 e Foundation
+ *
+ * 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.firebase.dynamiclinks.internal;
+
+
+import com.google.firebase.dynamiclinks.internal.Warning;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import android.net.Uri;
+import java.util.List;
+import java.util.ArrayList;
+
+
+public class ShortDynamicLink extends AutoSafeParcelable {
+ @SafeParceled(1)
+ public final Uri shortLink;
+
+ @SafeParceled(2)
+ public final Uri previewLink;
+
+ @SafeParceled(3)
+ public final List warnings;
+
+
+ public ShortDynamicLink() {
+ shortLink = Uri.EMPTY;
+ previewLink = Uri.EMPTY;
+
+ warnings = new ArrayList<>();
+ }
+
+
+ public static final Creator CREATOR = new AutoCreator(ShortDynamicLink.class);
+}
\ No newline at end of file
diff --git a/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/Warning.java b/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/Warning.java
new file mode 100644
index 0000000000000000000000000000000000000000..950f3de748898db7be7281b0fc16b25d8f4adfe0
--- /dev/null
+++ b/firebase-dynamic-links-api/src/main/java/com/google/firebase/dynamiclinks/internal/Warning.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 e Foundation
+ *
+ * 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.firebase.dynamiclinks.internal;
+
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+
+public class Warning extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+
+ @SafeParceled(2)
+ public final String message;
+
+
+ public Warning() {
+ message = null;
+ }
+
+
+ public static final Creator CREATOR = new AutoCreator(Warning.class);
+}
\ No newline at end of file
diff --git a/firebase-dynamic-links-api b/firebase-dynamic-links-api~master
similarity index 100%
rename from firebase-dynamic-links-api
rename to firebase-dynamic-links-api~master
diff --git a/gradle.properties b/gradle.properties
index e08c81d314ca10b41bcd7e4f7524f1182615fc79..72c1172e91949600838ae5e93936c179b6cef0c8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1 +1,2 @@
-org.gradle.jvmargs=-Xms512m -Xmx4096m
+android.useAndroidX=true
+org.gradle.jvmargs=-Xmx4096m
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d757f3d33fcc6837851eb73a6963eebcee23c282..21a8fe405ad29d87e38ddb4ce1fe52209e3a5cfe 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 d6e8b594369b8dc7ddbd1ca3889f9d35eccde0be..0000000000000000000000000000000000000000
--- 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 ce1f09ca983cec4669bdc51ef9cd2c42b7d4dd9c..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..259c6337def2a3d6bc9cc1186a2162c7ae2b9bdb
--- /dev/null
+++ b/play-services-api/build.gradle
@@ -0,0 +1,43 @@
+/*
+ * 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-appinvite-api')
+ 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 0000000000000000000000000000000000000000..221fda84a554b4babc75d779e693e2969c6ce2e8
--- /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 0000000000000000000000000000000000000000..d4a4d07a2f94f82cd9c23f55c1b2084e60ee4b9b
--- /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 0000000000000000000000000000000000000000..75a949b856132e2afc4f34a2a90531b6f6c80289
--- /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 0000000000000000000000000000000000000000..7e07dd018c7488c20c8b400341ee20b3c79d62a0
--- /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 0000000000000000000000000000000000000000..5f4f5c1f4d52035ef47b9033812c97bd5d22be47
--- /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 0000000000000000000000000000000000000000..f893aef8edb4388c299490400927a1da4d3c0178
--- /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 0000000000000000000000000000000000000000..c7f5e43261f51838b92e746161c65602ebee5e1b
--- /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 0000000000000000000000000000000000000000..0ae6e4bc64948f8f6af3a3f5052a70f7a14dc930
--- /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 0000000000000000000000000000000000000000..a0a785c1ca53d7030dbf533f853e00b09822437c
--- /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 0000000000000000000000000000000000000000..0b3c47ff74bc910b91a931bf8c01ac525ae8c38d
--- /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 0000000000000000000000000000000000000000..57d2d63b4dcbddde9faa8bc0c9db0b798315b8f2
--- /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 0000000000000000000000000000000000000000..b52e3d4fff51287f75b4fda9f3e70dce645a5e7d
--- /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 0000000000000000000000000000000000000000..ebc204c79a122dfefd066272d741495d7c76e218
--- /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 0000000000000000000000000000000000000000..77e618ac8f20e4d218f13e97dfad98fab3705fc3
--- /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 0000000000000000000000000000000000000000..338a142703b50cb9da5a871bf8f18c0fbcfbb073
--- /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 0000000000000000000000000000000000000000..206b1a9d5144ebfce3dd4a2ff19dbe6f406cf717
--- /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 0000000000000000000000000000000000000000..832e58598fb5d533448547b470554ed608cf29f4
--- /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 0000000000000000000000000000000000000000..82536b930fda61f22498477647c19cd430b32417
--- /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 0000000000000000000000000000000000000000..d000f32e2dbfe96ffbe901a8ac676e88ba7aa6e6
--- /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 0000000000000000000000000000000000000000..7fa0d4ab6cee4dd376823cbc23967a27d6ec39fd
--- /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 0000000000000000000000000000000000000000..814f68da882fe2bbd0a49a3ea1cee94b6f1c052a
--- /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 0000000000000000000000000000000000000000..da248c338752c4ef4061154ad845cff32db591f0
--- /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 0000000000000000000000000000000000000000..89c6c7e21badfa095f6ff011a7558a2ff56ff9f8
--- /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 0000000000000000000000000000000000000000..b5bcb593a5229ae8f23d7a9f03d2ab0bdbbcc920
--- /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 0000000000000000000000000000000000000000..6ac612897ad58831b9dcc955acdcc74eee9aa36b
--- /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 0000000000000000000000000000000000000000..25041d4d1370fe1510cde9f3365868f839a14b4b
--- /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 0000000000000000000000000000000000000000..58e796ef7160405ce8f075667968307da94433e6
--- /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 0000000000000000000000000000000000000000..b2f1b2fd512838c75ee62dd2a2d46267fb1100b6
--- /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 0000000000000000000000000000000000000000..ae02e068b4d6c8d63344864e6c0275e42d669ab8
--- /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 0000000000000000000000000000000000000000..19839d7d2070718815241b6aca894fd1c178c658
--- /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 0000000000000000000000000000000000000000..da539f329e7a6a7c862c55f8b1b9567197522858
--- /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/common/internal/ISignInButtonCreator.aidl b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/ISignInButtonCreator.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..f6c53996eded5b050f47be35c6f6a66c7ec045be
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/common/internal/ISignInButtonCreator.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.common.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface ISignInButtonCreator {
+ IObjectWrapper createSignInButton(IObjectWrapper context, int size, int color); // returns View
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/common/server/FavaDiagnosticsEntity.aidl b/play-services-api/src/main/aidl/com/google/android/gms/common/server/FavaDiagnosticsEntity.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..69b856bc60915cbd0ceab214b3b83b7c4984fe16
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/common/server/FavaDiagnosticsEntity.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.common.server;
+
+parcelable FavaDiagnosticsEntity;
\ 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 0000000000000000000000000000000000000000..843b1e0aefb93ed2e92d410cd7fb1f2b307ed9fd
--- /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 0000000000000000000000000000000000000000..ba0f503d5f37f1c945869e617c6283141331a5c9
--- /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 0000000000000000000000000000000000000000..70c193052dd720dc5771dab9bda811ea6f243a30
--- /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 0000000000000000000000000000000000000000..30696de0adc49e7c7b3b4cd1f5e8244a1b82aa6c
--- /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 0000000000000000000000000000000000000000..dfd43f74cf1d4b563eaed99b640109386f315cca
--- /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 0000000000000000000000000000000000000000..05f32cb36ffe6698f962dca4894bb9e9a7469a28
--- /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 0000000000000000000000000000000000000000..b4107a0edda5450706716ba04267e25939ccfbe9
--- /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 0000000000000000000000000000000000000000..eb7001c090ce78b4d147bc0c2470ba1b53b49a85
--- /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 0000000000000000000000000000000000000000..b513f4491dbf74a3c4b8532253937630f8c495dc
--- /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 0000000000000000000000000000000000000000..43536051b4a9f12a790a8597d085feb8a3c3678c
--- /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 0000000000000000000000000000000000000000..bf226dc022c13cba59146f5e4f2787f39d32310c
--- /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 0000000000000000000000000000000000000000..7e3306584e478565c66822a5cab03235366e7744
--- /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 0000000000000000000000000000000000000000..7c7452f79278901519393cd75487b57c3bdbe3c4
--- /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 0000000000000000000000000000000000000000..300d82c6ad74bbf1cee38e21746399e888df429f
--- /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 0000000000000000000000000000000000000000..be852bc5a1b50f12a56a4c7d348f6c9faf49078a
--- /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 0000000000000000000000000000000000000000..a1b7c8f29c2713f3556f3e060d27ea6ff497bb6d
--- /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 0000000000000000000000000000000000000000..c8bbef83181cc30fed9aa9f4c060ecc69c8bcc9c
--- /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 0000000000000000000000000000000000000000..1b85028b2ad556322070328af0845034bc11a153
--- /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 0000000000000000000000000000000000000000..22cf3ad1f9ac87a7e08812ced4b964088227cb26
--- /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 0000000000000000000000000000000000000000..d3ead69df9c89cbd659f64c1dc0e86f45ecbba56
--- /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 0000000000000000000000000000000000000000..4655cb3f13e42c77174ffa8de0d1696a86c9e3bc
--- /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 0000000000000000000000000000000000000000..e14152f2e380c4445543a38dc2df6ea0b97e1a82
--- /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 0000000000000000000000000000000000000000..424c2cac8d58e1700cf756f2c98b1ee541f1c4cf
--- /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 0000000000000000000000000000000000000000..0f748bb91c2a31f9e0d0f79fd4e1de59f4ea878b
--- /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 0000000000000000000000000000000000000000..06b38bd88d40e0d9ec5b99fdfadb2c3d788b3a87
--- /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 0000000000000000000000000000000000000000..022ffda3903b4bf875c91a79c07c53c895950419
--- /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 0000000000000000000000000000000000000000..8992b0536a9f51a07db931203b25257eff967daa
--- /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 0000000000000000000000000000000000000000..821aefb53a4cb70a8443346346ef673478efadc0
--- /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 0000000000000000000000000000000000000000..9d1a31b91f7c3a4d9d2b0862a7d1346cfc0ed57b
--- /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 0000000000000000000000000000000000000000..ae706840a22ca0658fd03e12212aedc1e7a70844
--- /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 0000000000000000000000000000000000000000..845d8325dbd571a36cb4ff5c14e039f137efb432
--- /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 0000000000000000000000000000000000000000..a1e2e085fbde516aee7bb51b0e792c2943e8fcc2
--- /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 0000000000000000000000000000000000000000..6fa1b204e2e24053f22a5161566a766bc81339d9
--- /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 0000000000000000000000000000000000000000..e50999f13d6d7cad853d92d2e9ac483148b075f5
--- /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 0000000000000000000000000000000000000000..14d7cf86b10ec7d537972cb4c9d9732538696a94
--- /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 0000000000000000000000000000000000000000..9a3c5ac948686fbfc4cd0e271bb66c166103b33b
--- /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 0000000000000000000000000000000000000000..b2271a983e7f6843a7213ba4fc0fffcc5d0aeb91
--- /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 0000000000000000000000000000000000000000..04ebc59162adcfae22cc7b690abf640d24ac0e2f
--- /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 0000000000000000000000000000000000000000..b3b80b5d4b6d6a9fa886cbadf0f17e238ee3eb73
--- /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 0000000000000000000000000000000000000000..3ebc267206e2f8230a7d857389f0b13e4087d58a
--- /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 0000000000000000000000000000000000000000..4bfd6f889a26481648ece9e0b093b4171e2a6211
--- /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 0000000000000000000000000000000000000000..4fc8534f7386cb9de4340b05db4785262b369268
--- /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 0000000000000000000000000000000000000000..836ba5323720ae4f6c920e09bb7d00f96201d37e
--- /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 0000000000000000000000000000000000000000..c922b2da0dc3594099141d4184d0db835d2ead90
--- /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 0000000000000000000000000000000000000000..e613b2e20ec75532281fef64b63d5ffd6af35c4e
--- /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 0000000000000000000000000000000000000000..5d2838c72da4c0f02b745a591402bf52c298110d
--- /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 0000000000000000000000000000000000000000..64cd51fe6449b9a8bef71a382d878ca5468c2d81
--- /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 0000000000000000000000000000000000000000..7670296963bfcfabc3cfd97a32290a5b2484234d
--- /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 0000000000000000000000000000000000000000..0ceffc62b57c80acc82f9a9bbf4c6f33890c5439
--- /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 0000000000000000000000000000000000000000..43b9c1167d5333b559135b22b4164ea15840e9db
--- /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 0000000000000000000000000000000000000000..538c61e40c806125185640e54f23b31cf28868ab
--- /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 0000000000000000000000000000000000000000..2f20b49572678afb27682c4eec9fd29a8ae82803
--- /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 0000000000000000000000000000000000000000..9099c4b66ef756275dad55a5642f137ad3710eea
--- /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 0000000000000000000000000000000000000000..ed495944b1d661a0227b5bc804b45c7b90229325
--- /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 0000000000000000000000000000000000000000..42480778b8b72a09d12ea83bd12638f3040092ac
--- /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 0000000000000000000000000000000000000000..a7fe04bc08b6f532573d85fb2561e5e0af79cdfc
--- /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 0000000000000000000000000000000000000000..74fe7d32749164ec63842a73d6dc67b86fd1e31d
--- /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 0000000000000000000000000000000000000000..98f7d5474ec47b6a53833393aa8088ad25f48755
--- /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 0000000000000000000000000000000000000000..a866defd61bac449371cd9486264cadb457cae03
--- /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 0000000000000000000000000000000000000000..8cb2be99f136b29a5d245971b955b86ac4ce8f07
--- /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 0000000000000000000000000000000000000000..fa1349db4d2664017efc4ecce26fd28b9803bfbe
--- /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 0000000000000000000000000000000000000000..1f8e7b4e20eec57f2a0002787d3aca4f5bc923c8
--- /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 0000000000000000000000000000000000000000..ae48b2276b6660f283c34c3c9821f29f23b3eb56
--- /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 0000000000000000000000000000000000000000..58ea0ba5d3f4fd8d3fd0d21f3f99f34fb5c8df03
--- /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 0000000000000000000000000000000000000000..39b0a53f8ae99c0a01907b0a6e6795d1ddbfcb14
--- /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 0000000000000000000000000000000000000000..854e921edf4d6d44448d1f4035081955189d2e7b
--- /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 0000000000000000000000000000000000000000..e2cf4afd6a449cdde7f417530df441af32e52f7c
--- /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 0000000000000000000000000000000000000000..a8ea76262ff7bf4feb7ee94b6c8da6cddf12afcd
--- /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 0000000000000000000000000000000000000000..0cc5938fd9a1bacf92b57cf2886e3b954a0e28c2
--- /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 0000000000000000000000000000000000000000..f10ab345ed4a975e1a98cf46ec578414c537bdc9
--- /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 0000000000000000000000000000000000000000..af44f1c503a1a8af314a51d942f0fe1da2bb5e61
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl
@@ -0,0 +1,144 @@
+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.MapStyleOptions;
+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 0000000000000000000000000000000000000000..d11d71d4737169a47d496b940d293c9b54ade832
--- /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 0000000000000000000000000000000000000000..203ec69f12cc3bfccca1432a5ff24ef24ededd45
--- /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 0000000000000000000000000000000000000000..c08c987b4b10717de8cdd06286e3d35b283686fc
--- /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 0000000000000000000000000000000000000000..d22db6c64962c0ff55640289967618e2a9ac20e6
--- /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 0000000000000000000000000000000000000000..8abd2929b1609559d91d3daf7d276260c9068178
--- /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 0000000000000000000000000000000000000000..caa686a8a48c0cfe5a256f691abf7c722cba354b
--- /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 0000000000000000000000000000000000000000..bb1494e864ac6947f34d37c6b18cfe86cad80f58
--- /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 0000000000000000000000000000000000000000..6b404d65042b19bb9c0c31adf931f1828c3ff11b
--- /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 0000000000000000000000000000000000000000..2a5f65d906063b73a154420d22e248cf0a5341c3
--- /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 0000000000000000000000000000000000000000..7c396ce77850405943b73172226583fa41550b6b
--- /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 0000000000000000000000000000000000000000..6b3b2ec8de5ea2c1dbd3d998851a9d9b45b59436
--- /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 0000000000000000000000000000000000000000..d3fc105db07148dd43cd8eb1052e9cf878648f9a
--- /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 0000000000000000000000000000000000000000..11201b2c3e671b944bc991bf510464582b47cb22
--- /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 0000000000000000000000000000000000000000..1e6760efdcd71a39c8c4c95a7f7d7f553c598ee5
--- /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 0000000000000000000000000000000000000000..94c4465deada6940688afca9883c3d5efce43870
--- /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 0000000000000000000000000000000000000000..b4601a7abddc318e69f9a7f17ab1581691693616
--- /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 0000000000000000000000000000000000000000..b10880dd02f6120db84f0f234d223d9c93010229
--- /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 0000000000000000000000000000000000000000..35a6b6c282f84d5686c9e590883f73ce3f351f35
--- /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 0000000000000000000000000000000000000000..9b2da90bbcc086d33a83dbae1a3d7715683f9cca
--- /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 0000000000000000000000000000000000000000..f907e336e541b2e044d4ba1e1f60088bfac2fa90
--- /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 0000000000000000000000000000000000000000..12c781232846c026e015ca0ad31f2079368b3134
--- /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 0000000000000000000000000000000000000000..bb5ab7015224684d5419cedf3717c20ddf66e880
--- /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 0000000000000000000000000000000000000000..33ae45422cdf1ae0b0cbb60d1ad2cb6f808c3bea
--- /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 0000000000000000000000000000000000000000..5bdbefafee793ee0c0e82d18d490f485b4daa3b3
--- /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/MapStyleOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/MapStyleOptions.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..04312ebf337255e74ba0d6953cb404b613bb65fd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/model/MapStyleOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.maps.model;
+
+parcelable MapStyleOptions;
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 0000000000000000000000000000000000000000..dc4abbcfda098bde745149b589b5993216ab23d6
--- /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 0000000000000000000000000000000000000000..adac82a082aac9368d524f9c822678d1d78c6774
--- /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 0000000000000000000000000000000000000000..7c1658915e77e6643ea466f6204da1c5d6608901
--- /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 0000000000000000000000000000000000000000..54f1872f14b71ad09ac4c92d13ca2158d2b69a18
--- /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 0000000000000000000000000000000000000000..85f5ac32fd78addd09ce9030dbecdeef30516132
--- /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 0000000000000000000000000000000000000000..09d221015a52c85b351599054989c9d1adfe97a4
--- /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 0000000000000000000000000000000000000000..dca49b60280038c8840ebc9f59acd381eb68d218
--- /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 0000000000000000000000000000000000000000..719d8eab6b3094e799e6a49c0079ee1c92a5c8b6
--- /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 0000000000000000000000000000000000000000..0a1a0632812a9356dc449c7e9da26494716d356d
--- /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 0000000000000000000000000000000000000000..ca2d260379d52f5dd1572f8e6ba2ab3f328f09e8
--- /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 0000000000000000000000000000000000000000..67f0517b1a9614ac47b7a881d1fac84bfbef5a72
--- /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 0000000000000000000000000000000000000000..ebbb336bf2729a632a43c7a8155169d2f253d9a6
--- /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 0000000000000000000000000000000000000000..417cb02409a5529f82f00824bb50311e74fe282c
--- /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 0000000000000000000000000000000000000000..d6dc516b779db854804e1d05e6ba5784ff0e4950
--- /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/AppMetadata.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/AppMetadata.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..005edc39badbf054de1cbe72820438e15ec7b6ae
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/AppMetadata.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable AppMetadata;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..de59ae57ec85a28abeb44a9971227e74f9fa2a0f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable ConditionalUserPropertyParcel;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/EventParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/EventParcel.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..372d66f6a32737fc9cac2ec8a0a63c65e32da754
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/EventParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable EventParcel;
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 0000000000000000000000000000000000000000..8a99173a7a1efdcc4b523b7a7f6133a532d3d1f9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/IMeasurementService.aidl
@@ -0,0 +1,25 @@
+package com.google.android.gms.measurement.internal;
+
+import com.google.android.gms.measurement.internal.AppMetadata;
+import com.google.android.gms.measurement.internal.ConditionalUserPropertyParcel;
+import com.google.android.gms.measurement.internal.EventParcel;
+
+interface IMeasurementService {
+ void f1(in EventParcel p0, in AppMetadata p1) = 0;
+// void zza(UserAttributeParcel p0, AppMetadata p1) = 1;
+ void f4(in AppMetadata p0) = 3;
+// void zza(EventParcel p0, String p1, String p2) = 4;
+// void zzb(AppMetadata p0) = 5;
+// List zza(AppMetadata p0, boolean p1) = 6;
+// byte[] zza(EventParcel p0, String p1) = 8;
+ void f10(long p0, String p1, String p2, String p3) = 9;
+ String f11(in AppMetadata p0) = 10;
+ void f12(in ConditionalUserPropertyParcel p0, in AppMetadata p1) = 11;
+// void zza(ConditionalUserPropertyParcel p0) = 12;
+// List zza(String p0, String p1, boolean p2, AppMetadata p3) = 13;
+// List zza(String p0, String p1, String p2, boolean p3) = 14;
+// List zza(String p0, String p1, AppMetadata p2) = 15;
+// List zza(String p0, String p1, String p2) = 16;
+// void zzd(AppMetadata p0) = 17;
+// void zza(Bundle p0, AppMetadata p1) = 18;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/UserAttributeParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/UserAttributeParcel.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..efb3b72106b77d5f8124bfa8549adfff4bf802d3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/UserAttributeParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable UserAttributeParcel;
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 0000000000000000000000000000000000000000..75db9fae9680bff3d524edad57fd011a4e1b4917
--- /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 0000000000000000000000000000000000000000..62ae147842bbed6ac75d1e1a2f5334ad9467d7a4
--- /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/phenotype/Configurations.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Configurations.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..33ccf3d75ac12c8a3f2a16ab1cd90077ab4fa21b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Configurations.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.phenotype;
+
+parcelable Configurations;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeCallbacks.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..77cfb6d56a6f5b35d710666eb4ea6fc791d0f25d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeCallbacks.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.phenotype.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.phenotype.Configurations;
+
+interface IPhenotypeCallbacks {
+ void onRegister(in Status status) = 0;
+ void onConfigurations(in Status status, in Configurations configurations) = 3;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeService.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..724969f993b90f899c4f2cf465e64d760d086293
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeService.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.phenotype.internal;
+
+import com.google.android.gms.phenotype.internal.IPhenotypeCallbacks;
+
+interface IPhenotypeService {
+ void register(IPhenotypeCallbacks callbacks, String p1, int p2, in String[] p3, in byte[] p4) = 0;
+ void getConfigurationSnapshot(IPhenotypeCallbacks callbacks, String p1, String p2, String p3) = 10;
+}
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 0000000000000000000000000000000000000000..86169b99ab58d7911a3fb6412262ce3d9a9a349f
--- /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 0000000000000000000000000000000000000000..6e7bed5385512ab050c0163be2f0be9643e7f1d0
--- /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 0000000000000000000000000000000000000000..9cc0e0e42e097aaab29df5a110fd339ba8ffbff1
--- /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 0000000000000000000000000000000000000000..7e2121d21b46c8f25a8a0ed93297c82aa84c8301
--- /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 0000000000000000000000000000000000000000..24ae0ffdeb54f7cda6650e8d7ea6d211d8ffa684
--- /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 0000000000000000000000000000000000000000..142ddedfc2e7430bdd5ac4288e0f443ce8b84bff
--- /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 0000000000000000000000000000000000000000..ff418443b0b17714e114c6586526a7d32fd40cff
--- /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 0000000000000000000000000000000000000000..55ac1beb043cb9fbd4abde2d2d34cfd8e7170750
--- /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 0000000000000000000000000000000000000000..79f91dec00c5d7cd954e493ad1a365787f91cfaa
--- /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 0000000000000000000000000000000000000000..5e5506eeba950672b68de234ba54a04c8b71f8df
--- /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 0000000000000000000000000000000000000000..2added917c0f2c9cfd11154280a60a09828a9f03
--- /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 0000000000000000000000000000000000000000..f998648407dd01bc587ed09b06fa8846ba44ab91
--- /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 0000000000000000000000000000000000000000..bbb9083679ac65ac9ee9223a1f45903dfc0892d7
--- /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 0000000000000000000000000000000000000000..9a3883c29108556781073ec864ace9637aee0ba2
--- /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 0000000000000000000000000000000000000000..a4c41481f07bb70e442d765e22ae4b6871074c5a
--- /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 0000000000000000000000000000000000000000..f1e056b464d4af7e4baf79b7b2f1f1229bcdfbc0
--- /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 0000000000000000000000000000000000000000..9e5456b02945f40790b1ba78aac486cc73fe48f0
--- /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 0000000000000000000000000000000000000000..5b18294d969849f035876d184b48a1a553d95a3f
--- /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 0000000000000000000000000000000000000000..fe57be6d96cbcf8865c2c362a62789a9e3a9594b
--- /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 0000000000000000000000000000000000000000..7dfc749b8a2ee520304530dbe49037c66ade3d2d
--- /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 0000000000000000000000000000000000000000..404544c2d914d4265b0c1385ed5da194ab327215
--- /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 0000000000000000000000000000000000000000..9f718934c43ff0c0a7c29314c0ea44cd4938165f
--- /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 0000000000000000000000000000000000000000..11b0a4dc0922f836ac816e13b643b9071e5307b0
--- /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 0000000000000000000000000000000000000000..b2e549d76cbdc0408b9fc7a014fc39018d80ea40
--- /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 0000000000000000000000000000000000000000..a837a7dbb0f6e5e7f23b83c346a1f8a245b92923
--- /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 0000000000000000000000000000000000000000..ad68ef3552853bb5a9d7687328ed4895930ea64a
--- /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 0000000000000000000000000000000000000000..7aaa548c6adfb3a4f88efc2218eb149b66691854
--- /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 0000000000000000000000000000000000000000..863b016fdd2eb7654214387646963d57b0e02860
--- /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 0000000000000000000000000000000000000000..fe2073c058c413afe9290915036ebf2c92e02d81
--- /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 0000000000000000000000000000000000000000..426cbe47b96caa6331fad20506d61dfeeec5b04c
--- /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 0000000000000000000000000000000000000000..8fdb4567ef1a9372433a91d0848aca2946841e34
--- /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 0000000000000000000000000000000000000000..986ab4db28bb4ab3ab73dc55d2328aedec5ce06e
--- /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 0000000000000000000000000000000000000000..86d52a131d03a35c914960a4dfc983c4c99af970
--- /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 0000000000000000000000000000000000000000..8d7382eda4aa64e1195efa4d06b16bb3288dc83d
--- /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 0000000000000000000000000000000000000000..ca99ad5f63890360c4305ccb9ecff8285e5f9ce6
--- /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 0000000000000000000000000000000000000000..2bd4d8b3f65bee84fdb7c68b63f26dcefde19cb7
--- /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 0000000000000000000000000000000000000000..ff552760223a1e3344bc761ee69663381eb88e4e
--- /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 0000000000000000000000000000000000000000..79cbb179bc0a67ac9d8a51955d9a1f72255a2128
--- /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 0000000000000000000000000000000000000000..a5f2d6d0ea399473222dfd0bd8b9819a97e66031
--- /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 0000000000000000000000000000000000000000..b08d953043a771dbe487923a358903e8f74c967c
--- /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 0000000000000000000000000000000000000000..95bc32a7b138e99c36c26d33dff8b7d3ef4f8f34
--- /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 0000000000000000000000000000000000000000..1986e95d2a319faaec5a6ffcbd92adbbc8321bf2
--- /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 0000000000000000000000000000000000000000..97047253c1dd395fad64ff7c0b6e58a61344f606
--- /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 0000000000000000000000000000000000000000..8bcb891ee28af3b5ab899c0ff40342ec01c2f4e8
--- /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 0000000000000000000000000000000000000000..091cdae56228aa29158cccfc168f5418d18bce8b
--- /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 0000000000000000000000000000000000000000..622b0ba78cf153f1c884fa66bedbfc6428a38989
--- /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 0000000000000000000000000000000000000000..d9cb9209c710f553ba1b2cca077bb76a1db41e8c
--- /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/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 0000000000000000000000000000000000000000..689e5918a46903c622618a3e62575a3f1423af1f
--- /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 0000000000000000000000000000000000000000..d6c1fc316e116b00c21509d8ec6194e2ecbad8ee
--- /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 0000000000000000000000000000000000000000..447f9f4a823d35a8abb52b5e3964092b00af12ee
--- /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 0000000000000000000000000000000000000000..c4d45cdd122b7016588424c1350fb238aa7fbd28
--- /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 0000000000000000000000000000000000000000..a5aaa18765ee0dfb8413b21140ce7dfa83829777
--- /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 0000000000000000000000000000000000000000..21e00b1c8a14089c602665aef892f33475252e3b
--- /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 0000000000000000000000000000000000000000..9ae649d0e6d625998e91d2d33545312cef6d6e3d
--- /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 0000000000000000000000000000000000000000..5806bc358ac9ec357ac37a3aa41fb74a27764f4d
--- /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 0000000000000000000000000000000000000000..08d6df187ef7d4e3eaac7a62716c4397c18b4f65
--- /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 0000000000000000000000000000000000000000..5c71ea0ce1894dfaf0e29c9a9e4d63d37c2e86ec
--- /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 0000000000000000000000000000000000000000..2f8a596f19f428baf4e0889997cfa86443435f8b
--- /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 0000000000000000000000000000000000000000..d542f48f72cbb662675c1a65af46e61178737e10
--- /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 0000000000000000000000000000000000000000..1be52c8f2080deb6e8879cc45900ca2e7b82103f
--- /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 0000000000000000000000000000000000000000..720f773ca916171a29853d4aa18356fd0bc87162
--- /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 0000000000000000000000000000000000000000..fec25f00642e6eee3f3b75921f66f35912616832
--- /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 0000000000000000000000000000000000000000..0f80a05393e943614b040e4772d4c31b8a75ff18
--- /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 0000000000000000000000000000000000000000..f616d51daa510080ba6bfcef7dbecb4b7d3b0721
--- /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 0000000000000000000000000000000000000000..a2f0f9e738e39778c5ac0d94452e99809b7ce8d2
--- /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 0000000000000000000000000000000000000000..0485f3a2e7d12272dbb45cb66557318622764c9e
--- /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 0000000000000000000000000000000000000000..0d7f5cd8f33ed242500c708f456a2918e60b5024
--- /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 0000000000000000000000000000000000000000..0bff57a8f7ba366a7ab23836bb3337a404068697
--- /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 0000000000000000000000000000000000000000..3b7d45f531d4ff7a37d7daaa20d56ca18ec201f2
--- /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 0000000000000000000000000000000000000000..13ee988edc903dbf24835d262a5955b56759e1c8
--- /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 0000000000000000000000000000000000000000..67d66c05bf337f422389fd2a0982e1c69efd1015
--- /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 0000000000000000000000000000000000000000..80819c714db59bb8d1df57c082fdc1901a044267
--- /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 0000000000000000000000000000000000000000..2ef78f95b5e463205b3888334308acb0b7578881
--- /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 0000000000000000000000000000000000000000..bd7ae6f2413896a964362403fee7583f9fb83745
--- /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 0000000000000000000000000000000000000000..3da7a72add012dea776cac5259ef7e5112a564ae
--- /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 0000000000000000000000000000000000000000..5ec25998913ca7f81404d3e8e0f7d2375aabbbc3
--- /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 0000000000000000000000000000000000000000..6c73b4bcccb8271f284723a6fdd7e15776137124
--- /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 0000000000000000000000000000000000000000..cd56eb1ae90e44afd96cc8a75cc53da8ca052261
--- /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 0000000000000000000000000000000000000000..c7db433b29df17e6c69d3cd0bde7ad670bc4100e
--- /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 0000000000000000000000000000000000000000..4a200050efc78c9a0f6e26c03bb962b816887416
--- /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 0000000000000000000000000000000000000000..999e9a96e793c8d577d80b2c95dfaa4eab90e5f0
--- /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 0000000000000000000000000000000000000000..0091dee5a7edf5b5fe10299afc3875bc5cefa203
--- /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 0000000000000000000000000000000000000000..139bf29b70c759c3b874de859590aa316685e513
--- /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 0000000000000000000000000000000000000000..4b57130dcd7d0c8b06023ddd2ed2ddd3ac2fa03a
--- /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 0000000000000000000000000000000000000000..9e339e8128e0f6e2d492a22d728f299f2a12ac71
--- /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 0000000000000000000000000000000000000000..9563798eae450f7e31b15994c964d59174b19e07
--- /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 0000000000000000000000000000000000000000..81042a97de86d3dc35361274af2bc68b18096ba7
--- /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 0000000000000000000000000000000000000000..826d1c371f44ea59a4b69ca478578319afffcae5
--- /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 0000000000000000000000000000000000000000..c82402790b4fac1c5427e3ef4ead9bd63a56630c
--- /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/common/server/FavaDiagnosticsEntity.java b/play-services-api/src/main/java/com/google/android/gms/common/server/FavaDiagnosticsEntity.java
new file mode 100644
index 0000000000000000000000000000000000000000..6f10959a3045f464cee57bbeed4855f90928fb52
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/common/server/FavaDiagnosticsEntity.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.common.server;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FavaDiagnosticsEntity extends AutoSafeParcelable {
+
+ public static final Creator CREATOR = new AutoCreator(FavaDiagnosticsEntity.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 0000000000000000000000000000000000000000..bce9276b60c04dda5deef687903a2731f920aeb2
--- /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 0000000000000000000000000000000000000000..559d52d3b5459445e4a70658a6af82ab23b47e06
--- /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 0000000000000000000000000000000000000000..b99fb5f84b97c1878b13195ee7ebc1cd26d26324
--- /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 0000000000000000000000000000000000000000..fb18670d2862c9a33bab7604a46efe72db98f95e
--- /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 0000000000000000000000000000000000000000..a7e4630ac671969456e4735726b334c1e8b85537
--- /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 0000000000000000000000000000000000000000..70892fac741b4f498ebc02302c6a2e5e7339b6e5
--- /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 0000000000000000000000000000000000000000..3a43cad49e476dbfd70f6a27a805a3c0a1e31391
--- /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 0000000000000000000000000000000000000000..d892262f5f3fe00fb8fe7eb2eb4060ef82787fd6
--- /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 0000000000000000000000000000000000000000..cb5e8e653ef9863ce93344d6842e42e9012eb674
--- /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 0000000000000000000000000000000000000000..334c98d880563257f4010d3dddc98bba42156b57
--- /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 0000000000000000000000000000000000000000..f59029b8758e0ce55d3e8a1dde077fded7d5cb42
--- /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 0000000000000000000000000000000000000000..2812eb27d41bb334daa373813f594390daa94cdf
--- /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 0000000000000000000000000000000000000000..46b5c4195fcb9b06e6e6f9cf8237c4f4bd813a81
--- /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 0000000000000000000000000000000000000000..260283eb38f00fa0a00d6e727ec8285f20d08c6b
--- /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 0000000000000000000000000000000000000000..0e914da0b2ecc8b0db4b650d27de34259b355ab8
--- /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 0000000000000000000000000000000000000000..b1e7e79cb90c507ca7bac43c91dccd91d75e7364
--- /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 0000000000000000000000000000000000000000..562d7b372fa15600cb1a4a131637452712c52647
--- /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 0000000000000000000000000000000000000000..c2aae15f4e383ec0155e7c7126558eacd6eb1171
--- /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 0000000000000000000000000000000000000000..abbebd3863c952ca7bdf6430445db4a5d79d9d01
--- /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 0000000000000000000000000000000000000000..52d2a5ec3d26ca476476db8df8f364811f1cd76c
--- /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 0000000000000000000000000000000000000000..7aaf7c63bc9a6d15d1b995ebd761eaed8568e42a
--- /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 0000000000000000000000000000000000000000..3a96d337ece385962374a8c895e00e46fd7d0a5d
--- /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 0000000000000000000000000000000000000000..40cb34d5f30833e4aaefa5c56a8c7d8f7893a204
--- /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 0000000000000000000000000000000000000000..6e83957a7c4ff5be74936ced86ad102979dd2bae
--- /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 0000000000000000000000000000000000000000..5b8c5c145a1794a541396fc0eba455f0101c6ca7
--- /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 0000000000000000000000000000000000000000..99499f52f9578d0771ce8a614c764acbe530d233
--- /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 0000000000000000000000000000000000000000..6d338d2ee27b1232e2b05c82c8ee4429624e7344
--- /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 0000000000000000000000000000000000000000..cb56b4f51aab1fd99215bd734b1accd10f6cfbea
--- /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 0000000000000000000000000000000000000000..8f0e8c4f0d0347d56ea3c9fe9d2adc8038387e23
--- /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 0000000000000000000000000000000000000000..d63fa651477768118225cdd1d486ab7c193575c6
--- /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 0000000000000000000000000000000000000000..b407068a3497260d60a0deba233cc6ddf4229a57
--- /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 0000000000000000000000000000000000000000..a641348321d2fdc799d7be5aaaa5257df088302d
--- /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 0000000000000000000000000000000000000000..b417a6044b3f7724aef4dd8de9fed97ba6cea478
--- /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 0000000000000000000000000000000000000000..e0c532cd6b1fe16c96fecd53d8e1675712e9c32b
--- /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 0000000000000000000000000000000000000000..fd326195486e3ad906cb3f153697fec352a2f4bc
--- /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 0000000000000000000000000000000000000000..8d6ec09324e4aad77f668ebb4ab3062aaef45dce
--- /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 0000000000000000000000000000000000000000..61e1e656ca53b0268865f1d14d85e3d916d21526
--- /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 0000000000000000000000000000000000000000..478a880064b74c83a8084c65f4a458d72b95ec77
--- /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 0000000000000000000000000000000000000000..de7df0662129914d89947ca79f8bbdb10fa67f80
--- /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 0000000000000000000000000000000000000000..e9d152f5f326b78400e401c403fadadce8dd8e74
--- /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 0000000000000000000000000000000000000000..3a0a03c2f5be405075d3457d3e7f79f08f280def
--- /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 0000000000000000000000000000000000000000..8df27d1fe9e0a6049a466b6b3bc2a77904fad1dd
--- /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 0000000000000000000000000000000000000000..1db6cd07e4f20a7cd7a516559186031a846e219d
--- /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