Any updates on this? On Monday, February 10, 2025 at 10:40:02 AM UTC-5 Reema A wrote:
> Yes, I tested with the feature on and didn't see any issues as mentioned. > I also tested with the feature off and didn't see any differences in > behavior. But again, as I said, I'm not able to ensure I'm using up all of > the quota. > > On Monday, February 10, 2025 at 10:02:16 AM UTC-5 Mike Taylor wrote: > >> Did you happen to test the sites w/ the feature on and off, per Yoav's >> suggestion? >> On 2/7/25 10:11 AM, Reema A wrote: >> >> Any more info I can provide? >> >> On Wednesday, January 22, 2025 at 11:42:20 AM UTC-5 Reema A wrote: >> >>> Sure, I enabled the flag in Chrome Beta and navigated around each of the >>> examples. I didn't notice any issues. However, since as I mentioned I'm not >>> sure how they're using the API, I can't ensure I'm using up quota. >>> On Wednesday, January 22, 2025 at 9:47:24 AM UTC-5 Yoav Weiss wrote: >>> >>>> On Tue, Jan 21, 2025 at 8:08 PM Reema A <ree...@chromium.org> wrote: >>>> >>>>> Sorry for the delayed response! >>>>> >>>>> > One more question: what are the actual Quota limits for storage on >>>>> mobile (including low-end devices), and WebView? Are any of them lower >>>>> than >>>>> 10GiB? >>>>> Quota is 60% of total disk space per origin. For UMA-enabled Chrome >>>>> installations on Android, ~3% of weekly active clients have less than >>>>> 16.67GB of total storage and thus less than 10GB of quota. >>>>> For WebView, we can't get per-device quota numbers; we can only get >>>>> data about the number of UMA records, which means some devices will be >>>>> counted multiple times. With that caveat, <4% of UMA records come from >>>>> devices with less than 10GB of quota. The fraction of low quota devices >>>>> may >>>>> be similar to the fraction of records, but this cannot be verified. >>>>> >>>>> > I'd like to better understand the risk to sites who are not using >>>>> this for incognito detection. Could you do a random sampling of say, 10 >>>>> non-FP usages of quota estimation and see if they are in fact handling >>>>> QuotaExceededErrors? >>>>> I looked at a few examples. >>>>> >>>>> Methodology: >>>>> - I searched in the Sources tab in Developer Tools for scripts using >>>>> estimate() and checked if the same script had references to >>>>> QuotaExceededErrors. >>>>> - I skipped scripts that seemed to just be logging the quota estimate >>>>> to the console. >>>>> - I skipped scripts that seemed to be fingerprinting, which was the >>>>> majority of examples. >>>>> >>>>> Major caveat: It’s very hard to tell what these sites are doing due to >>>>> code minification, obfuscation, the lack of context, etc. >>>>> >>>>> I found 9 examples I looked at that were not obviously fingerprinting, >>>>> although I couldn’t always tell what they were using the API for. Of >>>>> these, >>>>> I saw references to QuotaExceededErrors in 5 instances. >>>>> >>>> >>>> Is it possible to test these instances out with the flag for this >>>> feature, to see if they are likely to break or not? >>>> >>>> >>>>> >>>>> On Thursday, December 19, 2024 at 2:54:55 PM UTC-5 Reema A wrote: >>>>> >>>>>> > I'd like to better understand the risk to sites who are not using >>>>>> this for incognito detection. Could you do a random sampling of say, 10 >>>>>> non-FP usages of quota estimation and see if they are in fact handling >>>>>> QuotaExceededErrors? >>>>>> >>>>>> Still working on sampling some sites to provide this analysis, will >>>>>> get back to you ASAP. So far the only one I’ve found that doesn’t have >>>>>> minified JS and have been trivially able to Ctrl+F for relevant strings >>>>>> does seem to be handling the error. >>>>>> >>>>>> > One more question: what are the actual Quota limits for storage on >>>>>> mobile (including low-end devices), and WebView? Are any of them lower >>>>>> than >>>>>> 10GiB? >>>>>> >>>>>> There is some data on this available internally here >>>>>> <https://uma.googleplex.com/p/chrome/timeline_v2?sid=9ee25b5a495da6245b706c020008ea0e>. >>>>>> >>>>>> I’ll see if I can follow up with more specifics. >>>>>> >>>>>> > Probably a silly question, but why is the storage made available in >>>>>> incognito inherently smaller than regular mode? Couldn't we increase the >>>>>> incognito quotas, while still keeping them ephemeral? >>>>>> >>>>>> Incognito uses in-memory storage only to avoid data leaks to >>>>>> persistent storage. In theory this could be changed and it would fix the >>>>>> underlying problem but doing so would be a much, much larger effort (for >>>>>> example, here’s >>>>>> <https://docs.google.com/document/d/1RzkoiCx_ZgffCPo5iWXDC9mzywCG95gNjyanmqt0bs4/edit?tab=t.0#heading=h.7nki9mck5t64> >>>>>> >>>>>> a prior proposal). I don’t think there’s a way to increase incognito >>>>>> quota >>>>>> to be significantly closer to non-incognito quota while still using >>>>>> in-memory storage. >>>>>> >>>>>> > Would that cause issues for sites where `quota`-`usage` < 10GB ? >>>>>> Would developers run a risk of thinking they are safe to save more data >>>>>> when in fact they are out of quota? (I guess I'm not familiar with how >>>>>> developers use `estimate()` today and how confident they are that the >>>>>> estimate is accurate) >>>>>> >>>>>> Yes, it’s possible, but as mentioned in my reply above sites should >>>>>> already be handling QuotaExceededErrors since the estimate can already >>>>>> be >>>>>> quite different than the actual quota (more data about this to come as >>>>>> per >>>>>> Mike’s request). >>>>>> >>>>>> On Wednesday, December 18, 2024 at 11:40:15 AM UTC-5 Yoav Weiss wrote: >>>>>> >>>>>>> On Wed, Dec 18, 2024 at 5:32 PM Mike Taylor <miketa...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> We discussed this in our OWNERs meeting, and agreed this should be >>>>>>>> an I2S that requires 3LGTMs to ship. But, we can just use this thread >>>>>>>> - no >>>>>>>> need to send more mail. Some other folks have other questions, but >>>>>>>> I'll let >>>>>>>> them send them independently. >>>>>>>> On 12/13/24 12:57 PM, Mike Taylor wrote: >>>>>>>> >>>>>>>> Thanks Reema - these are helpful answers. And it seems you're most >>>>>>>> of the way to an I2S here - I think "PSA" was probably the incorrect >>>>>>>> category. >>>>>>>> >>>>>>>> > We have manually looked at how sites seem to be using >>>>>>>> navigator.storage.estimate() and most of the cases we’ve seen seem to >>>>>>>> be >>>>>>>> using it for incognito detection. >>>>>>>> >>>>>>>> I'd like to better understand the risk to sites who are not using >>>>>>>> this for incognito detection. Could you do a random sampling of say, >>>>>>>> 10 >>>>>>>> non-FP usages of quota estimation and see if they are in fact handling >>>>>>>> QuotaExceededErrors? >>>>>>>> >>>>>>>> One more question: what are the actual Quota limits for storage on >>>>>>>> mobile (including low-end devices), and WebView? Are any of them lower >>>>>>>> than >>>>>>>> 10GiB? >>>>>>>> On 12/12/24 1:41 PM, Reema A wrote: >>>>>>>> >>>>>>>> Thanks for the feedback. Wrote out some more details and answers to >>>>>>>> questions that have been asked below: >>>>>>>> >>>>>>>> *Problem:* >>>>>>>> It is trivially easy to detect if a user is in incognito mode >>>>>>>> through the Storage Manager’s estimate API because the amount of >>>>>>>> storage >>>>>>>> made available in incognito mode is significantly smaller than in >>>>>>>> regular >>>>>>>> mode. We have found some libraries that seem to be taking advantage of >>>>>>>> this >>>>>>>> fact and using navigator.storage.estimate() to detect if a user is in >>>>>>>> incognito mode. >>>>>>>> >>>>>>>> >>>>>>> Probably a silly question, but why is the storage made available in >>>>>>> incognito inherently smaller than regular mode? >>>>>>> Couldn't we increase the incognito quotas, while still keeping them >>>>>>> ephemeral? >>>>>>> >>>>>>>> >>>>>>>> *Goals:* >>>>>>>> Mitigate detecting incognito mode through >>>>>>>> navigator.storage.estimate() and navigator.storageBuckets.estimate() >>>>>>>> Reduce fingerprinting value of the estimate() API >>>>>>>> Allow estimate() to still be functional for sites with unlimited >>>>>>>> storage permissions >>>>>>>> Leave quota enforcement unaffected >>>>>>>> Minimize potential site breakages >>>>>>>> >>>>>>>> *Non-goals:* >>>>>>>> Mitigating all possible methods of incognito mode detection >>>>>>>> Mitigating detecting incognito mode through quota exhausted errors >>>>>>>> >>>>>>>> *Relevant spec:* >>>>>>>> The storage spec <https://storage.spec.whatwg.org/#usage-and-quota> >>>>>>>> defines quota as follows: “The storage quota of a storage shelf is an >>>>>>>> implementation-defined conservative estimate of the total amount of >>>>>>>> bytes >>>>>>>> it can hold. This amount should be less than the total storage space >>>>>>>> on the >>>>>>>> device. It must not be a function of the available storage space on >>>>>>>> the >>>>>>>> device.” >>>>>>>> >>>>>>>> *Current state:* >>>>>>>> The value returned by estimate() is already just an estimate and in >>>>>>>> some cases the actual amount of space available to use may be >>>>>>>> different. >>>>>>>> >>>>>>>> *Proposed change:* >>>>>>>> Return an artificial quota equal to usage + 10 GiB in the Storage >>>>>>>> Manager and Storage Bucket APIs estimate() method in both incognito >>>>>>>> mode >>>>>>>> and regular mode. However, continue to return the old value returned >>>>>>>> if the >>>>>>>> site has unlimited storage permission. Additionally, enforced quota >>>>>>>> will be >>>>>>>> unaffected. >>>>>>>> >>>>>>>> Would that cause issues for sites where `quota`-`usage` < 10GB ? >>>>>>> Would developers run a risk of thinking they are safe to save more >>>>>>> data when in fact they are out of quota? (I guess I'm not familiar with >>>>>>> how >>>>>>> developers use `estimate()` today and how confident they are that the >>>>>>> estimate is accurate) >>>>>>> >>>>>>>> >>>>>>>> *Details:* >>>>>>>> navigator.storage.estimate().quota returns usage + 10 GiB. For >>>>>>>> storage buckets, StorageBucket.estimate().quota will return either the >>>>>>>> requested quota set when opening the bucket or usage + 10 GiB if the >>>>>>>> default quota is being used. >>>>>>>> >>>>>>>> *FAQ:* >>>>>>>> Q: What about sites that rely on the quota value returned? >>>>>>>> As mentioned in the spec, the quota is only an estimate and sites >>>>>>>> should already be handling QuotaExceededErrors. >>>>>>>> >>>>>>>> Q: Why not just return some error indicator? >>>>>>>> A: This is more likely to unexpectedly break sites. >>>>>>>> >>>>>>>> Q: Why return the same value in incognito and non-incognito? >>>>>>>> A: To ensure that they’re indistinguishable. >>>>>>>> >>>>>>>> Q: Why 10 GiB? >>>>>>>> This number was proposed because it is likely to be sufficiently >>>>>>>> high enough that sites are unlikely to change their behavior based on >>>>>>>> the >>>>>>>> quota estimate being too low for their use case. It is also similar to >>>>>>>> the >>>>>>>> Firefox implementation. >>>>>>>> >>>>>>>> Q: Why not a random value? >>>>>>>> This could result in a unique ID that could be used for >>>>>>>> fingerprinting. >>>>>>>> >>>>>>>> Q: Why (usage + 10 GiB) and not just 10 GiB? >>>>>>>> A: To ensure that usage is always less than the quota estimate to >>>>>>>> avoid a counterintuitive behavior that might break a site. >>>>>>>> >>>>>>>> Q: What do other browsers do? >>>>>>>> Firefox: In best-effort mode, Firefox returns the minimum of 10GiB >>>>>>>> or 10% of the total disk size. If the origin has been granted >>>>>>>> persistent >>>>>>>> storage, then it returns the min of 8 TiB or 50% of the total disk >>>>>>>> size. [source >>>>>>>> 1 >>>>>>>> <https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria>, >>>>>>>> >>>>>>>> source 2 >>>>>>>> <https://searchfox.org/mozilla-central/source/dom/quota/ActorsParent.cpp#6828> >>>>>>>> ] >>>>>>>> Safari: The docs >>>>>>>> <https://www.webkit.org/blog/14403/updates-to-storage-policy/> say >>>>>>>> “Note that the quota is an upper limit of how much can be stored — >>>>>>>> there is >>>>>>>> no guarantee that a site can store that much, so error handling for >>>>>>>> QuotaExceededError is necessary. Also, to reduce fingerprinting risk >>>>>>>> introduced by exposing usage and quota, quota might change based on >>>>>>>> factors >>>>>>>> like existing usage and site visit frequency.” >>>>>>>> >>>>>>>> Q: Have you looked at different use cases and how they might be >>>>>>>> impacted? >>>>>>>> We have manually looked at how sites seem to be using >>>>>>>> navigator.storage.estimate() and most of the cases we’ve seen seem to >>>>>>>> be >>>>>>>> using it for incognito detection. >>>>>>>> >>>>>>>> Q: Do we have test coverage? >>>>>>>> Yes, we have unit tests, browser tests, and web platform tests. CLs >>>>>>>> <https://chromium-review.googlesource.com/q/a:reemaa+quota> >>>>>>>> >>>>>>>> Q: What if sites break? >>>>>>>> Developers can disable this change via >>>>>>>> chrome://flags/#predictable-reported-quota to validate if this is >>>>>>>> the cause of the breakage. We can also flip the flag off via Finch if >>>>>>>> needed. >>>>>>>> >>>>>>>> *Notes:* >>>>>>>> This is based on an investigation and solution proposed by >>>>>>>> t...@chromium.org. >>>>>>>> >>>>>>>> Thanks! >>>>>>>> Reema >>>>>>>> >>>>>>>> On Monday, December 9, 2024 at 6:18:21 AM UTC-5 Mike Taylor wrote: >>>>>>>> >>>>>>>>> On 12/6/24 5:48 AM, Chromestatus wrote: >>>>>>>>> >>>>>>>>> Contact emails ree...@chromium.org >>>>>>>>> >>>>>>>>> Specification None >>>>>>>>> >>>>>>>>> Summary >>>>>>>>> >>>>>>>>> Report a predictable storage quota from StorageManager's estimate >>>>>>>>> API for sites that do not have unlimited storage permissions. It is >>>>>>>>> possible to detect a user's browsing mode via the reported storage >>>>>>>>> quota >>>>>>>>> because the storage space made available is significantly smaller in >>>>>>>>> incognito mode than in regular mode. This is a mitigation that >>>>>>>>> prevents >>>>>>>>> detection of a user's browsing mode via the storage API by reporting >>>>>>>>> an >>>>>>>>> artificial quota, equal to usage + 10 Gib, in all browsing modes for >>>>>>>>> sites >>>>>>>>> with limited storage permissions. Sites with unlimited storage >>>>>>>>> permissions >>>>>>>>> will be unaffected. Enforced quota will also be unaffected. >>>>>>>>> >>>>>>>>> A small explainer (or more details) would be useful here, it's not >>>>>>>>> immediately obvious what changes you're proposing to make. Are we >>>>>>>>> making >>>>>>>>> this change only to incognito mode, or to regular mode as well? Do we >>>>>>>>> need >>>>>>>>> to update a spec somewhere, or is this already allowed (pointer to >>>>>>>>> the >>>>>>>>> relevant spec would be useful)? >>>>>>>>> >>>>>>>>> Blink component Blink>Storage>Quota >>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EStorage%3EQuota> >>>>>>>>> >>>>>>>>> >>>>>>>>> TAG review None >>>>>>>>> >>>>>>>>> TAG review status Not applicable >>>>>>>>> >>>>>>>>> Risks >>>>>>>>> >>>>>>>>> >>>>>>>>> Interoperability and Compatibility >>>>>>>>> >>>>>>>>> Could you flesh out interop and compat risks here please, i.e. >>>>>>>>> What do other browsers do? What do we expect to break (or not) as a >>>>>>>>> result? >>>>>>>>> You mention Incognito mode detection (I'm making an educated guess >>>>>>>>> that >>>>>>>>> "user's browsing mode" refers to) - have you looked at different use >>>>>>>>> cases >>>>>>>>> and how they might be impacted? Do we have test coverage? >>>>>>>>> >>>>>>>>> None >>>>>>>>> >>>>>>>>> >>>>>>>>> *Gecko*: No signal >>>>>>>>> >>>>>>>>> *WebKit*: No signal >>>>>>>>> >>>>>>>>> *Web developers*: No signals >>>>>>>>> >>>>>>>>> *Other signals*: >>>>>>>>> >>>>>>>>> WebView application risks >>>>>>>>> >>>>>>>>> Does this intent deprecate or change behavior of existing APIs, >>>>>>>>> such that it has potentially high risk for Android WebView-based >>>>>>>>> applications? >>>>>>>>> >>>>>>>>> None >>>>>>>>> >>>>>>>>> >>>>>>>>> Debuggability >>>>>>>>> >>>>>>>>> None >>>>>>>>> >>>>>>>>> >>>>>>>>> Will this feature be supported on all six Blink platforms >>>>>>>>> (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)? No >>>>>>>>> >>>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>>> ? No >>>>>>>>> >>>>>>>>> Flag name on about://flags predictable-reported-quota >>>>>>>>> >>>>>>>>> Finch feature name StaticStorageQuota >>>>>>>>> >>>>>>>>> Requires code in //chrome? False >>>>>>>>> >>>>>>>>> Tracking bug https://issues.chromium.org/issues/369865059 >>>>>>>>> >>>>>>>>> Estimated milestones >>>>>>>>> Shipping on desktop 133 >>>>>>>>> Shipping on Android 133 >>>>>>>>> Shipping on WebView 133 >>>>>>>>> >>>>>>>>> Anticipated spec changes >>>>>>>>> >>>>>>>>> Open questions about a feature may be a source of future web >>>>>>>>> compat or interop issues. Please list open issues (e.g. links to >>>>>>>>> known >>>>>>>>> github issues in the project for the feature specification) whose >>>>>>>>> resolution may introduce web compat/interop risk (e.g., changing to >>>>>>>>> naming >>>>>>>>> or structure of the API in a non-backward-compatible way). >>>>>>>>> None >>>>>>>>> >>>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>>> https://chromestatus.com/feature/4977371751645184?gate=4955779474653184 >>>>>>>>> >>>>>>>>> >>>>>>>>> This intent message was generated by Chrome Platform Status >>>>>>>>> <https://chromestatus.com>. >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "blink-dev" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to blink-dev+unsubscr...@chromium.org. >>>>>>>>> To view this discussion visit >>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/675211ae.050a0220.55f02.00d8.GAE%40google.com >>>>>>>>> >>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/675211ae.050a0220.55f02.00d8.GAE%40google.com?utm_medium=email&utm_source=footer> >>>>>>>>> . >>>>>>>>> >>>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "blink-dev" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to blink-dev+unsubscr...@chromium.org. >>>>>>>> >>>>>>> To view this discussion visit >>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/866e1227-d7b2-4a7c-bb9e-026cdfc376f7%40chromium.org >>>>>>>> >>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/866e1227-d7b2-4a7c-bb9e-026cdfc376f7%40chromium.org?utm_medium=email&utm_source=footer> >>>>>>>> . >>>>>>>> >>>>>>> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7bfb3254-a1af-44a9-af64-b83fad33e5cbn%40chromium.org.