diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/plugins')
10 files changed, 46 insertions, 11 deletions
diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.cc b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.cc index d39c2dc248d..48f1901ac9e 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.cc +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.cc @@ -35,7 +35,7 @@ DOMMimeType::DOMMimeType(LocalFrame* frame, const MimeClassInfo& mime_class_info) : ExecutionContextClient(frame), mime_class_info_(&mime_class_info) {} -void DOMMimeType::Trace(Visitor* visitor) { +void DOMMimeType::Trace(Visitor* visitor) const { visitor->Trace(mime_class_info_); ScriptWrappable::Trace(visitor); ExecutionContextClient::Trace(visitor); diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.h b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.h index 23ee306115f..a11113987d1 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.h +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.h @@ -45,7 +45,7 @@ class DOMMimeType final : public ScriptWrappable, const String& description() const; DOMPlugin* enabledPlugin() const; - void Trace(Visitor*) override; + void Trace(Visitor*) const override; private: Member<const MimeClassInfo> mime_class_info_; diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.cc b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.cc index a4ad5cc9371..431aacf087f 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.cc +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.cc @@ -35,7 +35,7 @@ DOMMimeTypeArray::DOMMimeTypeArray(LocalFrame* frame) UpdatePluginData(); } -void DOMMimeTypeArray::Trace(Visitor* visitor) { +void DOMMimeTypeArray::Trace(Visitor* visitor) const { visitor->Trace(dom_mime_types_); ScriptWrappable::Trace(visitor); ExecutionContextLifecycleObserver::Trace(visitor); diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.h b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.h index af3afc3aaa2..21f464df364 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.h +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.h @@ -54,7 +54,7 @@ class DOMMimeTypeArray final : public ScriptWrappable, // PluginsChangedObserver implementation. void PluginsChanged() override; - void Trace(Visitor*) override; + void Trace(Visitor*) const override; private: PluginData* GetPluginData() const; diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.cc b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.cc index 09bf7a21e1b..14ad0e6ced0 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.cc +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.cc @@ -28,7 +28,7 @@ namespace blink { DOMPlugin::DOMPlugin(LocalFrame* frame, const PluginInfo& plugin_info) : ExecutionContextClient(frame), plugin_info_(&plugin_info) {} -void DOMPlugin::Trace(Visitor* visitor) { +void DOMPlugin::Trace(Visitor* visitor) const { visitor->Trace(plugin_info_); ScriptWrappable::Trace(visitor); ExecutionContextClient::Trace(visitor); diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.h b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.h index 9b738d96015..4be40503fe6 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.h +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin.h @@ -49,7 +49,7 @@ class DOMPlugin final : public ScriptWrappable, public ExecutionContextClient { void NamedPropertyEnumerator(Vector<String>&, ExceptionState&) const; bool NamedPropertyQuery(const AtomicString&, ExceptionState&) const; - void Trace(Visitor*) override; + void Trace(Visitor*) const override; private: Member<const PluginInfo> plugin_info_; diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.cc b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.cc index f5256d4a98d..c7e41cbb470 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.cc +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.cc @@ -39,7 +39,7 @@ DOMPluginArray::DOMPluginArray(LocalFrame* frame) UpdatePluginData(); } -void DOMPluginArray::Trace(Visitor* visitor) { +void DOMPluginArray::Trace(Visitor* visitor) const { visitor->Trace(dom_plugins_); ScriptWrappable::Trace(visitor); ExecutionContextLifecycleObserver::Trace(visitor); diff --git a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.h b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.h index 031fe219515..df8cd8ae169 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.h +++ b/chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.h @@ -56,7 +56,7 @@ class DOMPluginArray final : public ScriptWrappable, // PluginsChangedObserver implementation. void PluginsChanged() override; - void Trace(Visitor*) override; + void Trace(Visitor*) const override; private: PluginData* GetPluginData() const; diff --git a/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.cc b/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.cc index 921dbd87b04..58a61076866 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.cc +++ b/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.cc @@ -4,6 +4,8 @@ #include "third_party/blink/renderer/modules/plugins/navigator_plugins.h" +#include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h" +#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h" #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/navigator.h" #include "third_party/blink/renderer/core/frame/settings.h" @@ -51,7 +53,38 @@ bool NavigatorPlugins::javaEnabled(Navigator& navigator) { DOMPluginArray* NavigatorPlugins::plugins(LocalFrame* frame) const { if (!plugins_) plugins_ = MakeGarbageCollected<DOMPluginArray>(frame); - return plugins_.Get(); + + DOMPluginArray* result = plugins_.Get(); + if (!frame) + return result; + Document* document = frame->GetDocument(); + if (!document) + return result; + + // Build digest... + IdentifiableTokenBuilder builder; + for (unsigned i = 0; i < result->length(); i++) { + DOMPlugin* plugin = result->item(i); + builder.AddAtomic(StringToBytesSafe(plugin->name())) + .AddAtomic(StringToBytesSafe(plugin->description())) + .AddAtomic(StringToBytesSafe(plugin->filename())); + for (unsigned j = 0; j < plugin->length(); j++) { + DOMMimeType* mimeType = plugin->item(j); + builder.AddAtomic(StringToBytesSafe(mimeType->type())) + .AddAtomic(StringToBytesSafe(mimeType->description())) + .AddAtomic(StringToBytesSafe(mimeType->suffixes())); + } + } + // ...and report to UKM. + IdentifiabilityMetricBuilder(document->UkmSourceID()) + .SetWebfeature(WebFeature::kNavigatorPlugins, builder.GetToken()) + .Record(document->UkmRecorder()); + + return result; +} + +base::span<const uint8_t> NavigatorPlugins::StringToBytesSafe(String str) const { + return str.Is8Bit() ? str.Span8() : as_bytes(str.Span16()); } DOMMimeTypeArray* NavigatorPlugins::mimeTypes(LocalFrame* frame) const { @@ -60,7 +93,7 @@ DOMMimeTypeArray* NavigatorPlugins::mimeTypes(LocalFrame* frame) const { return mime_types_.Get(); } -void NavigatorPlugins::Trace(Visitor* visitor) { +void NavigatorPlugins::Trace(Visitor* visitor) const { visitor->Trace(plugins_); visitor->Trace(mime_types_); Supplement<Navigator>::Trace(visitor); diff --git a/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.h b/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.h index 4fcc984c013..01613eaaa9f 100644 --- a/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.h +++ b/chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.h @@ -31,7 +31,7 @@ class NavigatorPlugins final : public GarbageCollected<NavigatorPlugins>, explicit NavigatorPlugins(Navigator&); - void Trace(Visitor*) override; + void Trace(Visitor*) const override; private: DOMPluginArray* plugins(LocalFrame*) const; @@ -39,6 +39,8 @@ class NavigatorPlugins final : public GarbageCollected<NavigatorPlugins>, mutable Member<DOMPluginArray> plugins_; mutable Member<DOMMimeTypeArray> mime_types_; + + base::span<const uint8_t> StringToBytesSafe(String str) const; }; } // namespace blink |