summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-25 19:36:17 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-25 19:36:17 +0000
commitca948a21e18cdac84a933ce9ebd72be4152d8a32 (patch)
tree2c4fa33bc742c0a9a5e144128a8e277f16620409 /chrome/renderer
parentf8646f7f53d9f48139b37588953170c3a882509f (diff)
downloadchromium_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.cc26
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,