LGTM1

On Tue, Sep 26, 2023 at 9:42 PM David Adrian <dadr...@google.com> wrote:

> To make it easier for people who are not following the IETF to understand
> the impact on browsers and Chrome, I have provided a brief explainer:
> https://github.com/dadrian/ech-chrome
>

Thanks for the explainer. A brief paragraph RE the flow could also be
useful. I'll try to PR something shortly.


> On Wed, Sep 20, 2023 at 1:48 PM David Adrian <dadr...@google.com> wrote:
>
>> I'll note that Chrome does not require that the HTTPS RR be resolved over
>> DoH to use ECH, under the argument that some ECH is still better than no
>> ECH. Firefox only uses ECH when they are able to query HTTPS RR records
>> over encrypted DNS.
>>
>> On Wed, Sep 20, 2023 at 12:54 PM David Benjamin <david...@chromium.org>
>> wrote:
>>
>>> I think this discussion is conflating two different things:
>>>
>>> 1. Whether some content (sections 1 and 3 of the spec) was extracted
>>> into an explainer.
>>> 2. Particular questions about the spec that Blink API owners wanted
>>> answers for.
>>>
>>> With the expectation that, had there been something under an explainer,
>>> the questions in (2) would have been automatically answered. But if we
>>> wrote an explainer, it would simply have contained sections 1 and 3. As
>>> this is a TLS and networking feature, everything is naturally all written
>>> from that context, including explainers. The norms and audiences are very
>>> different from, say, a JavaScript API. In the same way that a web platform
>>> explainer doesn't explain what origins, frames, documents, windows, and the
>>> DOM are, yet folks in the TLS community won't necessarily know how webpages
>>> are organized. (I can't tell you how many times I've had to explain the
>>> implications of subresources in a browser to TLSWG folks!)
>>>
>>> That's not to say non-TLS folks can't look at this... we're certainly
>>> interested in feedback from you all! But I'd suggest that, if something is
>>> unclear to you all, keep in mind the different context and not assume it's
>>> just due to the specification formats. Instead, just ask us! To sort out
>>> the formalities, I've updated chromestatus.com to just link to sections
>>> 1 and 3 of the spec under explainer, but that doesn't do anything to change
>>> this fundamental difference in context.
>>>
>>> To your example question, ECH is orthogonal[*] to DNS over HTTPS. Since
>>> it's orthogonal, I don't think we'd have covered that in the explainer
>>> anyway. Rather your question is about how DoH works, independently of ECH.
>>> (Even without ECH, HTTPS still depends on DNS!) But I can still answer:
>>>
>>> When you visit example.com, you query A, AAAA, and HTTPS-RR records for
>>> example.com from your DNS resolver. (Confusingly, the DNS records are
>>> also called "HTTPS". I've taken to writing "HTTPS-RR" to disambiguate.) The
>>> ECH keys are in HTTPS-RR. Note HTTPS-RR is not specific to ECH and already
>>> launched. ECH is just using one more piece of service information from
>>> there. If we get any keys, we pass them to TLS, just as the A/AAAA
>>> information is passed to TCP setup.
>>>
>>> If your DNS resolver happens to be DNS over HTTPS, those queries may
>>> themselves require setting up a *different* HTTPS connection, to
>>> *different* origin. If the DoH origin is specified by IP address,
>>> there's no DNS lookup, including no HTTPS-RR lookup and we just don't do
>>> ECH for that connection. (DoH or non-DoH, ECH, deployed with keys from DNS,
>>> only works for DNS-based origins and not IP-based origins. But there is
>>> also less to protect for an IP-based origin.) If the DoH origin is
>>> specified by a DNS name, we indeed need a DNS lookup. That is not new with
>>> ECH... before ECH, we needed to look up A and AAAA anyway. If that DNS
>>> lookup went through DNS over HTTPS, that would indeed be a circular
>>> dependency, but nothing to do with ECH. Just DoH. As that's unrelated to
>>> this launch, I don't know the exact details, but I believe we just use the
>>> system, non-DoH resolver to look up information for the DoH server. If we
>>> get ECH keys as part of that, we'll use them, otherwise we won't.
>>>
>>> Are there other questions we can help answer?
>>>
>>> [*] Or rather, it is mechanically orthogonal. Of course, if you're using
>>> cleartext DNS, the server name may be leaked from your DNS queries rather
>>> than the ClientHello. Whether or not that's useful will depend a bit on
>>> network vantage points, etc. E.g. it could be that our "cleartext" DNS
>>> resolver is actually pointing to a localhost caching resolver that, itself,
>>> forwards onto DoH outside the browser. Then ECH would be useful. We, from
>>> the browser side, can't tell whether that's happening, so it's simplest to
>>> just treat it as orthogonal.
>>>
>>> On Wed, Sep 20, 2023 at 12:25 PM Daniel Bratell <bratel...@gmail.com>
>>> wrote:
>>>
>>>> We are fine with being flexible with the details when the defaults
>>>> don't work out, but every field/question has an underlying purpose that we
>>>> try to satisfy through some means. Sometimes some fields might seem
>>>> superfluous, but the explainer field is one that is always valuable.
>>>>
>>>> The "explainer" has a couple of different consumers (not quite
>>>> overlapping but why make it too easy). It serves as a way to introduce
>>>> non-experts to a feature, it serves as an executive summary of a
>>>> complicated feature and it serves to fill in some non-technical gaps for
>>>> web developers, possibly with usage examples. When there is a public
>>>> announcement of a feature in a certain Chromium version, that is most often
>>>> based on the explainer, not any specification.
>>>>
>>>> Just as an example of something an explainer might have mentioned is
>>>> why this involves keys in DNS and if HTTPS depends on DNS, what about DNS
>>>> over HTTPS? It often say things that are obvious to area experts, but might
>>>> not be obvious to everyone exposed to this change.
>>>>
>>>> Quite often an explainer can be lifted/extracted from another source,
>>>> like a previous blog post, or the human friendly part of specification, but
>>>> it still has to be packaged in non-scary way. You mentioned a release note,
>>>> maybe that one was all that was needed?
>>>>
>>>> /Daniel
>>>> On 2023-09-19 01:04, 'David Adrian' via blink-dev wrote:
>>>>
>>>> > Could we please request a signal?
>>>>
>>>> Done (and positive!). I had forgotten to add it to Chrome Status.
>>>> https://github.com/WebKit/standards-positions/issues/46
>>>>
>>>> As for the explainer, between sending the I2S and now, I updated the
>>>> Chrome Status description to cover most of what David Benjamin discussed,
>>>> and match what was previously communicated in Chrome release notes. I
>>>> should have done this before sending the I2S, although I was under the
>>>> impression that an RFC would be a sufficient explainer.
>>>>
>>>> I think specific sections in the RFC could be, when they provide a
high-level overview before diving into the details.


> I do understand why it is useful to provide information at a slightly
>>>> higher and holistic level---I hope the updated description and David
>>>> Benjamin's comments can stand as that for this Intent.
>>>>
>>>> More broadly, David Benjamin is right that we are effectively jamming a
>>>> TLS change from the IETF through a process designed for the Web Platform
>>>> and W3C. We mostly do this so that launches show up in Chrome Status, and
>>>> organizations who are interested in following TLS changes can see them
>>>> there.
>>>>
>>>> Now that launches show up in Chrome Status regardless of whether or not
>>>> they are a Blink launch, we may want to consider no longer sending TLS
>>>> launches through the Intent process, since they exist outside of the Web
>>>> Platform
>>>>
>>>>
I think that would be a suboptimal outcome. The Blink process provides
transparency and visibility to the changes shipped in Chromium, and I think
that network/TLS launches are not different in that respect. I'm more than
happy to discuss how we can improve the process to make it less painful to
ship TLS-y things through it.

, and primarily cause discussion about process confusion (we're trying our
>>>> best to fit them in!), and not actual impact.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Mon, Sep 18, 2023 at 9:53 AM David Benjamin <david...@chromium.org>
>>>> wrote:
>>>>
>>>>> On Mon, Sep 18, 2023 at 10:06 AM Yoav Weiss <yoavwe...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, Sep 16, 2023 at 5:35 PM David Benjamin <david...@chromium.org>
>>>>>> wrote:
>>>>>>
>>>>>>> On Sat, Sep 16, 2023 at 1:12 AM Yoav Weiss <yoavwe...@chromium.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Sep 15, 2023 at 10:05 PM Mike Taylor <
>>>>>>>> miketa...@chromium.org> wrote:
>>>>>>>>
>>>>>>>>> On 9/11/23 6:34 PM, 'David Adrian' via blink-dev wrote:
>>>>>>>>>
>>>>>>>>> Contact emails david...@chromium.org, dadr...@google.com
>>>>>>>>>
>>>>>>>>> Explainer None
>>>>>>>>>
>>>>>>>>> I think a short explainer that outlines what this is and what's
>>>>>>>> the typical flow would be helpful. While that content could've been 
>>>>>>>> part of
>>>>>>>> the draft, that doesn't seem to be the case, at least at a glance.
>>>>>>>>
>>>>>>>
>>>>>>> This is a process mismatch that comes up for every networking
>>>>>>> protocol. The expected audiences and also style of spec are very 
>>>>>>> different.
>>>>>>> Explainers make sense for W3C-style specs where the other consumer of 
>>>>>>> the
>>>>>>> feature is a web developer who wants to understand how to use the API 
>>>>>>> and
>>>>>>> not how to implement it step-by-step. The audience for a network 
>>>>>>> protocol
>>>>>>> is completely different. The other consumer of the feature is a TLS 
>>>>>>> server
>>>>>>> software implementer, who *also* needs to understand the full
>>>>>>> protocol.
>>>>>>>
>>>>>>
>>>>>> Explainers are not destined only for web developers.
>>>>>> In this particular case, I'd think the audience for this is the API
>>>>>> owners (who may or may not have time to read the full I-D), as well as 
>>>>>> the
>>>>>> broader Blink community that keeps tabs on what we're shipping, and may
>>>>>> want to understand more about this feature and what it gives them as 
>>>>>> users.
>>>>>> Note that I'm not necessarily asking for a long and complex document - a
>>>>>> short explainer that outlines the status quo, what this is changing and 
>>>>>> how
>>>>>> the new flow works would do the trick.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> When it gets filtered up to web developers and server operators, all
>>>>>>> they see is how to configure their server software, which is specific to
>>>>>>> that software. I.e. they would need to refer to their server software
>>>>>>> documentation.
>>>>>>>
>>>>>>> As for an overview for a non-participant to understand the protocol,
>>>>>>> section 1 gives an introduction, and section 3 of the draft covers the
>>>>>>> typical flow. Keep in mind this is not a web platform API, but a TLS
>>>>>>> extension that lives far, far below the HTTP abstraction, so one should 
>>>>>>> not
>>>>>>> expect discussion of anything particularly webby. And, as noted above,
>>>>>>> anything at the level of configuring server software will be
>>>>>>> server-software-specific, so that also would not make sense here.
>>>>>>>
>>>>>>
>>>>>> The intro in section 1 is great, but the flow could use a simpler
>>>>>> explanation.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Specification
>>>>>>>>> https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni
>>>>>>>>>
>>>>>>>>> Summary
>>>>>>>>>
>>>>>>>>> The TLS Encrypted ClientHello (ECH) extension enables clients to
>>>>>>>>> encrypt ClientHello messages, which are normally sent in cleartext, 
>>>>>>>>> under a
>>>>>>>>> server’s public key. This allows websites to opt-in to avoid leaking
>>>>>>>>> sensitive fields, like the server name, to the network by hosting a 
>>>>>>>>> special
>>>>>>>>> HTTPS RR DNS record. (Earlier iterations of this extension were called
>>>>>>>>> Encrypted Server Name Indication, or ESNI.)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Blink component Internals>Network>SSL
>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3ENetwork%3ESSL>
>>>>>>>>>
>>>>>>>>> Search tags ech <https://chromestatus.com/features#tags:ech>, esni
>>>>>>>>> <https://chromestatus.com/features#tags:esni>, tls
>>>>>>>>> <https://chromestatus.com/features#tags:tls>, ssl
>>>>>>>>> <https://chromestatus.com/features#tags:ssl>
>>>>>>>>>
>>>>>>>>> TAG review Not applicable; this is a protocol under IETF
>>>>>>>>>
>>>>>>>>> TAG review status Not applicable
>>>>>>>>>
>>>>>>>>> Risks
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Interoperability and Compatibility
>>>>>>>>>
>>>>>>>>> As a networking protocol, interoperability risks look different
>>>>>>>>> from a web platform API: This is a draft of a developing protocol, so 
>>>>>>>>> the
>>>>>>>>> final standard will differ from what we ship now. We manage this as in
>>>>>>>>> other protocol work: the draft uses different codepoints in the DNS 
>>>>>>>>> record
>>>>>>>>> and ClientHello, set up to not conflict with the final standard. 
>>>>>>>>> There is
>>>>>>>>> also a risk of breaking buggy servers or network middleware. ECH is
>>>>>>>>> DNS-gated, so non-ECH servers won't be exposed to ECH itself. We do
>>>>>>>>> implement ECH's GREASE mechanism (section 6.2 of the draft), but this
>>>>>>>>> should appear as any normal unrecognized extension to non-ECH servers.
>>>>>>>>> Servers and network elements that are compliant with RFC 8446, 
>>>>>>>>> section 9.3,
>>>>>>>>> should not be impacted. We will be monitoring for these issues as 
>>>>>>>>> part of
>>>>>>>>> the experiment, comparing error rates and handshake times both for 
>>>>>>>>> HTTPS
>>>>>>>>> servers as a whole, and the subset of those that advertise ECH in DNS.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Gecko*: In development (
>>>>>>>>> https://blog.mozilla.org/security/2021/01/07/encrypted-client-hello-the-future-of-esni-in-firefox
>>>>>>>>> )
>>>>>>>>>
>>>>>>>>> *WebKit*: No signal
>>>>>>>>>
>>>>>>>>> Could we please request a signal?
>>>>>>>>>
>>>>>>>>> https://github.com/WebKit/standards-positions/issues/new/choose
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Web developers*: Positive (
>>>>>>>>> https://blog.cloudflare.com/encrypted-client-hello)
>>>>>>>>>
>>>>>>>>> *Other signals*:
>>>>>>>>>
>>>>>>>>> Ergonomics
>>>>>>>>>
>>>>>>>>> ECH is part of TLS, so it is largely abstracted away from web
>>>>>>>>> platform APIs themselves.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Activation
>>>>>>>>>
>>>>>>>>> This is a network protocol and thus inherently requires server
>>>>>>>>> software changes. It also requires keys deployed in the HTTPS DNS 
>>>>>>>>> record.
>>>>>>>>> At this stage in the process, we do not expect ECH to be deployed 
>>>>>>>>> beyond a
>>>>>>>>> few early adopters. Rather, this experiment is part of real-world 
>>>>>>>>> testing
>>>>>>>>> for the developing protocol. The connection with the DNS record is of
>>>>>>>>> particular note. It is possible that, due to DNS caching, etc., that 
>>>>>>>>> the
>>>>>>>>> DNS record we fetch is out of sync with the server instance we talk 
>>>>>>>>> to. ECH
>>>>>>>>> has a built-in recovery mechanism to repair these mismatches.
>>>>>>>>>
>>>>>>>>> Can you expand on these recovery mechanisms? (maybe as part of the
>>>>>>>> explainer requested above)
>>>>>>>>
>>>>>>>
>>>>>>> See section 3.2 and 6.1.6 of the draft.
>>>>>>>
>>>>>>> Broadly, if the server fails to decrypt the inner ClientHello, it
>>>>>>> handshakes with the outer one instead and provides replacement keys. 
>>>>>>> That
>>>>>>> handshake is authenticated against the config's public name, which
>>>>>>> authenticates the replacement keys and the client retries the 
>>>>>>> connection.
>>>>>>>
>>>>>>
>>>>>> Here again, an explainer would've been useful, assuming you don't
>>>>>> expect reviewers and interested folks to read through the entire I-D.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>> One of the aims of the experiment will be to validate this
>>>>>>>>> mechanism.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Security
>>>>>>>>>
>>>>>>>>> See
>>>>>>>>> https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-14#section-10
>>>>>>>>> for security considerations in the specification
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 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?
>>>>>>>>>
>>>>>>>>> No WebView-specific risks
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Debuggability
>>>>>>>>>
>>>>>>>>> Servers that use ECH are visible in the DevTools security panel.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Will this feature be supported on all six Blink platforms
>>>>>>>>> (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
>>>>>>>>> Yes
>>>>>>>>>
>>>>>>>>> While supported on all platforms, ECH requires keys fetched via
>>>>>>>>> DNS in the new HTTPS record. Chrome can currently fetch the HTTPS 
>>>>>>>>> record
>>>>>>>>> over DoH and over our built-in DNS resolver.
>>>>>>>>>
>>>>>>>>> Do we already support the HTTPS record for other purposes? Or
>>>>>>>> would this intent also add HTTPS record support?
>>>>>>>>
>>>>>>>
>>>>>>> We already support the HTTPS record. (That support could be
>>>>>>> improved, but that's separate from this launch and something for the
>>>>>>> loading/networking team to work on. This launch is about using ECH keys
>>>>>>> when we manage to fetch them.)
>>>>>>>
>>>>>>>>
>>>>>>>>> Is this feature fully tested by web-platform-tests
>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>>>>>>> ? No
>>>>>>>>>
>>>>>>>>> Can you expand on why? Is it due to implementation complexity of
>>>>>>>> network tests in python?
>>>>>>>>
>>>>>>>
>>>>>>> web-platform-tests has never been suitable for testing network
>>>>>>> protocols, especially not TLS extensions. In addition to the limitations
>>>>>>> caused by Python (not just implementation complexity, it's simply the 
>>>>>>> wrong
>>>>>>> tool for that job), the infrastructure needed for testing network 
>>>>>>> protocols
>>>>>>> is completely different, since it's not based on code running under a 
>>>>>>> web
>>>>>>> page. Like most networking features, ECH is broadly invisible to the web
>>>>>>> platform itself. It's all behind the HTTP abstraction.
>>>>>>> https://github.com/web-platform-tests/wpt/issues/20159
>>>>>>>
>>>>>>> This comes up for every networking protocol launch. Perhaps we need
>>>>>>> to refine the processes here, so that networking protocol features go
>>>>>>> through a slightly different template?
>>>>>>>
>>>>>>
>>>>>> Alternatively, you could have a generic doc or issue that outlines
>>>>>> those issues with WPT and networking tests. Then you could point to it in
>>>>>> this section.
>>>>>>
>>>>>
>>>>> The issue is the bug I linked above. In fact, that bug was already
>>>>> listed in chromestatus.com entry. It looks like this is actually a
>>>>> Blink process bug, where chromestatus.com does not fill this field
>>>>> into this section of the email. I've filed
>>>>> https://github.com/GoogleChrome/chromium-dashboard/issues/3335
>>>>>
>>>>> In the meantime, I guess folks need to remember that the process is
>>>>> buggy and you need to go to the chromestatus entry if you see a "No" here
>>>>> when reviewing.
>>>>>
>>>>>
>>>>>> Flag name on chrome://flags encrypted-client-hello
>>>>>>>>>
>>>>>>>>> Finch feature name None
>>>>>>>>>
>>>>>>>>> Non-finch justification None
>>>>>>>>>
>>>>>>>>> Requires code in //chrome? False
>>>>>>>>>
>>>>>>>>> Tracking bug https://crbug.com/1091403
>>>>>>>>>
>>>>>>>>> Launch bug https://crbug.com/1349902
>>>>>>>>>
>>>>>>>>> Availability expectation Feature is also being launched in
>>>>>>>>> Firefox.
>>>>>>>>>
>>>>>>>>> Sample links
>>>>>>>>> https://tls-ech.dev
>>>>>>>>>
>>>>>>>>> Estimated milestones
>>>>>>>>> Shipping on desktop 117
>>>>>>>>> OriginTrial desktop last 116
>>>>>>>>> OriginTrial desktop first 115
>>>>>>>>> DevTrial on desktop 105
>>>>>>>>> Shipping on Android 117
>>>>>>>>> OriginTrial Android last 116
>>>>>>>>> OriginTrial Android first 115
>>>>>>>>> DevTrial on Android 105
>>>>>>>>>
>>>>>>>>> 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).
>>>>>>>>> n/a
>>>>>>>>>
>>>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>>>> https://chromestatus.com/feature/6196703843581952
>>>>>>>>>
>>>>>>>>> Links to previous Intent discussions Intent to prototype:
>>>>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/YEo4LqB7nWI
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Intent to Experiment:
>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAF8qwaB488g2%3D1WdmFPnWaAYaXB2pXaVv0-Xe-XXqYFRi5y20A%40mail.gmail.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 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 on the web visit
>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42KgSdG0D1YT3H8EjXkm4zys4i5A1jskyZcXGbaedGvxHQ%40mail.gmail.com
>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42KgSdG0D1YT3H8EjXkm4zys4i5A1jskyZcXGbaedGvxHQ%40mail.gmail.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 on the web visit
>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d066fa66-d356-4be7-99ec-56db593280b0%40chromium.org
>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d066fa66-d356-4be7-99ec-56db593280b0%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 on the web visit
>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42JXymYrVqkLD2_-da-FhUVQAS6js1sP9B7ZmrjOC4pnYQ%40mail.gmail.com
>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42JXymYrVqkLD2_-da-FhUVQAS6js1sP9B7ZmrjOC4pnYQ%40mail.gmail.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 on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfV2b-h5RzqQCoyzXEUzh%3Dw8PAZOs1PXz%3DETN3cdGN%3DdEg%40mail.gmail.com.

Reply via email to