New issue
Advanced search Search tips

Issue 810381 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Supplement should use AtomicString keys

Project Member Reported by tdres...@chromium.org, Feb 8 2018

Issue description

Right now, it's super confusing that Supplement uses the char* passed as the key, instead of the contents of the string.

This can result in subtle bugs, where you end up with a Supplementable holding onto multiple values.

The current most common approach to dealing with this is to have a method which returns the address of a string literal. It seems like using an AtomicString would be much less confusing?


e.g, https://cs.chromium.org/chromium/src/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.cpp?rcl=7294fc2b7634155491e9cbc324293a3b73da4a85&l=40

https://cs.chromium.org/chromium/src/third_party/WebKit/Source/modules/payments/HTMLIFrameElementPayments.cpp?rcl=7294fc2b7634155491e9cbc324293a3b73da4a85&l=16
 
Cc: haraken@chromium.org
AtomicString has it's own issues (for instance, unless we add it to the static string list, it's thread-hostile; otherwise, we'd need to actually hold ThreadSpecific<AtomicString> everywhere, at non-zero overhead).

If we want to make this safer, I'd rather we create a special kind of key (that's not a string), but still key by its address.

e.g.

struct SupplementKey {
  const char* human_readable_;
};

// usage:
static constexpr SupplementKey key = {"NavigatorBluetooth"};
return &key;

That would at least point out that something subtle is going on. Can you point at the bad usage patterns you've seen in practice? (The linked examples look okay to me.)
Your proposal SGTM.

We spent a bunch of time figuring out what was going on here:
https://chromium-review.googlesource.com/c/chromium/src/+/901802/5/third_party/WebKit/Source/core/loader/InteractiveDetectorTest.cpp#52
From an API point of view you'd expect that a call into a supplement across complication units would be result in the same behaviour but that isn't the case because the supplement uses the PtrHash as the key. Perhaps the hashtable shouldn't be using the ptr hash and just use a string hash?
Owner: jbroman@chromium.org
Status: Started (was: Untriaged)
We could, but it'd be more expensive. Looking more closely, we could also ensure that you provide the type you're looking for and fetch T::kSupplementName, which we can guarantee is the same every time you access it. Trying that out locally.

(assigning to me because I've now been nerdsniped into trying this)
Project Member

Comment 6 by bugdroid1@chromium.org, Feb 10 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f9aef1c3181c58f85e5eb86432ca1f5e93b86959

commit f9aef1c3181c58f85e5eb86432ca1f5e93b86959
Author: Jeremy Roman <jbroman@chromium.org>
Date: Sat Feb 10 06:21:19 2018

Make Supplementable harder to misuse by hiding the const char* keys.

This enforces what was previously just a pattern: each Supplementable must
expose a constant string key with a fixed address (this is enforced because
arrays are required to be like this).

Callers now provide the *type* instead of the key, and the key is inferred
from the type.

Bug:  810381 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I42b9c6fa9b278879d6509c220c0e47baf3c37f81
Reviewed-on: https://chromium-review.googlesource.com/909410
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535963}
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/controller/DevToolsFrontendImpl.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/controller/DevToolsFrontendImpl.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/context_features/ContextFeatureSettings.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/context_features/ContextFeatureSettings.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/CSSSelectorWatch.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/CSSSelectorWatch.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/CSSTiming.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/CSSTiming.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/FontFaceSetDocument.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/FontFaceSetDocument.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/FontFaceSetWorker.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/css/FontFaceSetWorker.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/dom/AnimationWorkletProxyClient.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/dom/AnimationWorkletProxyClient.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/dom/ContextFeatures.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/dom/ContextFeatures.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/dom/ContextFeaturesClientImpl.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/dom/DocumentParserTiming.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/dom/DocumentParserTiming.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/fetch/GlobalFetch.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/fileapi/FileReader.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/frame/ReportingContext.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/frame/ReportingContext.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/frame/ScreenOrientationController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/frame/ScreenOrientationController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/fullscreen/Fullscreen.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/fullscreen/Fullscreen.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/layout/custom/LayoutWorklet.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/layout/custom/LayoutWorklet.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/loader/InteractiveDetector.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/loader/InteractiveDetector.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/loader/InteractiveDetectorTest.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/loader/PrerendererClient.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/loader/PrerendererClient.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/loader/WorkerFetchContext.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/page/PagePopupSupplement.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/page/PagePopupSupplement.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/paint/PaintTiming.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/paint/PaintTiming.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/testing/InternalSettings.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/testing/InternalSettings.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/timing/DOMWindowPerformance.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/timing/DOMWindowPerformance.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/timing/WorkerGlobalScopePerformance.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/workers/WorkerContentSettingsClient.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/workers/WorkerContentSettingsClient.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/xml/DocumentXPathEvaluator.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/xml/DocumentXPathEvaluator.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/xml/DocumentXSLT.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/core/xml/DocumentXSLT.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/animationworklet/WindowAnimationWorklet.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/audio_output_devices/AudioOutputDeviceClient.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchBridge.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchBridge.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/background_fetch/ServiceWorkerRegistrationBackgroundFetch.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/background_fetch/ServiceWorkerRegistrationBackgroundFetch.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/background_sync/ServiceWorkerRegistrationSync.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/battery/NavigatorBattery.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/battery/NavigatorBattery.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/beacon/NavigatorBeacon.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/bluetooth/NavigatorBluetooth.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/budget/NavigatorBudget.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/budget/NavigatorBudget.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/budget/WorkerNavigatorBudget.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/budget/WorkerNavigatorBudget.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/cachestorage/GlobalCacheStorage.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/clipboard/NavigatorClipboard.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/clipboard/NavigatorClipboard.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/cookie_store/GlobalCookieStore.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerProxy.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerProxy.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/credentialmanager/NavigatorCredentials.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/crypto/DOMWindowCrypto.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/crypto/WorkerGlobalScopeCrypto.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/crypto/WorkerGlobalScopeCrypto.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/csspaint/PaintWorklet.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/csspaint/PaintWorklet.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/device_orientation/DeviceMotionController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationAbsoluteController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationAbsoluteController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/device_orientation/DeviceOrientationController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/donottrack/NavigatorDoNotTrack.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/encryptedmedia/MediaKeysController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/filesystem/DraggedIsolatedFileSystemImpl.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/indexeddb/GlobalIndexedDB.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/installedapp/InstalledAppController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/installedapp/InstalledAppController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/installedapp/NavigatorInstalledApp.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/keyboard_lock/NavigatorKeyboardLock.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/keyboard_lock/NavigatorKeyboardLock.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/locks/NavigatorLocks.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/media_capabilities/NavigatorMediaCapabilities.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/media_capabilities/NavigatorMediaCapabilities.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediasession/NavigatorMediaSession.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediasession/NavigatorMediaSession.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediasource/SourceBufferTrackBaseSupplement.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediasource/SourceBufferTrackBaseSupplement.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediastream/NavigatorUserMedia.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediastream/UserMediaController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/mediastream/UserMediaController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/navigatorcontentutils/NavigatorContentUtils.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/netinfo/NavigatorNetworkInformation.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/netinfo/WorkerNavigatorNetworkInformation.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/nfc/NavigatorNFC.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/nfc/NavigatorNFC.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/notifications/NotificationManager.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/payments/HTMLIFrameElementPayments.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/payments/HTMLIFrameElementPayments.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/payments/PaymentAppServiceWorkerRegistration.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/payments/PaymentAppServiceWorkerRegistration.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/permissions/NavigatorPermissions.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/permissions/WorkerNavigatorPermissions.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/plugins/NavigatorPlugins.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/presentation/NavigatorPresentation.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/presentation/PresentationController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/presentation/PresentationController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/push_messaging/PushController.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/push_messaging/PushController.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/push_messaging/PushMessagingBridge.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/push_messaging/PushMessagingBridge.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/push_messaging/ServiceWorkerRegistrationPush.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/quota/DOMWindowQuota.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/quota/DOMWindowQuota.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/quota/NavigatorStorageQuota.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.cpp
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/quota/WorkerNavigatorStorageQuota.h
[modify] https://crrev.com/f9aef1c3181c58f85e5eb86432ca1f5e93b86959/third_party/WebKit/Source/modules/remoteplayback/HTMLM
Status: Fixed (was: Started)
OK, changed this so that callers can no longer just supply a const char* of their own creation, and have to actually provide a type T that has T::kSupplementName. This should make this issue easier to avoid in the future.

Sign in to add a comment