Skip to content

Implement local manifest override configs #4877

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 2 commits into from
Apr 10, 2023

Conversation

visumickey
Copy link
Contributor

Implement local overrides for configs from the application's manifest file.

@visumickey visumickey force-pushed the firebase-session-localoverrides branch from a2e95eb to 4e98eb2 Compare April 7, 2023 22:37
@visumickey visumickey requested review from mrober and samedson April 7, 2023 22:40
@google-oss-bot
Copy link
Contributor

Coverage Report 1

Affected Products

  • firebase-sessions

    Overall coverage changed from ? (f7fff6b) to 60.09% (68ad541) by ?.

    14 individual files with coverage change

    FilenameBase (f7fff6b)Merge (68ad541)Diff
    ApplicationInfo.kt?100.00%?
    EventGDTLogger.kt?90.00%?
    FirebaseSessions.kt?0.00%?
    FirebaseSessionsEarly.kt?0.00%?
    FirebaseSessionsRegistrar.kt?0.00%?
    LocalOverrideSettings.kt?90.00%?
    SessionCoordinator.kt?76.47%?
    SessionEvent.kt?100.00%?
    SessionEvents.kt?100.00%?
    SessionGenerator.kt?22.73%?
    SessionInitiator.kt?66.67%?
    SessionsSettings.kt?84.62%?
    SettingsProvider.kt?0.00%?
    WallClock.kt?0.00%?

Test Logs

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

@github-actions
Copy link
Contributor

github-actions bot commented Apr 7, 2023

Unit Test Results

18 files  18 suites   21s ⏱️
22 tests 22 ✔️ 0 💤 0
44 runs  44 ✔️ 0 💤 0

Results for commit d3faacc.

@github-actions
Copy link
Contributor

github-actions bot commented Apr 7, 2023

Javadoc Changes:
--- /Users/runner/diff/original/firebase-kotlindoc/android/client/firebase-sessions/_toc.yaml	2023-04-07 22:54:31.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/android/client/firebase-sessions/_toc.yaml	2023-04-07 22:49:34.000000000 +0000
@@ -9,4 +9,14 @@
     - title: "FirebaseSessions"
       path: "/docs/reference/android/com/google/firebase/sessions/FirebaseSessions.html"
 
+- title: "firebase.sessions.settings"
+  path: "/docs/reference/android/com/google/firebase/sessions/settings/package-summary.html"
+
+  section:
+  - title: "Interfaces"
+
+    section:
+    - title: "SettingsProvider"
+      path: "/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html"
+
 
--- /Users/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/sessions/settings/SettingsProvider.html	1970-01-01 00:00:00.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/sessions/settings/SettingsProvider.html	2023-04-07 22:49:34.000000000 +0000
@@ -0,0 +1,103 @@
+<html devsite="true">
+  <head>
+    <title>SettingsProvider</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>SettingsProvider</h1>
+    <p>
+      <pre>public interface <a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html">SettingsProvider</a></pre>
+    </p>
+    <hr>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public fields</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>abstract <a href="https://developer.android.com/reference/kotlin/java/lang/Double.html">Double</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#samplingRate()">samplingRate</a></code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code>abstract <a href="https://developer.android.com/reference/kotlin/java/lang/Boolean.html">Boolean</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#sessionEnabled()">sessionEnabled</a></code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code>abstract <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.time/-duration/index.html">Duration</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#sessionRestartTimeout()">sessionRestartTimeout</a></code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public methods</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>abstract boolean</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#isSettingsStale()">isSettingsStale</a>()</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code>abstract void</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#updateSettings()">updateSettings</a>()</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public fields</h2>
+      <div class="api-item"><a name="getSamplingRate()"></a><a name="setSamplingRate()"></a><a name="getSamplingRate--"></a><a name="setSamplingRate--"></a>
+        <h3 class="api-name" id="samplingRate()">samplingRate</h3>
+        <pre class="api-signature no-pretty-print">abstract&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Double.html">Double</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#samplingRate()">samplingRate</a></pre>
+      </div>
+      <div class="api-item"><a name="getSessionEnabled()"></a><a name="setSessionEnabled()"></a><a name="getSessionEnabled--"></a><a name="setSessionEnabled--"></a>
+        <h3 class="api-name" id="sessionEnabled()">sessionEnabled</h3>
+        <pre class="api-signature no-pretty-print">abstract&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/Boolean.html">Boolean</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#sessionEnabled()">sessionEnabled</a></pre>
+      </div>
+      <div class="api-item"><a name="getSessionRestartTimeout()"></a><a name="setSessionRestartTimeout()"></a><a name="getSessionRestartTimeout--"></a><a name="setSessionRestartTimeout--"></a>
+        <h3 class="api-name" id="sessionRestartTimeout()">sessionRestartTimeout</h3>
+        <pre class="api-signature no-pretty-print">abstract&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.time/-duration/index.html">Duration</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#sessionRestartTimeout()">sessionRestartTimeout</a></pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public methods</h2>
+      <div class="api-item"><a name="isSettingsStale--"></a><a name="issettingsstale"></a>
+        <h3 class="api-name" id="isSettingsStale()">isSettingsStale</h3>
+        <pre class="api-signature no-pretty-print">abstract&nbsp;boolean&nbsp;<a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#isSettingsStale()">isSettingsStale</a>()</pre>
+      </div>
+      <div class="api-item"><a name="updateSettings--"></a><a name="updatesettings"></a>
+        <h3 class="api-name" id="updateSettings()">updateSettings</h3>
+        <pre class="api-signature no-pretty-print">abstract&nbsp;void&nbsp;<a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html#updateSettings()">updateSettings</a>()</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /Users/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/sessions/settings/package-summary.html	1970-01-01 00:00:00.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/sessions/settings/package-summary.html	2023-04-07 22:49:34.000000000 +0000
@@ -0,0 +1,26 @@
+<html devsite="true">
+  <head>
+    <title>com.google.firebase.sessions.settings</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <h1>com.google.firebase.sessions.settings</h1>
+    <h2>Interfaces</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/sessions/settings/SettingsProvider.html">SettingsProvider</a></code></td>
+            <td></td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </body>
+</html>
+
--- /Users/runner/diff/original/firebase-kotlindoc/kotlin/client/firebase-sessions/_toc.yaml	2023-04-07 22:54:31.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/kotlin/client/firebase-sessions/_toc.yaml	2023-04-07 22:49:34.000000000 +0000
@@ -9,4 +9,14 @@
     - title: "FirebaseSessions"
       path: "/docs/reference/kotlin/com/google/firebase/sessions/FirebaseSessions.html"
 
+- title: "com.google.firebase.sessions.settings"
+  path: "/docs/reference/kotlin/com/google/firebase/sessions/settings/package-summary.html"
+
+  section:
+  - title: "Interfaces"
+
+    section:
+    - title: "SettingsProvider"
+      path: "/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html"
+
 
--- /Users/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html	1970-01-01 00:00:00.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html	2023-04-07 22:49:34.000000000 +0000
@@ -0,0 +1,103 @@
+<html devsite="true">
+  <head>
+    <title>SettingsProvider</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>SettingsProvider</h1>
+    <p>
+      <pre>interface <a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html">SettingsProvider</a></pre>
+    </p>
+    <hr>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public functions</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#isSettingsStale()">isSettingsStale</a>()</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><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/sessions/settings/SettingsProvider.html#updateSettings()">updateSettings</a>()</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public properties</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-double/index.html">Double</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#samplingRate()">samplingRate</a></code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#sessionEnabled()">sessionEnabled</a></code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.time/-duration/index.html">Duration</a>?</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#sessionRestartTimeout()">sessionRestartTimeout</a></code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public functions</h2>
+      <div class="api-item"><a name="isSettingsStale--"></a><a name="issettingsstale"></a>
+        <h3 class="api-name" id="isSettingsStale()">isSettingsStale</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#isSettingsStale()">isSettingsStale</a>():&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></pre>
+      </div>
+      <div class="api-item"><a name="updateSettings--"></a><a name="updatesettings"></a>
+        <h3 class="api-name" id="updateSettings()">updateSettings</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#updateSettings()">updateSettings</a>():&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public properties</h2>
+      <div class="api-item"><a name="getSamplingRate()"></a><a name="setSamplingRate()"></a><a name="getSamplingRate--"></a><a name="setSamplingRate--"></a>
+        <h3 class="api-name" id="samplingRate()">samplingRate</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#samplingRate()">samplingRate</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-double/index.html">Double</a>?</pre>
+      </div>
+      <div class="api-item"><a name="getSessionEnabled()"></a><a name="setSessionEnabled()"></a><a name="getSessionEnabled--"></a><a name="setSessionEnabled--"></a>
+        <h3 class="api-name" id="sessionEnabled()">sessionEnabled</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#sessionEnabled()">sessionEnabled</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a>?</pre>
+      </div>
+      <div class="api-item"><a name="getSessionRestartTimeout()"></a><a name="setSessionRestartTimeout()"></a><a name="getSessionRestartTimeout--"></a><a name="setSessionRestartTimeout--"></a>
+        <h3 class="api-name" id="sessionRestartTimeout()">sessionRestartTimeout</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html#sessionRestartTimeout()">sessionRestartTimeout</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.time/-duration/index.html">Duration</a>?</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /Users/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/sessions/settings/package-summary.html	1970-01-01 00:00:00.000000000 +0000
+++ /Users/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/sessions/settings/package-summary.html	2023-04-07 22:49:34.000000000 +0000
@@ -0,0 +1,26 @@
+<html devsite="true">
+  <head>
+    <title>com.google.firebase.sessions.settings</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <h1>com.google.firebase.sessions.settings</h1>
+    <h2>Interfaces</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/sessions/settings/SettingsProvider.html">SettingsProvider</a></code></td>
+            <td></td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </body>
+</html>
+

@google-oss-bot
Copy link
Contributor

Size Report 1

Affected Products

  • base

    TypeBase (f7fff6b)Merge (68ad541)Diff
    apk (aggressive)?8.39 kB? (?)
    apk (release)?8.65 kB? (?)
  • firebase-datatransport

    TypeBase (f7fff6b)Merge (68ad541)Diff
    aar?4.94 kB? (?)
    apk (aggressive)?161 kB? (?)
    apk (release)?1.35 MB? (?)
  • firebase-sessions

    TypeBase (f7fff6b)Merge (68ad541)Diff
    aar?42.9 kB? (?)
    apk (aggressive)?250 kB? (?)
    apk (release)?1.77 MB? (?)

Test Logs

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

Copy link
Contributor

@samedson samedson left a comment

Choose a reason for hiding this comment

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

Looks good!

@visumickey visumickey merged commit 48aed7f into firebase-sessions Apr 10, 2023
@visumickey visumickey deleted the firebase-session-localoverrides branch April 10, 2023 19:55
// Setting to qualify if sessions service is enabled.
val sessionsEnabled: Boolean
get() {
if (localOverrideSettings.sessionEnabled != null) {
return localOverrideSettings.sessionEnabled!!
Copy link
Contributor

@mrober mrober Apr 11, 2023

Choose a reason for hiding this comment

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

Instead of this pattern and using !!, Kotlin has nice syntax for dealing with null like:

Elvis if it's just 1 or the other:
get() = localOverrideSettings.sessionEnabled ?: true

There is also this for when we have multiple cases:

localOverrideSettings.sessionEnabled?.let { return it }

someOtherCases?.let { return it }

return true

@firebase firebase locked and limited conversation to collaborators May 11, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants