summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/plugins')
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.cc2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_mime_type.h2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.cc2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_mime_type_array.h2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_plugin.cc2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_plugin.h2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.cc2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/dom_plugin_array.h2
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.cc37
-rw-r--r--chromium/third_party/blink/renderer/modules/plugins/navigator_plugins.h4
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