Commit 3c0b295b authored by Delan Azabani's avatar Delan Azabani Committed by Commit Bot

Simplify MapDataParamToSrc by eliminating FindStringInNames

This CL replaces both PluginParameters::FindStringInNames and the
MapDataParamToSrc function in html_object_element.cc with a dedicated
PluginParameters::FindStringInNames method, based on feedback from
Frédéric and Mason in <https://crrev.com/c/2113394>.

Like the old version, the code proposed here only adds a “src” param
when there’s a “data” param but no “src” param, doing nothing if both
“data” and “src” parameters exist (regardless of mutual order).

Change-Id: I143ea81c5711c6f20cb5e1f6e791bf446ff33b02
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2121937
Commit-Queue: Delan Azabani <dazabani@igalia.com>
Reviewed-by: default avatarFrédéric Wang <fwang@igalia.com>
Reviewed-by: default avatarMason Freed <masonfreed@chromium.org>
Cr-Commit-Position: refs/heads/master@{#755284}
parent 7064d9af
......@@ -126,18 +126,6 @@ void HTMLObjectElement::ParseAttribute(
}
}
static void MapDataParamToSrc(PluginParameters& plugin_params) {
// Some plugins don't understand the "data" attribute of the OBJECT tag (i.e.
// Real and WMP require "src" attribute).
int src_index = plugin_params.FindStringInNames("src");
int data_index = plugin_params.FindStringInNames("data");
if (src_index == -1 && data_index != -1) {
plugin_params.AppendNameWithValue("src",
plugin_params.Values()[data_index]);
}
}
// TODO(schenney): crbug.com/572908 This function should not deal with url or
// serviceType!
void HTMLObjectElement::ParametersForPlugin(PluginParameters& plugin_params) {
......@@ -183,7 +171,9 @@ void HTMLObjectElement::ParametersForPlugin(PluginParameters& plugin_params) {
plugin_params.AppendAttribute(attribute);
}
MapDataParamToSrc(plugin_params);
// Some plugins don't understand the "data" attribute of the OBJECT tag (i.e.
// Real and WMP require "src" attribute).
plugin_params.MapDataParamToSrc();
}
bool HTMLObjectElement::HasFallbackContent() const {
......
......@@ -95,12 +95,22 @@ void PluginParameters::AppendNameWithValue(const String& name,
values_.push_back(value);
}
int PluginParameters::FindStringInNames(const String& str) {
for (wtf_size_t i = 0; i < names_.size(); ++i) {
if (EqualIgnoringASCIICase(names_[i], str))
return i;
void PluginParameters::MapDataParamToSrc() {
auto* src = std::find_if(names_.begin(), names_.end(), [](auto name) {
return EqualIgnoringASCIICase(name, "src");
});
if (src != names_.end()) {
return;
}
auto* data = std::find_if(names_.begin(), names_.end(), [](auto name) {
return EqualIgnoringASCIICase(name, "data");
});
if (data != names_.end()) {
AppendNameWithValue("src", values_[data - names_.begin()]);
}
return -1;
}
HTMLPlugInElement::HTMLPlugInElement(
......
......@@ -52,7 +52,7 @@ class PluginParameters {
const Vector<String>& Values() const;
void AppendAttribute(const Attribute&);
void AppendNameWithValue(const String& name, const String& value);
int FindStringInNames(const String&);
void MapDataParamToSrc();
private:
Vector<String> names_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment