summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 22:00:59 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 22:00:59 +0000
commitf66375e4d724f5da1a406d553259685451cdf55d (patch)
tree25ecde7778c92926a814fd6ae4bc1acc42a2ae38 /components
parent28b81067d7fa71d061d807267a1ac09f5e4fbd12 (diff)
downloadchromium_src-f66375e4d724f5da1a406d553259685451cdf55d.zip
chromium_src-f66375e4d724f5da1a406d553259685451cdf55d.tar.gz
chromium_src-f66375e4d724f5da1a406d553259685451cdf55d.tar.bz2
Introduce content::PageState.
This is a concrete class wrapping a string that contains the data of a serialized WebKit::WebHistoryItem class. Previously, we've just passed around these as strings, giving them names like "state", "content_state" or "history_state". It has been hard to identify all of the places in the code where these strings get passed around. A concrete class should make usage more apparent. Plus, instead of manipulating the strings using methods from webkit/glue/glue_serialize.h, we can just declare methods on the PageState class. This makes the code much cleaner. This first pass just implements PageState in terms of glue_serialize. It also adds content/public/renderer/history_item_serialization.h as the home for PageState to WebKit::WebHistoryItem conversion, which should ideally only be usable from the renderer process. (This bit is a step toward resolving bug 237243.) page_state.h declares operator==() to support DCHECK_EQ, which seems consistent with the idea of PageState being a replacement for std::string. I didn't want to litter tests with calls to PageState::ToEncodedData(). That would get cumbersome. BUG=240426 R=brettw@chromium.org, tsepez@chromium.org Review URL: https://codereview.chromium.org/14985014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202188 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components')
-rw-r--r--components/sessions/serialized_navigation_entry.cc27
-rw-r--r--components/sessions/serialized_navigation_entry.h5
-rw-r--r--components/sessions/serialized_navigation_entry_test_helper.cc11
-rw-r--r--components/sessions/serialized_navigation_entry_test_helper.h5
-rw-r--r--components/sessions/serialized_navigation_entry_unittest.cc17
5 files changed, 35 insertions, 30 deletions
diff --git a/components/sessions/serialized_navigation_entry.cc b/components/sessions/serialized_navigation_entry.cc
index 6ba7533..e322830 100644
--- a/components/sessions/serialized_navigation_entry.cc
+++ b/components/sessions/serialized_navigation_entry.cc
@@ -12,7 +12,6 @@
#include "sync/protocol/session_specifics.pb.h"
#include "sync/util/time.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebReferrerPolicy.h"
-#include "webkit/glue/glue_serialize.h"
using content::NavigationEntry;
@@ -41,7 +40,7 @@ SerializedNavigationEntry SerializedNavigationEntry::FromNavigationEntry(
navigation.referrer_ = entry.GetReferrer();
navigation.virtual_url_ = entry.GetVirtualURL();
navigation.title_ = entry.GetTitle();
- navigation.content_state_ = entry.GetContentState();
+ navigation.page_state_ = entry.GetPageState();
navigation.transition_type_ = entry.GetTransitionType();
navigation.has_post_data_ = entry.GetHasPostData();
navigation.post_id_ = entry.GetPostID();
@@ -69,7 +68,8 @@ SerializedNavigationEntry SerializedNavigationEntry::FromSyncData(
WebKit::WebReferrerPolicyDefault);
navigation.virtual_url_ = GURL(sync_data.virtual_url());
navigation.title_ = UTF8ToUTF16(sync_data.title());
- navigation.content_state_ = sync_data.state();
+ navigation.page_state_ =
+ content::PageState::CreateFromEncodedData(sync_data.state());
uint32 transition = 0;
if (sync_data.has_page_transition()) {
@@ -205,7 +205,7 @@ enum TypeMask {
// index_
// virtual_url_
// title_
-// content_state_
+// page_state_
// transition_type_
//
// Added on later:
@@ -228,12 +228,12 @@ void SerializedNavigationEntry::WriteToPickle(int max_size,
WriteString16ToPickle(pickle, &bytes_written, max_size, title_);
- std::string content_state = content_state_;
- if (has_post_data_) {
- content_state =
- webkit_glue::RemovePasswordDataFromHistoryState(content_state);
- }
- WriteStringToPickle(pickle, &bytes_written, max_size, content_state);
+ content::PageState page_state = page_state_;
+ if (has_post_data_)
+ page_state = page_state.RemovePasswordData();
+
+ WriteStringToPickle(pickle, &bytes_written, max_size,
+ page_state.ToEncodedData());
pickle->WriteInt(transition_type_);
@@ -259,15 +259,16 @@ void SerializedNavigationEntry::WriteToPickle(int max_size,
bool SerializedNavigationEntry::ReadFromPickle(PickleIterator* iterator) {
*this = SerializedNavigationEntry();
- std::string virtual_url_spec;
+ std::string virtual_url_spec, page_state_data;
int transition_type_int = 0;
if (!iterator->ReadInt(&index_) ||
!iterator->ReadString(&virtual_url_spec) ||
!iterator->ReadString16(&title_) ||
- !iterator->ReadString(&content_state_) ||
+ !iterator->ReadString(&page_state_data) ||
!iterator->ReadInt(&transition_type_int))
return false;
virtual_url_ = GURL(virtual_url_spec);
+ page_state_ = content::PageState::CreateFromEncodedData(page_state_data);
transition_type_ = static_cast<content::PageTransition>(transition_type_int);
// type_mask did not always exist in the written stream. As such, we
@@ -333,7 +334,7 @@ scoped_ptr<NavigationEntry> SerializedNavigationEntry::ToNavigationEntry(
browser_context));
entry->SetTitle(title_);
- entry->SetContentState(content_state_);
+ entry->SetPageState(page_state_);
entry->SetPageID(page_id);
entry->SetHasPostData(has_post_data_);
entry->SetPostID(post_id_);
diff --git a/components/sessions/serialized_navigation_entry.h b/components/sessions/serialized_navigation_entry.h
index bc72700..f76642b 100644
--- a/components/sessions/serialized_navigation_entry.h
+++ b/components/sessions/serialized_navigation_entry.h
@@ -14,6 +14,7 @@
#include "base/string16.h"
#include "base/time.h"
#include "components/sessions/sessions_export.h"
+#include "content/public/common/page_state.h"
#include "content/public/common/page_transition_types.h"
#include "content/public/common/referrer.h"
#include "googleurl/src/gurl.h"
@@ -96,7 +97,7 @@ class SESSIONS_EXPORT SerializedNavigationEntry {
int unique_id() const { return unique_id_; }
const GURL& virtual_url() const { return virtual_url_; }
const string16& title() const { return title_; }
- const std::string& content_state() const { return content_state_; }
+ const content::PageState& page_state() const { return page_state_; }
const string16& search_terms() const { return search_terms_; }
const GURL& favicon_url() const { return favicon_url_; }
const content::Referrer& referrer() const { return referrer_; }
@@ -139,7 +140,7 @@ class SESSIONS_EXPORT SerializedNavigationEntry {
content::Referrer referrer_;
GURL virtual_url_;
string16 title_;
- std::string content_state_;
+ content::PageState page_state_;
content::PageTransition transition_type_;
bool has_post_data_;
int64 post_id_;
diff --git a/components/sessions/serialized_navigation_entry_test_helper.cc b/components/sessions/serialized_navigation_entry_test_helper.cc
index 0c26e46..b1e2c00 100644
--- a/components/sessions/serialized_navigation_entry_test_helper.cc
+++ b/components/sessions/serialized_navigation_entry_test_helper.cc
@@ -21,7 +21,7 @@ void SerializedNavigationEntryTestHelper::ExpectNavigationEquals(
EXPECT_EQ(expected.referrer_.policy, actual.referrer_.policy);
EXPECT_EQ(expected.virtual_url_, actual.virtual_url_);
EXPECT_EQ(expected.title_, actual.title_);
- EXPECT_EQ(expected.content_state_, actual.content_state_);
+ EXPECT_EQ(expected.page_state_, actual.page_state_);
EXPECT_EQ(expected.transition_type_, actual.transition_type_);
EXPECT_EQ(expected.has_post_data_, actual.has_post_data_);
EXPECT_EQ(expected.original_request_url_, actual.original_request_url_);
@@ -40,16 +40,17 @@ SerializedNavigationEntry SerializedNavigationEntryTestHelper::CreateNavigation(
WebKit::WebReferrerPolicyDefault);
navigation.virtual_url_ = GURL(virtual_url);
navigation.title_ = UTF8ToUTF16(title);
- navigation.content_state_ = "fake_state";
+ navigation.page_state_ =
+ content::PageState::CreateFromEncodedData("fake_state");
navigation.timestamp_ = base::Time::Now();
return navigation;
}
// static
-void SerializedNavigationEntryTestHelper::SetContentState(
- const std::string& content_state,
+void SerializedNavigationEntryTestHelper::SetPageState(
+ const content::PageState& page_state,
SerializedNavigationEntry* navigation) {
- navigation->content_state_ = content_state;
+ navigation->page_state_ = page_state;
}
// static
diff --git a/components/sessions/serialized_navigation_entry_test_helper.h b/components/sessions/serialized_navigation_entry_test_helper.h
index 43b49eb..a653f22 100644
--- a/components/sessions/serialized_navigation_entry_test_helper.h
+++ b/components/sessions/serialized_navigation_entry_test_helper.h
@@ -17,6 +17,7 @@ class Time;
}
namespace content {
+class PageState;
struct Referrer;
}
@@ -38,8 +39,8 @@ class SerializedNavigationEntryTestHelper {
const std::string& virtual_url,
const std::string& title);
- static void SetContentState(const std::string& content_state,
- SerializedNavigationEntry* navigation);
+ static void SetPageState(const content::PageState& page_state,
+ SerializedNavigationEntry* navigation);
static void SetHasPostData(bool has_post_data,
SerializedNavigationEntry* navigation);
diff --git a/components/sessions/serialized_navigation_entry_unittest.cc b/components/sessions/serialized_navigation_entry_unittest.cc
index 2f439da..f8e5c3f 100644
--- a/components/sessions/serialized_navigation_entry_unittest.cc
+++ b/components/sessions/serialized_navigation_entry_unittest.cc
@@ -34,7 +34,8 @@ const content::Referrer kReferrer =
WebKit::WebReferrerPolicyAlways);
const GURL kVirtualURL("http://www.virtual-url.com");
const string16 kTitle = ASCIIToUTF16("title");
-const std::string kContentState = "content state";
+const content::PageState kPageState =
+ content::PageState::CreateFromEncodedData("page state");
const content::PageTransition kTransitionType =
static_cast<content::PageTransition>(
content::PAGE_TRANSITION_AUTO_SUBFRAME |
@@ -57,7 +58,7 @@ scoped_ptr<content::NavigationEntry> MakeNavigationEntryForTest() {
navigation_entry->SetReferrer(kReferrer);
navigation_entry->SetVirtualURL(kVirtualURL);
navigation_entry->SetTitle(kTitle);
- navigation_entry->SetContentState(kContentState);
+ navigation_entry->SetPageState(kPageState);
navigation_entry->SetTransitionType(kTransitionType);
navigation_entry->SetHasPostData(kHasPostData);
navigation_entry->SetPostID(kPostID);
@@ -76,7 +77,7 @@ sync_pb::TabNavigation MakeSyncDataForTest() {
sync_data.set_virtual_url(kVirtualURL.spec());
sync_data.set_referrer(kReferrer.url.spec());
sync_data.set_title(UTF16ToUTF8(kTitle));
- sync_data.set_state(kContentState);
+ sync_data.set_state(kPageState.ToEncodedData());
sync_data.set_page_transition(
sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME);
sync_data.set_unique_id(kUniqueID);
@@ -98,7 +99,7 @@ TEST(SerializedNavigationEntryTest, DefaultInitializer) {
EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy);
EXPECT_EQ(GURL(), navigation.virtual_url());
EXPECT_TRUE(navigation.title().empty());
- EXPECT_TRUE(navigation.content_state().empty());
+ EXPECT_FALSE(navigation.page_state().IsValid());
EXPECT_EQ(content::PAGE_TRANSITION_TYPED, navigation.transition_type());
EXPECT_FALSE(navigation.has_post_data());
EXPECT_EQ(-1, navigation.post_id());
@@ -125,7 +126,7 @@ TEST(SerializedNavigationEntryTest, FromNavigationEntry) {
EXPECT_EQ(kReferrer.policy, navigation.referrer().policy);
EXPECT_EQ(kVirtualURL, navigation.virtual_url());
EXPECT_EQ(kTitle, navigation.title());
- EXPECT_EQ(kContentState, navigation.content_state());
+ EXPECT_EQ(kPageState, navigation.page_state());
EXPECT_EQ(kTransitionType, navigation.transition_type());
EXPECT_EQ(kHasPostData, navigation.has_post_data());
EXPECT_EQ(kPostID, navigation.post_id());
@@ -150,7 +151,7 @@ TEST(SerializedNavigationEntryTest, FromSyncData) {
EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy);
EXPECT_EQ(kVirtualURL, navigation.virtual_url());
EXPECT_EQ(kTitle, navigation.title());
- EXPECT_EQ(kContentState, navigation.content_state());
+ EXPECT_EQ(kPageState, navigation.page_state());
EXPECT_EQ(kTransitionType, navigation.transition_type());
EXPECT_FALSE(navigation.has_post_data());
EXPECT_EQ(-1, navigation.post_id());
@@ -183,7 +184,7 @@ TEST(SerializedNavigationEntryTest, Pickle) {
EXPECT_EQ(kReferrer.policy, new_navigation.referrer().policy);
EXPECT_EQ(kVirtualURL, new_navigation.virtual_url());
EXPECT_EQ(kTitle, new_navigation.title());
- EXPECT_TRUE(new_navigation.content_state().empty());
+ EXPECT_FALSE(new_navigation.page_state().IsValid());
EXPECT_EQ(kTransitionType, new_navigation.transition_type());
EXPECT_EQ(kHasPostData, new_navigation.has_post_data());
EXPECT_EQ(-1, new_navigation.post_id());
@@ -212,7 +213,7 @@ TEST(SerializedNavigationEntryTest, ToNavigationEntry) {
EXPECT_EQ(kReferrer.policy, new_navigation_entry->GetReferrer().policy);
EXPECT_EQ(kVirtualURL, new_navigation_entry->GetVirtualURL());
EXPECT_EQ(kTitle, new_navigation_entry->GetTitle());
- EXPECT_EQ(kContentState, new_navigation_entry->GetContentState());
+ EXPECT_EQ(kPageState, new_navigation_entry->GetPageState());
EXPECT_EQ(kPageID, new_navigation_entry->GetPageID());
EXPECT_EQ(content::PAGE_TRANSITION_RELOAD,
new_navigation_entry->GetTransitionType());