| Index: webkit/glue/glue_serialize_unittest.cc
|
| diff --git a/webkit/glue/glue_serialize_unittest.cc b/webkit/glue/glue_serialize_unittest.cc
|
| deleted file mode 100644
|
| index 80b96807cbd0ce7b9371306590c83d422dbb216f..0000000000000000000000000000000000000000
|
| --- a/webkit/glue/glue_serialize_unittest.cc
|
| +++ /dev/null
|
| @@ -1,328 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/pickle.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/WebKit/public/platform/WebHTTPBody.h"
|
| -#include "third_party/WebKit/public/platform/WebPoint.h"
|
| -#include "third_party/WebKit/public/platform/WebVector.h"
|
| -#include "ui/gfx/screen.h"
|
| -#include "webkit/base/file_path_string_conversions.h"
|
| -#include "webkit/glue/glue_serialize_deprecated.h"
|
| -
|
| -using WebKit::WebData;
|
| -using WebKit::WebHistoryItem;
|
| -using WebKit::WebHTTPBody;
|
| -using WebKit::WebPoint;
|
| -using WebKit::WebString;
|
| -using WebKit::WebUChar;
|
| -using WebKit::WebVector;
|
| -
|
| -namespace {
|
| -class GlueSerializeTest : public testing::Test {
|
| - public:
|
| - // Makes a FormData with some random data.
|
| - WebHTTPBody MakeFormData() {
|
| - WebHTTPBody http_body;
|
| - http_body.initialize();
|
| -
|
| - const char d1[] = "first data block";
|
| - http_body.appendData(WebData(d1, sizeof(d1)-1));
|
| -
|
| - http_body.appendFile(WebString::fromUTF8("file.txt"));
|
| -
|
| - const char d2[] = "data the second";
|
| - http_body.appendData(WebData(d2, sizeof(d2)-1));
|
| -
|
| - return http_body;
|
| - }
|
| -
|
| - WebHTTPBody MakeFormDataWithPasswords() {
|
| - WebHTTPBody http_body = MakeFormData();
|
| - http_body.setContainsPasswordData(true);
|
| - return http_body;
|
| - }
|
| -
|
| - // Constructs a HistoryItem with some random data and an optional child.
|
| - WebHistoryItem MakeHistoryItem(bool with_form_data, bool pregnant) {
|
| - WebHistoryItem item;
|
| - item.initialize();
|
| -
|
| - item.setURLString(WebString::fromUTF8("urlString"));
|
| - item.setOriginalURLString(WebString::fromUTF8("originalURLString"));
|
| - item.setTarget(WebString::fromUTF8("target"));
|
| - item.setParent(WebString::fromUTF8("parent"));
|
| - item.setTitle(WebString::fromUTF8("title"));
|
| - item.setAlternateTitle(WebString::fromUTF8("alternateTitle"));
|
| - item.setLastVisitedTime(13.37);
|
| - item.setScrollOffset(WebPoint(42, -42));
|
| - item.setIsTargetItem(true);
|
| - item.setVisitCount(42*42);
|
| - item.setPageScaleFactor(2.0f);
|
| - item.setItemSequenceNumber(123);
|
| - item.setDocumentSequenceNumber(456);
|
| -
|
| - WebVector<WebString> document_state(size_t(3));
|
| - document_state[0] = WebString::fromUTF8("state1");
|
| - document_state[1] = WebString::fromUTF8("state2");
|
| - document_state[2] = WebString::fromUTF8("state AWESOME");
|
| - item.setDocumentState(document_state);
|
| -
|
| - // Form Data
|
| - if (with_form_data) {
|
| - item.setHTTPBody(MakeFormData());
|
| - item.setHTTPContentType(WebString::fromUTF8("formContentType"));
|
| - }
|
| -
|
| - // Setting the FormInfo causes the referrer to be set, so we set the
|
| - // referrer after setting the form info.
|
| - item.setReferrer(WebString::fromUTF8("referrer"));
|
| -
|
| - // Children
|
| - if (pregnant)
|
| - item.appendToChildren(MakeHistoryItem(false, false));
|
| -
|
| - return item;
|
| - }
|
| -
|
| - WebHistoryItem MakeHistoryItemWithPasswordData(bool pregnant) {
|
| - WebHistoryItem item = MakeHistoryItem(false, pregnant);
|
| - item.setHTTPBody(MakeFormDataWithPasswords());
|
| - item.setHTTPContentType(WebString::fromUTF8("formContentType"));
|
| - return item;
|
| - }
|
| -
|
| - // Checks that a == b.
|
| - void HistoryItemExpectEqual(const WebHistoryItem& a,
|
| - const WebHistoryItem& b,
|
| - int version) {
|
| - HistoryItemExpectBaseDataEqual(a, b, version);
|
| - HistoryItemExpectFormDataEqual(a, b);
|
| - HistoryItemExpectChildrenEqual(a, b);
|
| - }
|
| -
|
| - void HistoryItemExpectBaseDataEqual(const WebHistoryItem& a,
|
| - const WebHistoryItem& b,
|
| - int version) {
|
| - float expectedPageScaleFactor = a.pageScaleFactor();
|
| - WebPoint expectedScrollOffset = a.scrollOffset();
|
| -#if defined(OS_ANDROID)
|
| - if (version == 11) {
|
| - expectedScrollOffset.x /= a.pageScaleFactor();
|
| - expectedScrollOffset.y /= a.pageScaleFactor();
|
| - expectedPageScaleFactor /= gfx::Screen::GetNativeScreen()
|
| - ->GetPrimaryDisplay().device_scale_factor();
|
| - }
|
| -#endif
|
| - EXPECT_EQ(base::string16(a.urlString()), base::string16(b.urlString()));
|
| - EXPECT_EQ(base::string16(a.originalURLString()),
|
| - base::string16(b.originalURLString()));
|
| - EXPECT_EQ(base::string16(a.target()), base::string16(b.target()));
|
| - EXPECT_EQ(base::string16(a.parent()), base::string16(b.parent()));
|
| - EXPECT_EQ(base::string16(a.title()), base::string16(b.title()));
|
| - EXPECT_EQ(base::string16(a.alternateTitle()),
|
| - base::string16(b.alternateTitle()));
|
| - EXPECT_EQ(a.lastVisitedTime(), b.lastVisitedTime());
|
| - EXPECT_EQ(expectedScrollOffset, b.scrollOffset());
|
| - EXPECT_EQ(a.isTargetItem(), b.isTargetItem());
|
| - EXPECT_EQ(a.visitCount(), b.visitCount());
|
| - EXPECT_EQ(base::string16(a.referrer()), base::string16(b.referrer()));
|
| - if (version >= 11)
|
| - EXPECT_EQ(expectedPageScaleFactor, b.pageScaleFactor());
|
| - if (version >= 9)
|
| - EXPECT_EQ(a.itemSequenceNumber(), b.itemSequenceNumber());
|
| - if (version >= 6)
|
| - EXPECT_EQ(a.documentSequenceNumber(), b.documentSequenceNumber());
|
| -
|
| - const WebVector<WebString>& a_docstate = a.documentState();
|
| - const WebVector<WebString>& b_docstate = b.documentState();
|
| - EXPECT_EQ(a_docstate.size(), b_docstate.size());
|
| - for (size_t i = 0, c = a_docstate.size(); i < c; ++i)
|
| - EXPECT_EQ(base::string16(a_docstate[i]), base::string16(b_docstate[i]));
|
| - }
|
| -
|
| - void HistoryItemExpectFormDataEqual(const WebHistoryItem& a,
|
| - const WebHistoryItem& b) {
|
| - const WebHTTPBody& a_body = a.httpBody();
|
| - const WebHTTPBody& b_body = b.httpBody();
|
| - EXPECT_EQ(!a_body.isNull(), !b_body.isNull());
|
| - if (!a_body.isNull() && !b_body.isNull()) {
|
| - EXPECT_EQ(a_body.containsPasswordData(), b_body.containsPasswordData());
|
| - EXPECT_EQ(a_body.elementCount(), b_body.elementCount());
|
| - WebHTTPBody::Element a_elem, b_elem;
|
| - for (size_t i = 0; a_body.elementAt(i, a_elem) &&
|
| - b_body.elementAt(i, b_elem); ++i) {
|
| - EXPECT_EQ(a_elem.type, b_elem.type);
|
| - if (a_elem.type == WebHTTPBody::Element::TypeData) {
|
| - EXPECT_EQ(std::string(a_elem.data.data(), a_elem.data.size()),
|
| - std::string(b_elem.data.data(), b_elem.data.size()));
|
| - } else {
|
| - EXPECT_EQ(base::string16(a_elem.filePath),
|
| - base::string16(b_elem.filePath));
|
| - }
|
| - }
|
| - }
|
| - EXPECT_EQ(base::string16(a.httpContentType()),
|
| - base::string16(b.httpContentType()));
|
| - }
|
| -
|
| - void HistoryItemExpectChildrenEqual(const WebHistoryItem& a,
|
| - const WebHistoryItem& b) {
|
| - const WebVector<WebHistoryItem>& a_children = a.children();
|
| - const WebVector<WebHistoryItem>& b_children = b.children();
|
| - EXPECT_EQ(a_children.size(), b_children.size());
|
| - for (size_t i = 0, c = a_children.size(); i < c; ++i)
|
| - HistoryItemExpectEqual(a_children[i], b_children[i],
|
| - webkit_glue::HistoryItemCurrentVersion());
|
| - }
|
| -};
|
| -
|
| -// Test old versions of serialized data to ensure that newer versions of code
|
| -// can still read history items written by previous versions.
|
| -TEST_F(GlueSerializeTest, BackwardsCompatibleTest) {
|
| - const WebHistoryItem& item = MakeHistoryItem(false, false);
|
| -
|
| - // Make sure current version can read all previous versions.
|
| - for (int i = 1; i < webkit_glue::HistoryItemCurrentVersion(); i++) {
|
| - std::string serialized_item;
|
| - webkit_glue::HistoryItemToVersionedString(item, i, &serialized_item);
|
| - const WebHistoryItem& deserialized_item =
|
| - webkit_glue::HistoryItemFromString(serialized_item);
|
| - ASSERT_FALSE(item.isNull());
|
| - ASSERT_FALSE(deserialized_item.isNull());
|
| - HistoryItemExpectEqual(item, deserialized_item, i);
|
| - }
|
| -}
|
| -
|
| -// Makes sure that a HistoryItem remains intact after being serialized and
|
| -// deserialized.
|
| -TEST_F(GlueSerializeTest, HistoryItemSerializeTest) {
|
| - const WebHistoryItem& item = MakeHistoryItem(true, true);
|
| - const std::string& serialized_item = webkit_glue::HistoryItemToString(item);
|
| - const WebHistoryItem& deserialized_item =
|
| - webkit_glue::HistoryItemFromString(serialized_item);
|
| -
|
| - ASSERT_FALSE(item.isNull());
|
| - ASSERT_FALSE(deserialized_item.isNull());
|
| - HistoryItemExpectEqual(item, deserialized_item,
|
| - webkit_glue::HistoryItemCurrentVersion());
|
| -}
|
| -
|
| -// Checks that broken messages don't take out our process.
|
| -TEST_F(GlueSerializeTest, BadMessagesTest) {
|
| - {
|
| - Pickle p;
|
| - // Version 1
|
| - p.WriteInt(1);
|
| - // Empty strings.
|
| - for (int i = 0; i < 6; ++i)
|
| - p.WriteInt(-1);
|
| - // Bad real number.
|
| - p.WriteInt(-1);
|
| - std::string s(static_cast<const char*>(p.data()), p.size());
|
| - webkit_glue::HistoryItemFromString(s);
|
| - }
|
| - {
|
| - double d = 0;
|
| - Pickle p;
|
| - // Version 1
|
| - p.WriteInt(1);
|
| - // Empty strings.
|
| - for (int i = 0; i < 6; ++i)
|
| - p.WriteInt(-1);
|
| - // More misc fields.
|
| - p.WriteData(reinterpret_cast<const char*>(&d), sizeof(d));
|
| - p.WriteInt(1);
|
| - p.WriteInt(1);
|
| - p.WriteInt(0);
|
| - p.WriteInt(0);
|
| - p.WriteInt(-1);
|
| - p.WriteInt(0);
|
| - // WebForm
|
| - p.WriteInt(1);
|
| - p.WriteInt(WebHTTPBody::Element::TypeData);
|
| - std::string s(static_cast<const char*>(p.data()), p.size());
|
| - webkit_glue::HistoryItemFromString(s);
|
| - }
|
| -}
|
| -
|
| -TEST_F(GlueSerializeTest, FilePathsFromHistoryState) {
|
| - WebHistoryItem item = MakeHistoryItem(false, true);
|
| -
|
| - // Append file paths to item.
|
| - base::FilePath file_path1(FILE_PATH_LITERAL("file.txt"));
|
| - base::FilePath file_path2(FILE_PATH_LITERAL("another_file"));
|
| - WebHTTPBody http_body;
|
| - http_body.initialize();
|
| - http_body.appendFile(webkit_base::FilePathToWebString(file_path1));
|
| - http_body.appendFile(webkit_base::FilePathToWebString(file_path2));
|
| - item.setHTTPBody(http_body);
|
| -
|
| - std::string serialized_item = webkit_glue::HistoryItemToString(item);
|
| - const std::vector<base::FilePath>& file_paths =
|
| - webkit_glue::FilePathsFromHistoryState(serialized_item);
|
| - ASSERT_EQ(2U, file_paths.size());
|
| - EXPECT_EQ(file_path1, file_paths[0]);
|
| - EXPECT_EQ(file_path2, file_paths[1]);
|
| -}
|
| -
|
| -// Makes sure that a HistoryItem containing password data remains intact after
|
| -// being serialized and deserialized.
|
| -TEST_F(GlueSerializeTest, HistoryItemWithPasswordsSerializeTest) {
|
| - const WebHistoryItem& item = MakeHistoryItemWithPasswordData(true);
|
| - const std::string& serialized_item = webkit_glue::HistoryItemToString(item);
|
| - const WebHistoryItem& deserialized_item =
|
| - webkit_glue::HistoryItemFromString(serialized_item);
|
| -
|
| - ASSERT_FALSE(item.isNull());
|
| - ASSERT_FALSE(deserialized_item.isNull());
|
| - HistoryItemExpectEqual(item, deserialized_item,
|
| - webkit_glue::HistoryItemCurrentVersion());
|
| -}
|
| -
|
| -TEST_F(GlueSerializeTest, RemovePasswordData) {
|
| - const WebHistoryItem& item1 = MakeHistoryItemWithPasswordData(true);
|
| - std::string serialized_item = webkit_glue::HistoryItemToString(item1);
|
| - serialized_item =
|
| - webkit_glue::RemovePasswordDataFromHistoryState(serialized_item);
|
| - const WebHistoryItem& item2 =
|
| - webkit_glue::HistoryItemFromString(serialized_item);
|
| -
|
| - ASSERT_FALSE(item1.isNull());
|
| - ASSERT_FALSE(item2.isNull());
|
| -
|
| - HistoryItemExpectBaseDataEqual(item1, item2,
|
| - webkit_glue::HistoryItemCurrentVersion());
|
| - HistoryItemExpectChildrenEqual(item1, item2);
|
| -
|
| - // Form data was removed, but the identifier was kept.
|
| - const WebHTTPBody& body1 = item1.httpBody();
|
| - const WebHTTPBody& body2 = item2.httpBody();
|
| - EXPECT_FALSE(body1.isNull());
|
| - EXPECT_FALSE(body2.isNull());
|
| - EXPECT_GT(body1.elementCount(), 0U);
|
| - EXPECT_EQ(0U, body2.elementCount());
|
| - EXPECT_EQ(body1.identifier(), body2.identifier());
|
| -}
|
| -
|
| -TEST_F(GlueSerializeTest, RemovePasswordDataWithNoPasswordData) {
|
| - const WebHistoryItem& item1 = MakeHistoryItem(true, true);
|
| - std::string serialized_item = webkit_glue::HistoryItemToString(item1);
|
| - serialized_item =
|
| - webkit_glue::RemovePasswordDataFromHistoryState(serialized_item);
|
| - const WebHistoryItem& item2 =
|
| - webkit_glue::HistoryItemFromString(serialized_item);
|
| -
|
| - ASSERT_FALSE(item1.isNull());
|
| - ASSERT_FALSE(item2.isNull());
|
| -
|
| - // Form data was not removed.
|
| - HistoryItemExpectEqual(item1, item2,
|
| - webkit_glue::HistoryItemCurrentVersion());
|
| -}
|
| -
|
| -} // namespace
|
|
|