diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-25 19:36:17 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-25 19:36:17 +0000 |
commit | ca948a21e18cdac84a933ce9ebd72be4152d8a32 (patch) | |
tree | 2c4fa33bc742c0a9a5e144128a8e277f16620409 /chrome/renderer | |
parent | f8646f7f53d9f48139b37588953170c3a882509f (diff) | |
download | chromium_src-ca948a21e18cdac84a933ce9ebd72be4152d8a32.zip chromium_src-ca948a21e18cdac84a933ce9ebd72be4152d8a32.tar.gz chromium_src-ca948a21e18cdac84a933ce9ebd72be4152d8a32.tar.bz2 |
Hook up WebHistoryItem and push HistoryItem serialization out of WebFrame.
WebHistoryItem is a copy-on-write wrapper for a WebCore::HistoryItem.
Pushing history item serialization out of WebFrame allows us to avoid a
dependency on base/pickle from WebFrame. This helps get us closer to
being able to move WebFrame into the WebKit API.
BUG=10043
TEST=none
R=dglazkov,sky
Review URL: http://codereview.chromium.org/146075
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19275 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index f6cc47c..5c2bc87 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -57,6 +57,7 @@ #include "webkit/api/public/WebDataSource.h" #include "webkit/api/public/WebDragData.h" #include "webkit/api/public/WebForm.h" +#include "webkit/api/public/WebHistoryItem.h" #include "webkit/api/public/WebPoint.h" #include "webkit/api/public/WebRect.h" #include "webkit/api/public/WebScriptSource.h" @@ -67,6 +68,7 @@ #include "webkit/api/public/WebURLResponse.h" #include "webkit/api/public/WebVector.h" #include "webkit/default_plugin/default_plugin_shared.h" +#include "webkit/glue/glue_serialize.h" #include "webkit/glue/dom_operations.h" #include "webkit/glue/dom_serializer.h" #include "webkit/glue/image_decoder.h" @@ -101,6 +103,7 @@ using WebKit::WebConsoleMessage; using WebKit::WebDataSource; using WebKit::WebDragData; using WebKit::WebForm; +using WebKit::WebHistoryItem; using WebKit::WebNavigationType; using WebKit::WebRect; using WebKit::WebScriptSource; @@ -623,7 +626,7 @@ void RenderView::OnNavigate(const ViewMsg_Navigate_Params& params) { bool is_reload = params.reload; WebFrame* main_frame = webview()->GetMainFrame(); - if (is_reload && !main_frame->HasCurrentHistoryState()) { + if (is_reload && main_frame->GetCurrentHistoryItem().isNull()) { // We cannot reload if we do not have any history state. This happens, for // example, when recovering from a crash. Our workaround here is a bit of // a hack since it means that reload after a crashed tab does not cause an @@ -646,7 +649,8 @@ void RenderView::OnNavigate(const ViewMsg_Navigate_Params& params) { if (!is_reload && !params.state.empty()) { // We must know the page ID of the page we are navigating back to. DCHECK_NE(params.page_id, -1); - main_frame->LoadHistoryState(params.state); + main_frame->LoadHistoryItem( + webkit_glue::HistoryItemFromString(params.state)); } else { // Navigate to the given URL. WebURLRequest request(params.url); @@ -986,10 +990,13 @@ void RenderView::UpdateSessionHistory(WebFrame* frame) { if (page_id_ == -1) return; - std::string state; - if (!webview()->GetMainFrame()->GetPreviousHistoryState(&state)) + const WebHistoryItem& item = + webview()->GetMainFrame()->GetPreviousHistoryItem(); + if (item.isNull()) return; - Send(new ViewHostMsg_UpdateState(routing_id_, page_id_, state)); + + Send(new ViewHostMsg_UpdateState( + routing_id_, page_id_, webkit_glue::HistoryItemToString(item))); } /////////////////////////////////////////////////////////////////////////////// @@ -1891,10 +1898,13 @@ void RenderView::SyncNavigationState() { if (!webview()) return; - std::string state; - if (!webview()->GetMainFrame()->GetCurrentHistoryState(&state)) + const WebHistoryItem& item = + webview()->GetMainFrame()->GetCurrentHistoryItem(); + if (item.isNull()) return; - Send(new ViewHostMsg_UpdateState(routing_id_, page_id_, state)); + + Send(new ViewHostMsg_UpdateState( + routing_id_, page_id_, webkit_glue::HistoryItemToString(item))); } void RenderView::ShowContextMenu(WebView* webview, |