Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: content/common/frame_replication_state.cc

Issue 2520223002: Replicate a parsed feature policy representation so it doesn't need to be parsed in the browser pro… (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/frame_replication_state.cc
diff --git a/content/common/frame_replication_state.cc b/content/common/frame_replication_state.cc
index 239c9ab82c23d547cc74b074b23027ffdc3eaa1f..8d00fdd80a9da98ff6fef7e763e59a94c36fbf93 100644
--- a/content/common/frame_replication_state.cc
+++ b/content/common/frame_replication_state.cc
@@ -2,12 +2,59 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/strings/utf_string_conversions.h"
#include "content/common/frame_replication_state.h"
#include "third_party/WebKit/public/web/WebSandboxFlags.h"
#include "third_party/WebKit/public/web/WebTreeScopeType.h"
namespace content {
+// static
+std::vector<FeaturePolicyParsedWhitelist>
+FeaturePolicyParsedWhitelist::fromWebFeaturePolicyParsedWhitelist(
+ const blink::WebVector<blink::WebFeaturePolicy::ParsedWhitelist>&
+ web_parsed_whitelists) {
+ std::vector<FeaturePolicyParsedWhitelist> result;
+ for (const blink::WebFeaturePolicy::ParsedWhitelist& web_whitelist :
+ web_parsed_whitelists) {
+ FeaturePolicyParsedWhitelist whitelist;
+ whitelist.feature_name =
+ base::UTF16ToUTF8(base::StringPiece16(web_whitelist.featureName));
+ whitelist.matches_all_origins = web_whitelist.matchesAllOrigins;
+ for (const blink::WebString& web_origin : web_whitelist.origins)
+ whitelist.origins.push_back(
+ base::UTF16ToUTF8(base::StringPiece16(web_origin)));
+ result.push_back(whitelist);
+ }
+ return result;
+}
+
+// static
+blink::WebVector<blink::WebFeaturePolicy::ParsedWhitelist>
+FeaturePolicyParsedWhitelist::toWebFeaturePolicyParsedWhitelist(
+ const std::vector<FeaturePolicyParsedWhitelist>& parsed_whitelists) {
+ std::vector<blink::WebFeaturePolicy::ParsedWhitelist> result;
+ for (const FeaturePolicyParsedWhitelist& whitelist : parsed_whitelists) {
+ blink::WebFeaturePolicy::ParsedWhitelist web_whitelist;
+ web_whitelist.featureName =
+ blink::WebString(base::UTF8ToUTF16(whitelist.feature_name));
+ web_whitelist.matchesAllOrigins = whitelist.matches_all_origins;
+ std::vector<blink::WebString> web_origins;
+ for (const std::string& origin : whitelist.origins)
+ web_origins.push_back(base::UTF8ToUTF16(origin));
+ result.push_back(web_whitelist);
+ }
+ return result;
+}
+
+FeaturePolicyParsedWhitelist::FeaturePolicyParsedWhitelist()
+ : matches_all_origins(false) {}
+
+FeaturePolicyParsedWhitelist::FeaturePolicyParsedWhitelist(
+ const FeaturePolicyParsedWhitelist& fpw) = default;
+
+FeaturePolicyParsedWhitelist::~FeaturePolicyParsedWhitelist() {}
+
FrameReplicationState::FrameReplicationState()
: sandbox_flags(blink::WebSandboxFlags::None),
scope(blink::WebTreeScopeType::Document),

Powered by Google App Engine
This is Rietveld 408576698