Skip to content
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

Snapshot listener source from cache #5690

Merged
merged 37 commits into from Mar 11, 2024
Merged

Conversation

milaGGL
Copy link
Contributor

@milaGGL milaGGL commented Feb 1, 2024

Copy link
Contributor

github-actions bot commented Feb 1, 2024

Javadoc Changes:
--- /home/runner/diff/original/firebase-kotlindoc/android/client/firebase-firestore/_toc.yaml	2024-03-08 18:27:28.180924679 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/client/firebase-firestore/_toc.yaml	2024-03-08 18:24:51.192916336 +0000
@@ -92,6 +92,10 @@
       path: "/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html"
     - title: "SetOptions"
       path: "/docs/reference/android/com/google/firebase/firestore/SetOptions.html"
+    - title: "SnapshotListenOptions"
+      path: "/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html"
+    - title: "SnapshotListenOptions.Builder"
+      path: "/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html"
     - title: "SnapshotMetadata"
       path: "/docs/reference/android/com/google/firebase/firestore/SnapshotMetadata.html"
     - title: "Transaction"
@@ -114,6 +118,8 @@
       path: "/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot.ServerTimestampBehavior.html"
     - title: "FirebaseFirestoreException.Code"
       path: "/docs/reference/android/com/google/firebase/firestore/FirebaseFirestoreException.Code.html"
+    - title: "ListenSource"
+      path: "/docs/reference/android/com/google/firebase/firestore/ListenSource.html"
     - title: "LoadBundleTaskProgress.TaskState"
       path: "/docs/reference/android/com/google/firebase/firestore/LoadBundleTaskProgress.TaskState.html"
     - title: "MetadataChanges"
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/firestore/CollectionReference.html	2024-03-08 18:27:28.184924680 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/firestore/CollectionReference.html	2024-03-08 18:24:51.192916336 +0000
@@ -167,6 +167,13 @@
                     <tr>
                       <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
                       <td>
+                        <div><code><a href="/docs/reference/android/com/google/firebase/firestore/Query.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;options,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>&gt;&nbsp;listener<br>)</code></div>
+                        <p>Starts listening to this query with the given options.</p>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+                      <td>
                         <div><code><a href="/docs/reference/android/com/google/firebase/firestore/Query.html#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;activity,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;metadataChanges,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>&gt;&nbsp;listener<br>)</code></div>
                         <p>Starts listening to this query with the given options, using an Activity-scoped listener.</p>
                       </td>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/firestore/DocumentReference.html	2024-03-08 18:27:28.208924681 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/firestore/DocumentReference.html	2024-03-08 18:24:51.200916337 +0000
@@ -78,6 +78,13 @@
           <tr>
             <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
             <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;options,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>&gt;&nbsp;listener<br>)</code></div>
+              <p>Starts listening to the document referenced by this <code>DocumentReference</code> with the given options.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+            <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;activity,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;metadataChanges,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>&gt;&nbsp;listener<br>)</code></div>
               <p>Starts listening to the document referenced by this <code>DocumentReference</code> with the given options using an Activity-scoped listener.</p>
             </td>
@@ -424,6 +431,59 @@
                 </td>
               </tr>
               <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>&gt;&nbsp;listener</code></td>
+                <td>
+                  <p>The event listener that will be called with the snapshots.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+                <td>
+                  <p>A registration object that can be used to remove the listener.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions, com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)"></a><a name="addSnapshotListener-com.google.firebase.firestore.SnapshotListenOptions-com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;-"></a><a name="addsnapshotlistener"></a>
+        <h3 class="api-name" id="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;options,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>&gt;&nbsp;listener<br>)</pre>
+        <p>Starts listening to the document referenced by this <code>DocumentReference</code> with the given options.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;options</code></td>
+                <td>
+                  <p>Sets snapshot listener options, including whether metadata-only changes should trigger snapshot events, the source to listen to, the executor to use to call the listener, or the activity to scope the listener to.</p>
+                </td>
+              </tr>
+              <tr>
                 <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>&gt;&nbsp;listener</code></td>
                 <td>
                   <p>The event listener that will be called with the snapshots.</p>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/firestore/ListenSource.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/firestore/ListenSource.html	2024-03-08 18:24:51.196916336 +0000
@@ -0,0 +1,164 @@
+<html devsite="true">
+  <head>
+    <title>ListenSource</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>ListenSource</h1>
+    <p>
+      <pre>public enum <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a></pre>
+    </p>
+    <hr>
+    <p>Configures the source option of <code>addSnapshotListener()</code> calls on <code><a href="/docs/reference/android/com/google/firebase/firestore/DocumentReference.html">DocumentReference</a></code> and <code><a href="/docs/reference/android/com/google/firebase/firestore/Query.html">Query</a></code>. This controls how a listener retrieves data updates.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#CACHE">CACHE</a></code></td>
+            <td>
+              <p>The listener retrieves data and listens to updates from the local Firestore cache only.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#DEFAULT">DEFAULT</a></code></td>
+            <td>
+              <p>The default behavior.</p>
+            </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>static <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#valueOf(java.lang.String)">valueOf</a>(<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name)</code></div>
+              <p>Returns the enum constant of this type with the specified name.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>static ListenSource[]</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#values()">values</a>()</code></div>
+              <p>Returns an array containing the constants of this enum type, in the order they're declared.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Enum Values</h2>
+      <div class="api-item">
+        <h3 class="api-name" id="CACHE">CACHE</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#CACHE">ListenSource.CACHE</a></pre>
+        <p>The listener retrieves data and listens to updates from the local Firestore cache only. If the cache is empty, an empty snapshot will be returned. Snapshot events will be triggered on cache updates, like local mutations or load bundles. </p>
+        <p>Note that the data might be stale if the cache hasn't synchronized with recent server-side changes.</p>
+      </div>
+      <div class="api-item">
+        <h3 class="api-name" id="DEFAULT">DEFAULT</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#DEFAULT">ListenSource.DEFAULT</a></pre>
+        <p>The default behavior. The listener attempts to return initial snapshot from cache and retrieve up-to-date snapshots from the Firestore server. Snapshot events will be triggered on local mutations and server side updates.</p>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public methods</h2>
+      <div class="api-item"><a name="valueOf-java.lang.String-"></a><a name="valueof"></a>
+        <h3 class="api-name" id="valueOf(java.lang.String)">valueOf</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;static&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#valueOf(java.lang.String)">valueOf</a>(<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;name)</pre>
+        <p>Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+                <td>
+                  <p>the enum constant with the specified name</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Throws</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="https://developer.android.com/reference/kotlin/java/lang/IllegalArgumentException.html">java.lang.IllegalArgumentException</a>&nbsp;java.lang.IllegalArgumentException</code></td>
+                <td>
+                  <p>if this enum type has no constant with the specified name</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="values--"></a><a name="values"></a>
+        <h3 class="api-name" id="values()">values</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;static&nbsp;ListenSource[]&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html#values()">values</a>()</pre>
+        <p>Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>ListenSource[]</code></td>
+                <td>
+                  <p>an array containing the constants of this enum type, in the order they're declared</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/firestore/Query.html	2024-03-08 18:27:28.212924681 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/firestore/Query.html	2024-03-08 18:24:51.200916337 +0000
@@ -121,6 +121,13 @@
           <tr>
             <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
             <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/Query.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;options,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>&gt;&nbsp;listener<br>)</code></div>
+              <p>Starts listening to this query with the given options.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+            <td>
               <div><code><a href="/docs/reference/android/com/google/firebase/firestore/Query.html#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;activity,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;metadataChanges,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>&gt;&nbsp;listener<br>)</code></div>
               <p>Starts listening to this query with the given options, using an Activity-scoped listener.</p>
             </td>
@@ -657,6 +664,59 @@
                 </td>
               </tr>
               <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>&gt;&nbsp;listener</code></td>
+                <td>
+                  <p>The event listener that will be called with the snapshots.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+                <td>
+                  <p>A registration object that can be used to remove the listener.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions, com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)"></a><a name="addSnapshotListener-com.google.firebase.firestore.SnapshotListenOptions-com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;-"></a><a name="addsnapshotlistener"></a>
+        <h3 class="api-name" id="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/Query.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;options,<br>&nbsp;&nbsp;&nbsp;&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>&gt;&nbsp;listener<br>)</pre>
+        <p>Starts listening to this query with the given options.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;options</code></td>
+                <td>
+                  <p>Sets snapshot listener options, including whether metadata-only changes should trigger snapshot events, the source to listen to, the executor to use to call the listener, or the activity to scope the listener to.</p>
+                </td>
+              </tr>
+              <tr>
                 <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/android/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>&gt;&nbsp;listener</code></td>
                 <td>
                   <p>The event listener that will be called with the snapshots.</p>
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html	2024-03-08 18:24:51.204916337 +0000
@@ -0,0 +1,312 @@
+<html devsite="true">
+  <head>
+    <title>SnapshotListenOptions.Builder</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>SnapshotListenOptions.Builder</h1>
+    <p>
+      <pre>public class <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></pre>
+    </p>
+    <hr>
+    <p>Builder for constructing <code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instances.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#Builder()">Builder</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>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#build()">build</a>()</code></div>
+              <p>Constructs a <code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instance using the current settings in this Builder.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setActivity(android.app.Activity)">setActivity</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;activity)</code></div>
+              <p>Associates an Activity with this snapshot listener's lifecycle.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setExecutor(java.util.concurrent.Executor)">setExecutor</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>&nbsp;executor)</code></div>
+              <p>Sets the executor to be used for snapshot listener callbacks.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setMetadataChanges(com.google.firebase.firestore.MetadataChanges)">setMetadataChanges</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;metadataChanges)</code></div>
+              <p>Sets whether metadata-only changes should trigger snapshot events.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setSource(com.google.firebase.firestore.ListenSource)">setSource</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;source)</code></div>
+              <p>Sets the preferred source for retrieving data in snapshot listeners.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="Builder--"></a><a name="builder"></a>
+        <h3 class="api-name" id="Builder()">Builder</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#Builder()">Builder</a>()</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public methods</h2>
+      <div class="api-item"><a name="build--"></a><a name="build"></a>
+        <h3 class="api-name" id="build()">build</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#build()">build</a>()</pre>
+        <p>Constructs a <code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instance using the current settings in this Builder.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+                <td>
+                  <p>The constructed SnapshotListenOptions instance.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setActivity-android.app.Activity-"></a><a name="setactivity"></a>
+        <h3 class="api-name" id="setActivity(android.app.Activity)">setActivity</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setActivity(android.app.Activity)">setActivity</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;activity)</pre>
+        <p>Associates an Activity with this snapshot listener's lifecycle. If set, the listener will automatically stop when the Activity is destroyed.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;activity</code></td>
+                <td>
+                  <p>The Activity to associate with the listener.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setExecutor-java.util.concurrent.Executor-"></a><a name="setexecutor"></a>
+        <h3 class="api-name" id="setExecutor(java.util.concurrent.Executor)">setExecutor</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setExecutor(java.util.concurrent.Executor)">setExecutor</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>&nbsp;executor)</pre>
+        <p>Sets the executor to be used for snapshot listener callbacks.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>&nbsp;executor</code></td>
+                <td>
+                  <p>The executor to be used.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setMetadataChanges-com.google.firebase.firestore.MetadataChanges-"></a><a name="setmetadatachanges"></a>
+        <h3 class="api-name" id="setMetadataChanges(com.google.firebase.firestore.MetadataChanges)">setMetadataChanges</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setMetadataChanges(com.google.firebase.firestore.MetadataChanges)">setMetadataChanges</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;metadataChanges)</pre>
+        <p>Sets whether metadata-only changes should trigger snapshot events.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;metadataChanges</code></td>
+                <td>
+                  <p>The setting for metadata-only changes.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setSource-com.google.firebase.firestore.ListenSource-"></a><a name="setsource"></a>
+        <h3 class="api-name" id="setSource(com.google.firebase.firestore.ListenSource)">setSource</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setSource(com.google.firebase.firestore.ListenSource)">setSource</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;source)</pre>
+        <p>Sets the preferred source for retrieving data in snapshot listeners.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;source</code></td>
+                <td>
+                  <p>The preferred source for data retrieval.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/firestore/SnapshotListenOptions.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/firestore/SnapshotListenOptions.html	2024-03-08 18:24:51.200916337 +0000
@@ -0,0 +1,285 @@
+<html devsite="true">
+  <head>
+    <title>SnapshotListenOptions</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>SnapshotListenOptions</h1>
+    <p>
+      <pre>public final class <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></pre>
+    </p>
+    <hr>
+    <p>An options object that configures the behavior of <code>addSnapshotListener()</code> calls. Instances of this class control settings such as whether metadata-only changes trigger events, the preferred data source (server or cache), and the executor for listener callbacks.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Nested types</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code>public class <a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></div>
+              <p>Builder for constructing <code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instances.</p>
+            </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 fields</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>final <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#activity()">activity</a></code></div>
+              <p>The activity to scope the listener to.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final <a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#executor()">executor</a></code></div>
+              <p>The executor to use to call the listener.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#metadataChanges()">metadataChanges</a></code></div>
+              <p>Indicates whether metadata-only changes should trigger snapshot events.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>final <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#source()">source</a></code></div>
+              <p>Indicates the source that we listen to.</p>
+            </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>boolean</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#equals(java.lang.Object)">equals</a>(<a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>&nbsp;o)</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getActivity()">getActivity</a>()</code></div>
+              <p>Returns the optional Activity that scopes this snapshot listener's lifespan.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getExecutor()">getExecutor</a>()</code></div>
+              <p>Returns the executor that will be used to execute the snapshot listener's callback.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getMetadataChanges()">getMetadataChanges</a>()</code></div>
+              <p>Returns the setting for whether metadata-only changes should trigger snapshot events.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getSource()">getSource</a>()</code></div>
+              <p>Returns the preferred source for retrieving data in snapshot listeners.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>int</code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#hashCode()">hashCode</a>()</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#toString()">toString</a>()</code></div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public fields</h2>
+      <div class="api-item"><a name="getActivity()"></a><a name="setActivity()"></a><a name="getActivity--"></a><a name="setActivity--"></a>
+        <h3 class="api-name" id="activity()">activity</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#activity()">activity</a></pre>
+        <p>The activity to scope the listener to.</p>
+      </div>
+      <div class="api-item"><a name="getExecutor()"></a><a name="setExecutor()"></a><a name="getExecutor--"></a><a name="setExecutor--"></a>
+        <h3 class="api-name" id="executor()">executor</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#executor()">executor</a></pre>
+        <p>The executor to use to call the listener.</p>
+      </div>
+      <div class="api-item"><a name="getMetadataChanges()"></a><a name="setMetadataChanges()"></a><a name="getMetadataChanges--"></a><a name="setMetadataChanges--"></a>
+        <h3 class="api-name" id="metadataChanges()">metadataChanges</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#metadataChanges()">metadataChanges</a></pre>
+        <p>Indicates whether metadata-only changes should trigger snapshot events.</p>
+      </div>
+      <div class="api-item"><a name="getSource()"></a><a name="setSource()"></a><a name="getSource--"></a><a name="setSource--"></a>
+        <h3 class="api-name" id="source()">source</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;final&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#source()">source</a></pre>
+        <p>Indicates the source that we listen to.</p>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public methods</h2>
+      <div class="api-item"><a name="equals-java.lang.Object-"></a><a name="equals"></a>
+        <h3 class="api-name" id="equals(java.lang.Object)">equals</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;boolean&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#equals(java.lang.Object)">equals</a>(<a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>&nbsp;o)</pre>
+      </div>
+      <div class="api-item"><a name="getActivity--"></a><a name="getactivity"></a>
+        <h3 class="api-name" id="getActivity()">getActivity</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getActivity()">getActivity</a>()</pre>
+        <p>Returns the optional Activity that scopes this snapshot listener's lifespan. If provided, the listener will automatically stop receiving events when the activity is destroyed.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a></code></td>
+                <td>
+                  <p>The Activity associated with this listener, or null if no activity is set.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="getExecutor--"></a><a name="getexecutor"></a>
+        <h3 class="api-name" id="getExecutor()">getExecutor</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getExecutor()">getExecutor</a>()</pre>
+        <p>Returns the executor that will be used to execute the snapshot listener's callback.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a></code></td>
+                <td>
+                  <p>The executor for snapshot listener callbacks.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="getMetadataChanges--"></a><a name="getmetadatachanges"></a>
+        <h3 class="api-name" id="getMetadataChanges()">getMetadataChanges</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getMetadataChanges()">getMetadataChanges</a>()</pre>
+        <p>Returns the setting for whether metadata-only changes should trigger snapshot events.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a></code></td>
+                <td>
+                  <p>The setting object for metadata-only changes.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="getSource--"></a><a name="getsource"></a>
+        <h3 class="api-name" id="getSource()">getSource</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#getSource()">getSource</a>()</pre>
+        <p>Returns the preferred source for retrieving data in snapshot listeners.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+                <td>
+                  <p>The listen source for retrieving data.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="hashCode--"></a><a name="hashcode"></a>
+        <h3 class="api-name" id="hashCode()">hashCode</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;int&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#hashCode()">hashCode</a>()</pre>
+      </div>
+      <div class="api-item"><a name="toString--"></a><a name="tostring"></a>
+        <h3 class="api-name" id="toString()">toString</h3>
+        <pre class="api-signature no-pretty-print">public&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>&nbsp;<a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html#toString()">toString</a>()</pre>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/firestore/package-summary.html	2024-03-08 18:27:28.216924682 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/firestore/package-summary.html	2024-03-08 18:24:51.204916337 +0000
@@ -312,6 +312,18 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+            <td>
+              <p>An options object that configures the behavior of <code>addSnapshotListener()</code> calls.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <p>Builder for constructing <code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instances.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/android/com/google/firebase/firestore/SnapshotMetadata.html">SnapshotMetadata</a></code></td>
             <td>
               <p>Metadata about a snapshot, describing the state of the snapshot.</p>
@@ -377,6 +389,12 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="/docs/reference/android/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+            <td>
+              <p>Configures the source option of <code>addSnapshotListener()</code> calls on <code><a href="/docs/reference/android/com/google/firebase/firestore/DocumentReference.html">DocumentReference</a></code> and <code><a href="/docs/reference/android/com/google/firebase/firestore/Query.html">Query</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/android/com/google/firebase/firestore/LoadBundleTaskProgress.TaskState.html">LoadBundleTaskProgress.TaskState</a></code></td>
             <td>
               <p>Represents the state of bundle loading tasks.</p>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/client/firebase-firestore/_toc.yaml	2024-03-08 18:27:28.160924678 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/client/firebase-firestore/_toc.yaml	2024-03-08 18:24:51.176916335 +0000
@@ -90,6 +90,10 @@
       path: "/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html"
     - title: "SetOptions"
       path: "/docs/reference/kotlin/com/google/firebase/firestore/SetOptions.html"
+    - title: "SnapshotListenOptions"
+      path: "/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html"
+    - title: "SnapshotListenOptions.Builder"
+      path: "/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html"
     - title: "SnapshotMetadata"
       path: "/docs/reference/kotlin/com/google/firebase/firestore/SnapshotMetadata.html"
     - title: "Transaction"
@@ -112,6 +116,8 @@
       path: "/docs/reference/kotlin/com/google/firebase/firestore/DocumentSnapshot.ServerTimestampBehavior.html"
     - title: "FirebaseFirestoreException.Code"
       path: "/docs/reference/kotlin/com/google/firebase/firestore/FirebaseFirestoreException.Code.html"
+    - title: "ListenSource"
+      path: "/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html"
     - title: "LoadBundleTaskProgress.TaskState"
       path: "/docs/reference/kotlin/com/google/firebase/firestore/LoadBundleTaskProgress.TaskState.html"
     - title: "MetadataChanges"
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/firestore/CollectionReference.html	2024-03-08 18:27:28.164924678 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/firestore/CollectionReference.html	2024-03-08 18:24:51.180916335 +0000
@@ -136,6 +136,13 @@
                     <tr>
                       <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
                       <td>
+                        <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/Query.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>!&gt;<br>)</code></div>
+                        <p>Starts listening to this query with the given options.</p>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+                      <td>
                         <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/Query.html#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;activity:&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;metadataChanges:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>!&gt;<br>)</code></div>
                         <p>Starts listening to this query with the given options, using an Activity-scoped listener.</p>
                       </td>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/firestore/DocumentReference.html	2024-03-08 18:27:28.176924678 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/firestore/DocumentReference.html	2024-03-08 18:24:51.188916336 +0000
@@ -57,6 +57,13 @@
           <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
             <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>!&gt;<br>)</code></div>
+              <p>Starts listening to the document referenced by this <code>DocumentReference</code> with the given options.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+            <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;activity:&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;metadataChanges:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>!&gt;<br>)</code></div>
               <p>Starts listening to the document referenced by this <code>DocumentReference</code> with the given options using an Activity-scoped listener.</p>
             </td>
@@ -410,6 +417,59 @@
                 </td>
               </tr>
               <tr>
+                <td><code>listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>!&gt;</code></td>
+                <td>
+                  <p>The event listener that will be called with the snapshots.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+                <td>
+                  <p>A registration object that can be used to remove the listener.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions, com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)"></a><a name="addSnapshotListener-com.google.firebase.firestore.SnapshotListenOptions-com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;-"></a><a name="addsnapshotlistener"></a>
+        <h3 class="api-name" id="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.DocumentSnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>!&gt;<br>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></pre>
+        <p>Starts listening to the document referenced by this <code>DocumentReference</code> with the given options.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>options:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+                <td>
+                  <p>Sets snapshot listener options, including whether metadata-only changes should trigger snapshot events, the source to listen to, the executor to use to call the listener, or the activity to scope the listener to.</p>
+                </td>
+              </tr>
+              <tr>
                 <td><code>listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentSnapshot.html">DocumentSnapshot</a>!&gt;</code></td>
                 <td>
                   <p>The event listener that will be called with the snapshots.</p>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/firestore/ListenSource.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/firestore/ListenSource.html	2024-03-08 18:24:51.184916335 +0000
@@ -0,0 +1,164 @@
+<html devsite="true">
+  <head>
+    <title>ListenSource</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>ListenSource</h1>
+    <p>
+      <pre>enum <a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a></pre>
+    </p>
+    <hr>
+    <p>Configures the source option of <code>addSnapshotListener()</code> calls on <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentReference.html">DocumentReference</a></code> and <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/Query.html">Query</a></code>. This controls how a listener retrieves data updates.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Enum Values</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#CACHE">CACHE</a></code></td>
+            <td>
+              <p>The listener retrieves data and listens to updates from the local Firestore cache only.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#DEFAULT">DEFAULT</a></code></td>
+            <td>
+              <p>The default behavior.</p>
+            </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 functions</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code>java-static <a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#valueOf(java.lang.String)">valueOf</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>!)</code></div>
+              <p>Returns the enum constant of this type with the specified name.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code>java-static <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html">Array</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!&gt;!</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#values()">values</a>()</code></div>
+              <p>Returns an array containing the constants of this enum type, in the order they're declared.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Enum Values</h2>
+      <div class="api-item">
+        <h3 class="api-name" id="CACHE">CACHE</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#CACHE">ListenSource.CACHE</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a></pre>
+        <p>The listener retrieves data and listens to updates from the local Firestore cache only. If the cache is empty, an empty snapshot will be returned. Snapshot events will be triggered on cache updates, like local mutations or load bundles. </p>
+        <p>Note that the data might be stale if the cache hasn't synchronized with recent server-side changes.</p>
+      </div>
+      <div class="api-item">
+        <h3 class="api-name" id="DEFAULT">DEFAULT</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#DEFAULT">ListenSource.DEFAULT</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a></pre>
+        <p>The default behavior. The listener attempts to return initial snapshot from cache and retrieve up-to-date snapshots from the Firestore server. Snapshot events will be triggered on local mutations and server side updates.</p>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public functions</h2>
+      <div class="api-item"><a name="valueOf-java.lang.String-"></a><a name="valueof"></a>
+        <h3 class="api-name" id="valueOf(java.lang.String)">valueOf</h3>
+        <pre class="api-signature no-pretty-print">java-static&nbsp;fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#valueOf(java.lang.String)">valueOf</a>(name:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>!):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!</pre>
+        <p>Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!</code></td>
+                <td>
+                  <p>the enum constant with the specified name</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Throws</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>java.lang.IllegalArgumentException:&nbsp;<a href="https://developer.android.com/reference/kotlin/java/lang/IllegalArgumentException.html">java.lang.IllegalArgumentException</a></code></td>
+                <td>
+                  <p>if this enum type has no constant with the specified name</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="values--"></a><a name="values"></a>
+        <h3 class="api-name" id="values()">values</h3>
+        <pre class="api-signature no-pretty-print">java-static&nbsp;fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html#values()">values</a>():&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html">Array</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!&gt;!</pre>
+        <p>Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html">Array</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!&gt;!</code></td>
+                <td>
+                  <p>an array containing the constants of this enum type, in the order they're declared</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/firestore/Query.html	2024-03-08 18:27:28.180924679 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/firestore/Query.html	2024-03-08 18:24:51.188916336 +0000
@@ -100,6 +100,13 @@
           <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
             <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/Query.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>!&gt;<br>)</code></div>
+              <p>Starts listening to this query with the given options.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+            <td>
               <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/Query.html#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;activity:&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;metadataChanges:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>!&gt;<br>)</code></div>
               <p>Starts listening to this query with the given options, using an Activity-scoped listener.</p>
             </td>
@@ -643,6 +650,59 @@
                 </td>
               </tr>
               <tr>
+                <td><code>listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>!&gt;</code></td>
+                <td>
+                  <p>The event listener that will be called with the snapshots.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></code></td>
+                <td>
+                  <p>A registration object that can be used to remove the listener.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions, com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)"></a><a name="addSnapshotListener-com.google.firebase.firestore.SnapshotListenOptions-com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;-"></a><a name="addsnapshotlistener"></a>
+        <h3 class="api-name" id="addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/Query.html#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener&lt;com.google.firebase.firestore.QuerySnapshot&gt;)">addSnapshotListener</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>!&gt;<br>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenerRegistration.html">ListenerRegistration</a></pre>
+        <p>Starts listening to this query with the given options.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>options:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+                <td>
+                  <p>Sets snapshot listener options, including whether metadata-only changes should trigger snapshot events, the source to listen to, the executor to use to call the listener, or the activity to scope the listener to.</p>
+                </td>
+              </tr>
+              <tr>
                 <td><code>listener:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/EventListener.html">EventListener</a>&lt;<a href="/docs/reference/kotlin/com/google/firebase/firestore/QuerySnapshot.html">QuerySnapshot</a>!&gt;</code></td>
                 <td>
                   <p>The event listener that will be called with the snapshots.</p>
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html	2024-03-08 18:24:51.192916336 +0000
@@ -0,0 +1,312 @@
+<html devsite="true">
+  <head>
+    <title>SnapshotListenOptions.Builder</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>SnapshotListenOptions.Builder</h1>
+    <p>
+      <pre>class <a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></pre>
+    </p>
+    <hr>
+    <p>Builder for constructing <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instances.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Public constructors</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#Builder()">Builder</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 functions</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#build()">build</a>()</code></div>
+              <p>Constructs a <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instance using the current settings in this Builder.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setActivity(android.app.Activity)">setActivity</a>(activity:&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>)</code></div>
+              <p>Associates an Activity with this snapshot listener's lifecycle.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setExecutor(java.util.concurrent.Executor)">setExecutor</a>(executor:&nbsp;<a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>)</code></div>
+              <p>Sets the executor to be used for snapshot listener callbacks.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setMetadataChanges(com.google.firebase.firestore.MetadataChanges)">setMetadataChanges</a>(metadataChanges:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>)</code></div>
+              <p>Sets whether metadata-only changes should trigger snapshot events.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setSource(com.google.firebase.firestore.ListenSource)">setSource</a>(source:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>)</code></div>
+              <p>Sets the preferred source for retrieving data in snapshot listeners.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public constructors</h2>
+      <div class="api-item"><a name="Builder--"></a><a name="builder"></a>
+        <h3 class="api-name" id="Builder()">Builder</h3>
+        <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#Builder()">Builder</a>()</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public functions</h2>
+      <div class="api-item"><a name="build--"></a><a name="build"></a>
+        <h3 class="api-name" id="build()">build</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#build()">build</a>():&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></pre>
+        <p>Constructs a <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instance using the current settings in this Builder.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+                <td>
+                  <p>The constructed SnapshotListenOptions instance.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setActivity-android.app.Activity-"></a><a name="setactivity"></a>
+        <h3 class="api-name" id="setActivity(android.app.Activity)">setActivity</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setActivity(android.app.Activity)">setActivity</a>(activity:&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></pre>
+        <p>Associates an Activity with this snapshot listener's lifecycle. If set, the listener will automatically stop when the Activity is destroyed.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>activity:&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a></code></td>
+                <td>
+                  <p>The Activity to associate with the listener.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setExecutor-java.util.concurrent.Executor-"></a><a name="setexecutor"></a>
+        <h3 class="api-name" id="setExecutor(java.util.concurrent.Executor)">setExecutor</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setExecutor(java.util.concurrent.Executor)">setExecutor</a>(executor:&nbsp;<a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></pre>
+        <p>Sets the executor to be used for snapshot listener callbacks.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>executor:&nbsp;<a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a></code></td>
+                <td>
+                  <p>The executor to be used.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setMetadataChanges-com.google.firebase.firestore.MetadataChanges-"></a><a name="setmetadatachanges"></a>
+        <h3 class="api-name" id="setMetadataChanges(com.google.firebase.firestore.MetadataChanges)">setMetadataChanges</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setMetadataChanges(com.google.firebase.firestore.MetadataChanges)">setMetadataChanges</a>(metadataChanges:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></pre>
+        <p>Sets whether metadata-only changes should trigger snapshot events.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>metadataChanges:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a></code></td>
+                <td>
+                  <p>The setting for metadata-only changes.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="api-item"><a name="setSource-com.google.firebase.firestore.ListenSource-"></a><a name="setsource"></a>
+        <h3 class="api-name" id="setSource(com.google.firebase.firestore.ListenSource)">setSource</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html#setSource(com.google.firebase.firestore.ListenSource)">setSource</a>(source:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>):&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></pre>
+        <p>Sets the preferred source for retrieving data in snapshot listeners.</p>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Parameters</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code>source:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+                <td>
+                  <p>The preferred source for data retrieval.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+        <div class="devsite-table-wrapper">
+          <table class="responsive">
+            <colgroup>
+              <col width="40%">
+              <col>
+            </colgroup>
+            <thead>
+              <tr>
+                <th colspan="100%">Returns</th>
+              </tr>
+            </thead>
+            <tbody class="list">
+              <tr>
+                <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+                <td>
+                  <p>This Builder instance to allow chaining of method calls.</p>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html	1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html	2024-03-08 18:24:51.188916336 +0000
@@ -0,0 +1,153 @@
+<html devsite="true">
+  <head>
+    <title>SnapshotListenOptions</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+  </head>
+  <body>
+    <div id="metadata-info-block"></div>
+    <h1>SnapshotListenOptions</h1>
+    <p>
+      <pre>class <a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></pre>
+    </p>
+    <hr>
+    <p>An options object that configures the behavior of <code>addSnapshotListener()</code> calls. Instances of this class control settings such as whether metadata-only changes trigger events, the preferred data source (server or cache), and the executor for listener callbacks.</p>
+    <h2>Summary</h2>
+    <div class="devsite-table-wrapper">
+      <table class="responsive">
+        <colgroup>
+          <col width="40%">
+          <col>
+        </colgroup>
+        <thead>
+          <tr>
+            <th colspan="100%"><h3>Nested types</h3></th>
+          </tr>
+        </thead>
+        <tbody class="list">
+          <tr>
+            <td>
+              <div><code>class <a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></div>
+              <p>Builder for constructing <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instances.</p>
+            </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 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/firestore/SnapshotListenOptions.html#equals(java.lang.Object)">equals</a>(o:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>!)</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#hashCode()">hashCode</a>()</code></div>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>!</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#toString()">toString</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://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>!</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#activity()">activity</a></code></div>
+              <p>The activity to scope the listener to.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>!</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#executor()">executor</a></code></div>
+              <p>The executor to use to call the listener.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>!</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#metadataChanges()">metadataChanges</a></code></div>
+              <p>Indicates whether metadata-only changes should trigger snapshot events.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!</code></td>
+            <td>
+              <div><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#source()">source</a></code></div>
+              <p>Indicates the source that we listen to.</p>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div class="list">
+      <h2>Public functions</h2>
+      <div class="api-item"><a name="equals-java.lang.Object-"></a><a name="equals"></a>
+        <h3 class="api-name" id="equals(java.lang.Object)">equals</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#equals(java.lang.Object)">equals</a>(o:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</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="hashCode--"></a><a name="hashcode"></a>
+        <h3 class="api-name" id="hashCode()">hashCode</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#hashCode()">hashCode</a>():&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></pre>
+      </div>
+      <div class="api-item"><a name="toString--"></a><a name="tostring"></a>
+        <h3 class="api-name" id="toString()">toString</h3>
+        <pre class="api-signature no-pretty-print">fun&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#toString()">toString</a>():&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>!</pre>
+      </div>
+    </div>
+    <div class="list">
+      <h2>Public properties</h2>
+      <div class="api-item"><a name="getActivity()"></a><a name="setActivity()"></a><a name="getActivity--"></a><a name="setActivity--"></a>
+        <h3 class="api-name" id="activity()">activity</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#activity()">activity</a>:&nbsp;<a href="https://developer.android.com/reference/kotlin/android/app/Activity.html">Activity</a>!</pre>
+        <p>The activity to scope the listener to.</p>
+      </div>
+      <div class="api-item"><a name="getExecutor()"></a><a name="setExecutor()"></a><a name="getExecutor--"></a><a name="setExecutor--"></a>
+        <h3 class="api-name" id="executor()">executor</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#executor()">executor</a>:&nbsp;<a href="https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html">Executor</a>!</pre>
+        <p>The executor to use to call the listener.</p>
+      </div>
+      <div class="api-item"><a name="getMetadataChanges()"></a><a name="setMetadataChanges()"></a><a name="getMetadataChanges--"></a><a name="setMetadataChanges--"></a>
+        <h3 class="api-name" id="metadataChanges()">metadataChanges</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#metadataChanges()">metadataChanges</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/MetadataChanges.html">MetadataChanges</a>!</pre>
+        <p>Indicates whether metadata-only changes should trigger snapshot events.</p>
+      </div>
+      <div class="api-item"><a name="getSource()"></a><a name="setSource()"></a><a name="getSource--"></a><a name="setSource--"></a>
+        <h3 class="api-name" id="source()">source</h3>
+        <pre class="api-signature no-pretty-print">val&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html#source()">source</a>:&nbsp;<a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a>!</pre>
+        <p>Indicates the source that we listen to.</p>
+      </div>
+    </div>
+  </body>
+</html>
+
--- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/firestore/package-summary.html	2024-03-08 18:27:28.180924679 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/firestore/package-summary.html	2024-03-08 18:24:51.188916336 +0000
@@ -261,6 +261,18 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code></td>
+            <td>
+              <p>An options object that configures the behavior of <code>addSnapshotListener()</code> calls.</p>
+            </td>
+          </tr>
+          <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.Builder.html">SnapshotListenOptions.Builder</a></code></td>
+            <td>
+              <p>Builder for constructing <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotListenOptions.html">SnapshotListenOptions</a></code> instances.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/SnapshotMetadata.html">SnapshotMetadata</a></code></td>
             <td>
               <p>Metadata about a snapshot, describing the state of the snapshot.</p>
@@ -390,6 +402,12 @@
             </td>
           </tr>
           <tr>
+            <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/ListenSource.html">ListenSource</a></code></td>
+            <td>
+              <p>Configures the source option of <code>addSnapshotListener()</code> calls on <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/DocumentReference.html">DocumentReference</a></code> and <code><a href="/docs/reference/kotlin/com/google/firebase/firestore/Query.html">Query</a></code>.</p>
+            </td>
+          </tr>
+          <tr>
             <td><code><a href="/docs/reference/kotlin/com/google/firebase/firestore/LoadBundleTaskProgress.TaskState.html">LoadBundleTaskProgress.TaskState</a></code></td>
             <td>
               <p>Represents the state of bundle loading tasks.</p>

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Feb 1, 2024

Coverage Report 1

Affected Products

  • firebase-firestore

    Overall coverage changed from 44.85% (df84f5f) to 44.81% (1256ec3) by -0.05%.

    FilenameBase (df84f5f)Merge (1256ec3)Diff
    DocumentReference.java13.24%12.50%-0.74%
    EventManager.java96.15%92.31%-3.85%
    ListenSource.java?100.00%?
    PatchMutation.java100.00%98.39%-1.61%
    Query.java4.27%4.15%-0.12%
    QueryListener.java100.00%98.68%-1.32%
    SnapshotListenOptions.java?0.00%?
    SyncEngine.java93.38%89.22%-4.15%

Test Logs

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

Copy link
Contributor

github-actions bot commented Feb 1, 2024

Unit Test Results

   180 files   -    110     180 suites   - 110   4m 23s ⏱️ - 1m 47s
1 228 tests  -    727  1 212 ✔️  -    725  16 💤  - 2  0 ±0 
2 480 runs   - 1 492  2 448 ✔️  - 1 488  32 💤  - 4  0 ±0 

Results for commit 668a4cb. ± Comparison against base commit d1fbda4.

♻️ This comment has been updated with latest results.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Feb 1, 2024

Size Report 1

Affected Products

  • firebase-firestore

    TypeBase (df84f5f)Merge (1256ec3)Diff
    aar1.41 MB1.41 MB+7.51 kB (+0.5%)
    apk (release)11.4 MB11.4 MB+6.56 kB (+0.1%)

Test Logs

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

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Feb 1, 2024

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-fst

    DeviceStatisticsDistributions
    oriole-32
    Percentiledf84f5f1256ec3DiffSignificant (?)
    p10339 ±68 μs516 ±250 μs+177 μs (+52.4%)NO
    p25384 ±172 μs533 ±251 μs+149 μs (+38.9%)NO
    p50410 ±183 μs572 ±246 μs+162 μs (+39.4%)NO
    p75462 ±194 μs645 ±230 μs+183 μs (+39.6%)NO
    p90589 ±205 μs807 ±264 μs+218 μs (+37.0%)NO

    20 test runs in comparison
    CommitTest Runs
    df84f5f
    • 2024-03-08_17:20:42.140710_LIJA
    • 2024-03-08_17:20:42.140748_GasV
    • 2024-03-08_17:20:42.140758_SAtV
    • 2024-03-08_17:20:42.140767_CIwf
    • 2024-03-08_17:20:42.140776_QuER
    • 2024-03-08_17:20:42.140790_Efjz
    • 2024-03-08_17:20:42.140798_CYBF
    • 2024-03-08_17:20:42.140803_sibu
    • 2024-03-08_17:20:42.140807_BboG
    • 2024-03-08_17:20:42.140812_wqqs
    1256ec3
    • 2024-03-08_18:32:27.212815_rxYk
    • 2024-03-08_18:32:27.212845_fwvv
    • 2024-03-08_18:32:27.212857_JoSr
    • 2024-03-08_18:32:27.212866_UsjA
    • 2024-03-08_18:32:27.212873_tjmU
    • 2024-03-08_18:32:27.212885_xkRY
    • 2024-03-08_18:32:27.212892_llsm
    • 2024-03-08_18:32:27.212899_gDZU
    • 2024-03-08_18:32:27.212906_XQzU
    • 2024-03-08_18:32:27.212913_JhHa
    redfin-30
    Percentiledf84f5f1256ec3DiffSignificant (?)
    p10706 ±220 μs762 ±257 μs+56.0 μs (+7.9%)NO
    p25726 ±221 μs781 ±256 μs+55.5 μs (+7.6%)NO
    p50756 ±219 μs809 ±255 μs+52.3 μs (+6.9%)NO
    p75793 ±218 μs852 ±249 μs+58.4 μs (+7.4%)NO
    p90838 ±220 μs908 ±252 μs+70.1 μs (+8.4%)NO

    20 test runs in comparison
    CommitTest Runs
    df84f5f
    • 2024-03-08_17:20:42.140710_LIJA
    • 2024-03-08_17:20:42.140748_GasV
    • 2024-03-08_17:20:42.140758_SAtV
    • 2024-03-08_17:20:42.140767_CIwf
    • 2024-03-08_17:20:42.140776_QuER
    • 2024-03-08_17:20:42.140790_Efjz
    • 2024-03-08_17:20:42.140798_CYBF
    • 2024-03-08_17:20:42.140803_sibu
    • 2024-03-08_17:20:42.140807_BboG
    • 2024-03-08_17:20:42.140812_wqqs
    1256ec3
    • 2024-03-08_18:32:27.212815_rxYk
    • 2024-03-08_18:32:27.212845_fwvv
    • 2024-03-08_18:32:27.212857_JoSr
    • 2024-03-08_18:32:27.212866_UsjA
    • 2024-03-08_18:32:27.212873_tjmU
    • 2024-03-08_18:32:27.212885_xkRY
    • 2024-03-08_18:32:27.212892_llsm
    • 2024-03-08_18:32:27.212899_gDZU
    • 2024-03-08_18:32:27.212906_XQzU
    • 2024-03-08_18:32:27.212913_JhHa
  • timeToInitialDisplay

    DeviceStatisticsDistributions
    oriole-32
    Percentiledf84f5f1256ec3DiffSignificant (?)
    p10206 ±5 ms209 ±3 ms+3.03 ms (+1.5%)NO
    p25211 ±6 ms216 ±3 ms+4.30 ms (+2.0%)NO
    p50219 ±6 ms223 ±4 ms+4.48 ms (+2.0%)NO
    p75227 ±7 ms233 ±5 ms+5.63 ms (+2.5%)NO
    p90236 ±6 ms250 ±9.7 ms+13.9 ms (+5.9%)NO

    20 test runs in comparison
    CommitTest Runs
    df84f5f
    • 2024-03-08_17:20:42.140710_LIJA
    • 2024-03-08_17:20:42.140748_GasV
    • 2024-03-08_17:20:42.140758_SAtV
    • 2024-03-08_17:20:42.140767_CIwf
    • 2024-03-08_17:20:42.140776_QuER
    • 2024-03-08_17:20:42.140790_Efjz
    • 2024-03-08_17:20:42.140798_CYBF
    • 2024-03-08_17:20:42.140803_sibu
    • 2024-03-08_17:20:42.140807_BboG
    • 2024-03-08_17:20:42.140812_wqqs
    1256ec3
    • 2024-03-08_18:32:27.212815_rxYk
    • 2024-03-08_18:32:27.212845_fwvv
    • 2024-03-08_18:32:27.212857_JoSr
    • 2024-03-08_18:32:27.212866_UsjA
    • 2024-03-08_18:32:27.212873_tjmU
    • 2024-03-08_18:32:27.212885_xkRY
    • 2024-03-08_18:32:27.212892_llsm
    • 2024-03-08_18:32:27.212899_gDZU
    • 2024-03-08_18:32:27.212906_XQzU
    • 2024-03-08_18:32:27.212913_JhHa
    redfin-30
    Percentiledf84f5f1256ec3DiffSignificant (?)
    p10248 ±3 ms275 ±4 ms+27.3 ms (+11.0%)YES
    p25254 ±3 ms282 ±4 ms+28.0 ms (+11.1%)YES
    p50261 ±4 ms289 ±5 ms+28.4 ms (+10.9%)YES
    p75270 ±6 ms302 ±4 ms+32.3 ms (+12.0%)YES
    p90278 ±7 ms322 ±8 ms+43.6 ms (+15.7%)YES

    20 test runs in comparison
    CommitTest Runs
    df84f5f
    • 2024-03-08_17:20:42.140710_LIJA
    • 2024-03-08_17:20:42.140748_GasV
    • 2024-03-08_17:20:42.140758_SAtV
    • 2024-03-08_17:20:42.140767_CIwf
    • 2024-03-08_17:20:42.140776_QuER
    • 2024-03-08_17:20:42.140790_Efjz
    • 2024-03-08_17:20:42.140798_CYBF
    • 2024-03-08_17:20:42.140803_sibu
    • 2024-03-08_17:20:42.140807_BboG
    • 2024-03-08_17:20:42.140812_wqqs
    1256ec3
    • 2024-03-08_18:32:27.212815_rxYk
    • 2024-03-08_18:32:27.212845_fwvv
    • 2024-03-08_18:32:27.212857_JoSr
    • 2024-03-08_18:32:27.212866_UsjA
    • 2024-03-08_18:32:27.212873_tjmU
    • 2024-03-08_18:32:27.212885_xkRY
    • 2024-03-08_18:32:27.212892_llsm
    • 2024-03-08_18:32:27.212899_gDZU
    • 2024-03-08_18:32:27.212906_XQzU
    • 2024-03-08_18:32:27.212913_JhHa

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

@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject firebase-firestore:
error: Added method com.google.firebase.firestore.DocumentReference.addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.DocumentSnapshot>) [AddedMethod]
error: Added class com.google.firebase.firestore.ListenSource [AddedClass]
error: Added method com.google.firebase.firestore.Query.addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>) [AddedMethod]
error: Added class com.google.firebase.firestore.SnapshotListenOptions [AddedClass]

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 firebase-firestore:
error: Added method com.google.firebase.firestore.DocumentReference.addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.DocumentSnapshot>) [AddedMethod]
error: Added class com.google.firebase.firestore.ListenSource [AddedClass]
error: Added method com.google.firebase.firestore.Query.addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>) [AddedMethod]
error: Added class com.google.firebase.firestore.SnapshotListenOptions [AddedClass]

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.

@milaGGL milaGGL changed the title Snapshot listener from cache Snapshot listener source from cache Feb 5, 2024
@milaGGL milaGGL self-assigned this Feb 5, 2024
@google-oss-bot
Copy link
Contributor

The public api surface has changed for the subproject firebase-firestore:
error: Method com.google.firebase.firestore.SnapshotListenOptions.getActivity has added 'final' qualifier [AddedFinal]
error: Method com.google.firebase.firestore.SnapshotListenOptions.getExecutor has added 'final' qualifier [AddedFinal]
error: Method com.google.firebase.firestore.SnapshotListenOptions.getMetadataChanges has added 'final' qualifier [AddedFinal]
error: Method com.google.firebase.firestore.SnapshotListenOptions.getSource has added 'final' qualifier [AddedFinal]
error: Attempted to remove @nonnull annotation from method com.google.firebase.firestore.SnapshotListenOptions.Builder.setActivity(android.app.Activity) [InvalidNullConversion]

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 firebase-firestore:
error: Attempted to change parameter from @nullable to @nonnull: incompatible change for parameter arg1 in com.google.firebase.firestore.SnapshotListenOptions.Builder.setActivity(android.app.Activity arg1) [InvalidNullConversion]

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 firebase-firestore:
error: Attempted to change parameter from @nullable to @nonnull: incompatible change for parameter arg1 in com.google.firebase.firestore.SnapshotListenOptions.Builder.setActivity(android.app.Activity arg1) [InvalidNullConversion]

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
Contributor

@tom-andersen tom-andersen left a comment

Choose a reason for hiding this comment

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

LGTM! Thank you for your hard work.

@milaGGL milaGGL merged commit b77c218 into master Mar 11, 2024
23 of 25 checks passed
@milaGGL milaGGL deleted the mila/snapshot-listener-from-cache branch March 11, 2024 18:52
@firebase firebase locked and limited conversation to collaborators Apr 11, 2024
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.

None yet

5 participants