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

Unified Diff: components/html_viewer/html_frame_properties.cc

Issue 1307013004: Propagate scrolling/marginwidth/marginheight property values to child frame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments for tests + merge blink/cr changes. Created 5 years, 3 months 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: components/html_viewer/html_frame_properties.cc
diff --git a/components/html_viewer/html_frame_properties.cc b/components/html_viewer/html_frame_properties.cc
index 9d6ac9246d36353b2c637cc7705479b981dece9d..88c50bae10bd497e7df3fc91ef2e2d68f2ac1a94 100644
--- a/components/html_viewer/html_frame_properties.cc
+++ b/components/html_viewer/html_frame_properties.cc
@@ -10,6 +10,7 @@
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebFrame.h"
+#include "third_party/WebKit/public/web/WebFrameOwnerProperties.h"
#include "third_party/WebKit/public/web/WebSandboxFlags.h"
#include "url/origin.h"
#include "url/url_util.h"
@@ -20,6 +21,8 @@ const char kPropertyFrameTreeScope[] = "html-viewer-frame-tree-scope";
const char kPropertyFrameOrigin[] = "html-viewer-replicated-frame-origin";
const char kPropertyFrameName[] = "html-viewer-replicated-frame-name";
const char kPropertyFrameSandboxFlags[] = "html-viewer-sandbox-flags";
+const char kPropertyFrameOwnerProperties[] =
+ "html-viewer-frame-owner-properties";
namespace {
@@ -79,6 +82,18 @@ mojo::Array<uint8_t> FrameSandboxFlagsToClientProperty(
return IntToClientPropertyArray(static_cast<int>(flags)).Pass();
}
+mojo::Array<uint8_t> FrameOwnerPropertiesToClientProperty(
+ const blink::WebFrameOwnerProperties& owner_properties) {
+ base::Pickle pickle;
+ pickle.WriteInt(static_cast<int>(owner_properties.scrollingMode));
+ pickle.WriteInt(owner_properties.marginWidth);
+ pickle.WriteInt(owner_properties.marginHeight);
+
+ mojo::Array<uint8_t> owner_properties_array(pickle.size());
+ memcpy(&(owner_properties_array.front()), pickle.data(), pickle.size());
+ return owner_properties_array.Pass();
+}
+
bool FrameSandboxFlagsFromClientProperty(const mojo::Array<uint8_t>& new_data,
blink::WebSandboxFlags* flags) {
if (new_data.is_null())
@@ -143,6 +158,35 @@ url::Origin FrameOriginFromClientProperty(const mojo::Array<uint8_t>& data) {
return result;
}
+bool FrameOwnerPropertiesFromClientProperty(
alexmos 2015/10/02 21:24:19 Should we have unit tests for this and FrameOwnerP
lazyboy 2015/10/05 22:16:08 I've removed these on the latest patch.
+ const mojo::Array<uint8_t>& data,
+ blink::WebFrameOwnerProperties* owner_properties) {
+ if (data.is_null())
+ return false;
+
+ CHECK(data.size());
+ CHECK(data.size() < static_cast<size_t>(std::numeric_limits<int>::max()));
+ COMPILE_ASSERT(sizeof(uint8_t) == sizeof(unsigned char),
+ uint8_t_same_size_as_unsigned_char);
+ const base::Pickle pickle(reinterpret_cast<const char*>(&(data.front())),
+ static_cast<int>(data.size()));
+ CHECK(pickle.data());
+ base::PickleIterator iter(pickle);
+
+ int scrolling_mode_as_int;
+ CHECK(iter.ReadInt(&scrolling_mode_as_int));
+ CHECK(scrolling_mode_as_int >= 0 &&
+ scrolling_mode_as_int <=
+ static_cast<int>(
+ blink::WebFrameOwnerProperties::ScrollingMode::Last));
+ owner_properties->scrollingMode =
+ static_cast<blink::WebFrameOwnerProperties::ScrollingMode>(
+ scrolling_mode_as_int);
+ CHECK(iter.ReadInt(&(owner_properties->marginWidth)));
+ CHECK(iter.ReadInt(&(owner_properties->marginHeight)));
+ return true;
+}
+
void AddToClientPropertiesIfValid(
const std::string& name,
mojo::Array<uint8_t> value,

Powered by Google App Engine
This is Rietveld 408576698