Skip to content

Remove common dependency in AppCheck Interop #4782

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Apr 17, 2023
Merged

Conversation

emilypgoogle
Copy link
Collaborator

@emilypgoogle emilypgoogle commented Mar 14, 2023

AppCheck Interop had a common dependency and was using it to return FirebaseExceptions in AppCheckTokenResult. Going forward with third party SDK integration with Maps or similar, binary size is a large concern, and this change will allow SDK consumers to implement AppCheck integration with minimal included binary size moving forward. It is currently the plan to keep AppCheck Interop as a non-public SDK, only being exposed through third party SDKs.

AppCheck Interop is currently a non-public facing SDK, and all uses of the method being changed are in tests, so the breaking change does not require an API bump or a major release bump.

There has been the suggestion that if this interface is going to be used by Maps, it potentially should have a name other than InternalAppCheckTokenProvider, but a change like that would require sweeping changes, so it hasn't been included here.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 14, 2023

Javadoc Changes:
--- /Users/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/appcheck/FirebaseAppCheck.html	2023-04-17 19:44:00.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/appcheck/FirebaseAppCheck.html	2023-04-17 19:38:15.000000000 +0000
@@ -8,7 +8,7 @@
     <div id="metadata-info-block"></div>
     <h1>FirebaseAppCheck</h1>
     <p>
-      <pre>public abstract class <a href="/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck.html">FirebaseAppCheck</a> implements <a href="/docs/reference/android/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html">InternalAppCheckTokenProvider</a></pre>
+      <pre>public abstract class <a href="/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck.html">FirebaseAppCheck</a> implements <a href="/docs/reference/android/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html">InteropAppCheckTokenProvider</a></pre>
     </p>
     <hr>
     <h2>Summary</h2>
@@ -139,7 +139,7 @@
         </thead>
         <tbody class="list">
           <tr>
-            <td><devsite-expandable><span class="expand-control">From <a href="/docs/reference/android/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html">com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider</a></span>
+            <td><devsite-expandable><span class="expand-control">From <a href="/docs/reference/android/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html">com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider</a></span>
               <div class="devsite-table-wrapper">
                 <table class="responsive">
                   <colgroup>
@@ -150,19 +150,19 @@
                     <tr>
                       <td><code>abstract void</code></td>
                       <td>
-                        <div><code><a href="/docs/reference/android/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html#addAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">addAppCheckTokenListener</a>(<a href="/docs/reference/android/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>&nbsp;p)</code></div>
+                        <div><code><a href="/docs/reference/android/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html#addAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">addAppCheckTokenListener</a>(<a href="/docs/reference/android/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>&nbsp;p)</code></div>
                       </td>
                     </tr>
                     <tr>
                       <td><code>abstract <a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a>&lt;<a href="/docs/reference/android/com/google/firebase/appcheck/AppCheckTokenResult.html">AppCheckTokenResult</a>&gt;</code></td>
                       <td>
-                        <div><code><a href="/docs/reference/android/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html#getToken(boolean)">getToken</a>(boolean&nbsp;p)</code></div>
+                        <div><code><a href="/docs/reference/android/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html#getToken(boolean)">getToken</a>(boolean&nbsp;p)</code></div>
                       </td>
                     </tr>
                     <tr>
                       <td><code>abstract void</code></td>
                       <td>
-                        <div><code><a href="/docs/reference/android/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html#removeAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">removeAppCheckTokenListener</a>(<a href="/docs/reference/android/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>&nbsp;p)</code></div>
+                        <div><code><a href="/docs/reference/android/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html#removeAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">removeAppCheckTokenListener</a>(<a href="/docs/reference/android/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>&nbsp;p)</code></div>
                       </td>
                     </tr>
                   </tbody>
--- /Users/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/appcheck/FirebaseAppCheck.html	2023-04-17 19:44:00.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/appcheck/FirebaseAppCheck.html	2023-04-17 19:38:15.000000000 +0000
@@ -8,7 +8,7 @@
     <div id="metadata-info-block"></div>
     <h1>FirebaseAppCheck</h1>
     <p>
-      <pre>abstract class <a href="/docs/reference/kotlin/com/google/firebase/appcheck/FirebaseAppCheck.html">FirebaseAppCheck</a> : <a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html">InternalAppCheckTokenProvider</a></pre>
+      <pre>abstract class <a href="/docs/reference/kotlin/com/google/firebase/appcheck/FirebaseAppCheck.html">FirebaseAppCheck</a> : <a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html">InteropAppCheckTokenProvider</a></pre>
     </p>
     <hr>
     <h2>Summary</h2>
@@ -139,7 +139,7 @@
         </thead>
         <tbody class="list">
           <tr>
-            <td><devsite-expandable><span class="expand-control">From <a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html">com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider</a></span>
+            <td><devsite-expandable><span class="expand-control">From <a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html">com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider</a></span>
               <div class="devsite-table-wrapper">
                 <table class="responsive">
                   <colgroup>
@@ -150,19 +150,19 @@
                     <tr>
                       <td><code>abstract <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></code></td>
                       <td>
-                        <div><code><a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html#addAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">addAppCheckTokenListener</a>(p:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>!)</code></div>
+                        <div><code><a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html#addAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">addAppCheckTokenListener</a>(p:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>!)</code></div>
                       </td>
                     </tr>
                     <tr>
                       <td><code>abstract <a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/appcheck/AppCheckTokenResult.html">AppCheckTokenResult</a>!&gt;!</code></td>
                       <td>
-                        <div><code><a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html#getToken(boolean)">getToken</a>(p:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>)</code></div>
+                        <div><code><a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html#getToken(boolean)">getToken</a>(p:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>)</code></div>
                       </td>
                     </tr>
                     <tr>
                       <td><code>abstract <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></code></td>
                       <td>
-                        <div><code><a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InternalAppCheckTokenProvider.html#removeAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">removeAppCheckTokenListener</a>(p:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>!)</code></div>
+                        <div><code><a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/InteropAppCheckTokenProvider.html#removeAppCheckTokenListener(com.google.firebase.appcheck.interop.AppCheckTokenListener)">removeAppCheckTokenListener</a>(p:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/appcheck/interop/AppCheckTokenListener.html">AppCheckTokenListener</a>!)</code></div>
                       </td>
                     </tr>
                   </tbody>

@google-oss-bot
Copy link
Contributor

1 Warning
⚠️ Did you forget to add a changelog entry? (Add the 'no-changelog' label to the PR to silence this warning.)

Generated by 🚫 Danger

@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject appcheck_firebase-appcheck-interop:
error: Method com.google.firebase.appcheck.AppCheckTokenResult.getError has changed return type from com.google.firebase.FirebaseException to Exception [ChangedType]

Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Mar 14, 2023

Coverage Report 1

Affected Products

  • firebase-database

    Overall coverage changed from 50.13% (8840eee) to 50.14% (ad661ab) by +0.01%.

    FilenameBase (8840eee)Merge (ad661ab)Diff
    DefaultPersistenceManager.java74.76%75.73%+0.97%
  • firebase-firestore

    Overall coverage changed from 44.12% (8840eee) to 44.10% (ad661ab) by -0.02%.

    FilenameBase (8840eee)Merge (ad661ab)Diff
    LocalStore.java100.00%99.39%-0.61%
    LruGarbageCollector.java97.20%93.46%-3.74%
  • firebase-storage

    Overall coverage changed from 86.29% (8840eee) to 85.99% (ad661ab) by -0.30%.

    FilenameBase (8840eee)Merge (ad661ab)Diff
    NetworkRequest.java87.11%86.60%-0.52%
    StorageTask.java83.99%83.69%-0.30%
    UploadTask.java83.44%81.79%-1.66%

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/0Z6JaFc4Xr.html

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Mar 14, 2023

Size Report 1

Affected Products

  • firebase-appcheck

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar36.7 kB36.7 kB-13 B (-0.0%)
    apk (release)1.56 MB1.56 MB-44 B (-0.0%)
  • firebase-appcheck-debug

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar11.1 kB11.1 kB+1 B (+0.0%)
    apk (release)1.56 MB1.56 MB-108 B (-0.0%)
  • firebase-appcheck-debug-testing

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar7.26 kB7.26 kB-1 B (-0.0%)
    apk (aggressive)365 kB365 kB-4 B (-0.0%)
    apk (release)1.60 MB1.60 MB+116 B (+0.0%)
  • firebase-appcheck-interop

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar5.02 kB5.00 kB-24 B (-0.5%)
    apk (aggressive)358 kB312 kB-46.9 kB (-13.1%)
    apk (release)1.54 MB931 kB-612 kB (-39.7%)
  • firebase-appcheck-playintegrity

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar11.0 kB11.0 kB-1 B (-0.0%)
    apk (aggressive)365 kB365 kB-4 B (-0.0%)
    apk (release)1.57 MB1.57 MB+144 B (+0.0%)
  • firebase-database

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar488 kB488 kB+12 B (+0.0%)
    apk (aggressive)359 kB359 kB-206 B (-0.1%)
    apk (release)1.72 MB1.72 MB-174 B (-0.0%)
  • firebase-firestore

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar1.33 MB1.33 MB-8 B (-0.0%)
    apk (aggressive)518 kB518 kB-206 B (-0.0%)
    apk (release)3.94 MB3.94 MB-226 B (-0.0%)
  • firebase-functions

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar45.3 kB45.3 kB+1 B (+0.0%)
    apk (aggressive)400 kB400 kB-214 B (-0.1%)
    apk (release)1.81 MB1.81 MB-418 B (-0.0%)
  • firebase-storage

    TypeBase (8840eee)Merge (ad661ab)Diff
    aar116 kB116 kB+19 B (+0.0%)
    apk (aggressive)359 kB359 kB-202 B (-0.1%)
    apk (release)1.59 MB1.59 MB-342 B (-0.0%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/ZeAwdoxYus.html

@github-actions
Copy link
Contributor

github-actions bot commented Mar 14, 2023

Unit Test Results

   310 files   -    439     310 suites   - 439   11m 57s ⏱️ - 17m 50s
1 780 tests  - 3 074  1 762 ✔️  - 3 069  18 💤  - 3  0  - 2 
3 560 runs   - 5 474  3 524 ✔️  - 5 466  36 💤  - 6  0  - 2 

Results for commit 3d357a2. ± Comparison against base commit fe8c9df.

♻️ This comment has been updated with latest results.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Mar 14, 2023

Startup Time Report 1

Note: Layout is sometimes suboptimal due to limited formatting support on GitHub. Please check this report on GCS.

Notes

Startup Times

  • fire-app-check

    DeviceStatisticsDistributions
    oriole-32
    Percentile8840eeead661abDiffSignificant (?)
    p10551 ±655 μs502 ±688 μs-48.9 μs (-8.9%)NO
    p25586 ±685 μs530 ±716 μs-56.8 μs (-9.7%)NO
    p50639 ±735 μs569 ±751 μs-69.6 μs (-10.9%)NO
    p75741 ±854 μs658 ±866 μs-82.3 μs (-11.1%)NO
    p90899 ±956 μs811 ±1042 μs-88.4 μs (-9.8%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
    redfin-30
    Percentile8840eeead661abDiffSignificant (?)
    p10890 ±1419 μs1.68 ±2 ms+789 μs (+88.7%)NO
    p25956 ±1485 μs1.78 ±2 ms+822 μs (+86.0%)NO
    p501.08 ±2 ms1.99 ±2 ms+903 μs (+83.3%)NO
    p751.28 ±2 ms2.31 ±3 ms+1.03 ms (+80.3%)NO
    p901.62 ±2 ms3.03 ±4 ms+1.41 ms (+87.2%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
  • fire-fn

    DeviceStatisticsDistributions
    oriole-32
    Percentile8840eeead661abDiffSignificant (?)
    p1076.0 ±21 μs72.3 ±13 μs-3.67 μs (-4.8%)NO
    p2582.8 ±26 μs78.4 ±17 μs-4.40 μs (-5.3%)NO
    p5094.9 ±35 μs90.1 ±24 μs-4.78 μs (-5.0%)NO
    p75112 ±53 μs108 ±33 μs-4.00 μs (-3.6%)NO
    p90134 ±75 μs137 ±61 μs+2.85 μs (+2.1%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
    redfin-30
    Percentile8840eeead661abDiffSignificant (?)
    p10139 ±17 μs141 ±18 μs+1.92 μs (+1.4%)NO
    p25145 ±18 μs150 ±18 μs+4.84 μs (+3.3%)NO
    p50154 ±19 μs162 ±19 μs+7.46 μs (+4.8%)NO
    p75165 ±23 μs180 ±23 μs+14.1 μs (+8.5%)NO
    p90182 ±28 μs234 ±91 μs+51.6 μs (+28.3%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
  • fire-fst

    DeviceStatisticsDistributions
    oriole-32
    Percentile8840eeead661abDiffSignificant (?)
    p10340 ±42 μs331 ±25 μs-8.59 μs (-2.5%)NO
    p25366 ±67 μs344 ±28 μs-22.0 μs (-6.0%)NO
    p50396 ±84 μs367 ±36 μs-28.8 μs (-7.3%)NO
    p75441 ±95 μs434 ±99.5 μs-7.55 μs (-1.7%)NO
    p90501 ±125 μs521 ±172 μs+19.5 μs (+3.9%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
    redfin-30
    Percentile8840eeead661abDiffSignificant (?)
    p10628 ±25 μs633 ±24 μs+5.43 μs (+0.9%)NO
    p25645 ±33 μs656 ±30 μs+11.4 μs (+1.8%)NO
    p50669 ±42 μs691 ±39 μs+21.3 μs (+3.2%)NO
    p75705 ±57 μs739 ±49 μs+33.9 μs (+4.8%)NO
    p90762 ±104 μs794 ±64 μs+32.5 μs (+4.3%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
  • fire-gcs

    DeviceStatisticsDistributions
    oriole-32
    Percentile8840eeead661abDiffSignificant (?)
    p1015.6 ±5 μs12.6 ±3 μs-3.07 μs (-19.7%)NO
    p2517.0 ±6 μs13.2 ±3 μs-3.79 μs (-22.3%)NO
    p5019.5 ±7 μs14.7 ±4 μs-4.76 μs (-24.4%)NO
    p7522.4 ±6 μs17.6 ±6 μs-4.81 μs (-21.5%)NO
    p9027.1 ±7 μs21.6 ±8 μs-5.48 μs (-20.2%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
    redfin-30
    Percentile8840eeead661abDiffSignificant (?)
    p1029.2 ±11 μs30.4 ±6 μs+1.21 μs (+4.1%)NO
    p2530.4 ±12 μs31.7 ±6 μs+1.36 μs (+4.5%)NO
    p5032.2 ±12 μs33.8 ±7 μs+1.66 μs (+5.2%)NO
    p7535.1 ±12 μs36.9 ±7 μs+1.88 μs (+5.4%)NO
    p9044.3 ±14 μs45.7 ±13 μs+1.39 μs (+3.1%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
  • fire-rtdb

    DeviceStatisticsDistributions
    oriole-32
    Percentile8840eeead661abDiffSignificant (?)
    p1037.1 ±6 μs32.5 ±6 μs-4.69 μs (-12.6%)NO
    p2540.2 ±8 μs35.0 ±7 μs-5.14 μs (-12.8%)NO
    p5045.1 ±11 μs39.4 ±9 μs-5.67 μs (-12.6%)NO
    p7554.8 ±16 μs50.0 ±12 μs-4.79 μs (-8.8%)NO
    p9066.2 ±28 μs64.6 ±23 μs-1.63 μs (-2.5%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
    redfin-30
    Percentile8840eeead661abDiffSignificant (?)
    p1076.8 ±13 μs73.1 ±9 μs-3.70 μs (-4.8%)NO
    p2580.2 ±13 μs76.7 ±9.7 μs-3.56 μs (-4.4%)NO
    p5085.4 ±14 μs82.7 ±9.7 μs-2.75 μs (-3.2%)NO
    p7592.7 ±14 μs90.5 ±11 μs-2.17 μs (-2.3%)NO
    p90108 ±21 μs104 ±18 μs-4.19 μs (-3.9%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
  • timeToInitialDisplay

    DeviceStatisticsDistributions
    oriole-32
    Percentile8840eeead661abDiffSignificant (?)
    p10198 ±17 ms200 ±8 ms+1.64 ms (+0.8%)NO
    p25208 ±23 ms207 ±9 ms-878 μs (-0.4%)NO
    p50220 ±33 ms215 ±11 ms-4.55 ms (-2.1%)NO
    p75230 ±38 ms227 ±18 ms-2.94 ms (-1.3%)NO
    p90240 ±41 ms239 ±25 ms-329 μs (-0.1%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ
    redfin-30
    Percentile8840eeead661abDiffSignificant (?)
    p10231 ±3 ms251 ±9 ms+20.3 ms (+8.8%)NO
    p25237 ±4 ms257 ±9 ms+20.3 ms (+8.6%)NO
    p50244 ±4 ms264 ±9.8 ms+20.4 ms (+8.4%)NO
    p75253 ±6 ms274 ±10 ms+21.0 ms (+8.3%)NO
    p90261 ±6 ms284 ±9.8 ms+23.4 ms (+9.0%)NO

    20 test runs in comparison
    CommitTest Runs
    8840eee
    • 2023-04-17_17:40:38.170833_tmml
    • 2023-04-17_17:40:38.175495_Gudd
    • 2023-04-17_17:40:38.175516_vHCe
    • 2023-04-17_17:40:38.175524_tLlG
    • 2023-04-17_17:40:38.175534_YUxK
    • 2023-04-17_17:40:38.175549_SNba
    • 2023-04-17_17:40:38.175567_Meym
    • 2023-04-17_17:40:38.175574_TlhS
    • 2023-04-17_17:40:38.175580_LIVi
    • 2023-04-17_17:40:38.175586_TtcW
    ad661ab
    • 2023-04-17_21:17:16.642775_jyGR
    • 2023-04-17_21:17:16.652370_jMwp
    • 2023-04-17_21:17:16.652392_Bkrv
    • 2023-04-17_21:17:16.652401_fwWD
    • 2023-04-17_21:17:16.652913_ytnB
    • 2023-04-17_21:17:16.652939_JZzp
    • 2023-04-17_21:17:16.652948_SZOj
    • 2023-04-17_21:17:16.652957_dDhm
    • 2023-04-17_21:17:16.652964_Ourg
    • 2023-04-17_21:17:16.652971_rVhJ

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/3gkMKOVMRr/index.html

@emilypgoogle emilypgoogle requested a review from rosalyntan April 3, 2023 16:45
@emilypgoogle emilypgoogle force-pushed the ep/appcheck-interop branch from bd84c56 to 367e0fd Compare April 3, 2023 20:07
@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject appcheck_firebase-appcheck-interop:
error: Method com.google.firebase.appcheck.AppCheckTokenResult.getError has changed return type from com.google.firebase.FirebaseException to Exception [ChangedType]

Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly.

@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject appcheck_firebase-appcheck-interop:
error: Method com.google.firebase.appcheck.AppCheckTokenResult.getError has changed return type from com.google.firebase.FirebaseException to Exception [ChangedType]

Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly.

Copy link
Member

@rosalyntan rosalyntan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like there are a few failing tests -- can you take a look at those?

Also re: "AppCheck Interop is currently a non-public facing SDK, and all uses of the method being changed are in tests, so the breaking change does not require an API bump or a major release bump."

Just to check, have you verified that Firebase SDK usages of the App Check Interop (i.e. Storage, Firestore, etc.) also do not rely on FirebaseException being returned from the interop?

@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject appcheck_firebase-appcheck-interop:
error: Method com.google.firebase.appcheck.AppCheckTokenResult.getError has changed return type from com.google.firebase.FirebaseException to Exception [ChangedType]

Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly.

@emilypgoogle
Copy link
Collaborator Author

@rosalyntan

Just to check, have you verified that Firebase SDK usages of the App Check Interop (i.e. Storage, Firestore, etc.) also do not rely on FirebaseException being returned from the interop?

The method's uses are all null checks or rethrows, so nothing relies on the backing type past implementing Throwable, however the signature will have changed.

In regards to the version bump situation, however, after a handful of conversations it seems like the best option is to bump appcheck and interop to a new major, and move the 3 dependent SDKs (functions, firestore, storage) up a minor to depend on the new version. Current plan is to do this in M131 for IO. I've got the version bumps ready in the PR as I understand them but would appreciate a sanity check.

This does however give us the possibility to rename InternalAppCheckTokenProvider to something else since we're already breaking, I believe Victor in the past suggested simply dropping internal for AppCheckTokenProvider. The benefit is this type is going to be visible in the Maps API surface and would result in a slightly less peculiar name, though ultimately the user is expected to be passing AppCheck as a whole regardless and documentation will reflect this, so it's not an absolutely necessary change.

What do you think about the versioning and name change?

@rosalyntan
Copy link
Member

In regards to the version bump situation, however, after a handful of conversations it seems like the best option is to bump appcheck and interop to a new major, and move the 3 dependent SDKs (functions, firestore, storage) up a minor to depend on the new version. Current plan is to do this in M131 for IO. I've got the version bumps ready in the PR as I understand them but would appreciate a sanity check.

Version bumps sound good, though I left a couple comments in the PR.

This does however give us the possibility to rename InternalAppCheckTokenProvider to something else since we're already breaking, I believe Victor in the past suggested simply dropping internal for AppCheckTokenProvider. The benefit is this type is going to be visible in the Maps API surface and would result in a slightly less peculiar name, though ultimately the user is expected to be passing AppCheck as a whole regardless and documentation will reflect this, so it's not an absolutely necessary change.

I think re-naming is okay, though I think there is some benefit in making it clear that the interop library is not intended for public consumption. Perhaps instead of just AppCheckTokenProvider, it can be InteropAppCheckTokenProvider? Also can you clarify what you mean by this type being visible in the Maps API surface? Will developers using the Maps API have to interact with the interop types directly?

Also @malcolmdeck for thoughts on this, since I'm not sure who the new owner of the Android App Check SDK will be.

@emilypgoogle
Copy link
Collaborator Author

I agree on InteropAppCheckTokenProvider

Will developers using the Maps API have to interact with the interop types directly?
They won't need to perform any calls on type types, I believe the extent of the interaction is passing a real instance of AppCheck to a method something like Maps.registerAppCheckTokenProvider(InteropAppCheckTokenProvider provider)

@malcolmdeck
Copy link
Contributor

I think that we may want to run the Interop class naming by the API Council (even if it's just an email rather than formal review). It's not the hugest deal since developers won't actually need to interact with that Interface, but if we're making a new symbol public it's probably worth making sure that we get it right, especially since whatever we put in Maps is likely to be the name for all future external integrators (of which we will expect there to be many).

@emilypgoogle
Copy link
Collaborator Author

I think that we may want to run the Interop class naming by the API Council (even if it's just an email rather than formal review).

Got an LGTM and no dissenting opinions over a couple days, looks like we're in the clear for this, so I went through with the name change. Currently have 1 integration test failing that I'm looking into, not sure if it's just flaky though.

@emilypgoogle emilypgoogle requested a review from rosalyntan April 13, 2023 16:24
@emilypgoogle emilypgoogle merged commit 3e5cd47 into master Apr 17, 2023
@emilypgoogle emilypgoogle deleted the ep/appcheck-interop branch April 17, 2023 21:07
@firebase firebase locked and limited conversation to collaborators May 18, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants