Thanks for the feedback! To address the concerns about devices with lower amounts of disk, an updated proposal is to report a lower quota value for such clients.
Options: 1. [Recommended] Base the value returned on disk space in both non-incognito and incognito. The formula would be `usage + min(10 GiB, ceil(disk_space))` in both modes. The ceiling is used to bucket the reported values into 1 GiB buckets to reduce the amount of information exposed about the device. - Advantages - All the same advantages as the original change: mitigates the fingerprinting vector, makes detecting incognito mode less straightforward - Disadvantages - Reveals which disk space bucket incognito users fall into, even though disk space isn’t actually relevant to how much quota they have. - This avoids returning a quota value >10GiB for clients with less than 10GiB of total disk space. However, the reported quota value will be higher than the actual quota since per-site quota is a percentage of disk space. 2. Base the value returned on disk space in both non-incognito and incognito by using the non-incognito quota value for both. The formula would be `usage + min(10 GiB, ceil(disk_space * kTemporaryPoolSizeRatio * kPerStorageKeyTemporaryRatio))` in both modes. Again, the ceiling is used to reduce the amount of information exposed. - Advantages - Same as option #1 - Disadvantages - Reveals which disk space bucket incognito users fall into, even though disk space isn’t actually relevant to how much quota they have. - More complicated code/logic to follow than option #1. Alternatives considered: 1. Base the value returned on quota. In practice this will mean it’s based on disk for non-incognito and on RAM for incognito. - Rejected because incognito will still be easily differentiated from non-incognito. Reported quota will continue to be much lower for incognito mode than non-incognito mode. 2. Return a static number less than 10GiB for all clients. - Rejected because unless the number is very low, the percentage of users with disk size less than this will still be higher than we'd like. 3. Always base the quota estimate returned off of RAM (essentially pretend the user is always in incognito mode). - Reported quota value will be much smaller than actual quota for non-incognito mode. Please let me know if the new proposal looks good to you, thanks! -Reema On Friday, February 28, 2025 at 5:30:26 PM UTC-5 Mike Taylor wrote: > Hey Reema, > > Very sorry that you've been on hold here. > > Thank you for doing some manual investigation, but I'm still a bit worried > about the compat implications. 4 out of 9 sites not handling > QuotaExceededError could be bad luck, or could be a sign of trouble down > the road. > > I'm also worried about knee-capping the API, if it will be possible to > return estimates that over-promise what's available (the case where a > device or WebView instance has < 10GiB available, but the API tells the > application that it has more). I don't have approval to share the disk size > metrics for Clank and WebView, but it's high enough that we should re-think > the approach, or try to run an experiment. > > Maybe we can meet to discuss next steps, and come up with a plan together? > > later, > Mike > > > On 2/28/25 10:41 AM, Reema A wrote: > > 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/fe61bc9c-07aa-4e7b-9577-8ae77b80f804n%40chromium.org.