summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/render_view.cc
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-13 06:21:01 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-13 06:21:01 +0000
commit4781156a2c2dca5839906c18f7eedf0fe808fb23 (patch)
treeebc644136085edd95ee30b72dcade4654257dce4 /chrome/renderer/render_view.cc
parent876b0c451041fad7be429632de5066e4e30bf625 (diff)
downloadchromium_src-4781156a2c2dca5839906c18f7eedf0fe808fb23.zip
chromium_src-4781156a2c2dca5839906c18f7eedf0fe808fb23.tar.gz
chromium_src-4781156a2c2dca5839906c18f7eedf0fe808fb23.tar.bz2
Revert r15940 again. Unexpected layout test failures :(
TBR=mpcomplete git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15942 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r--chrome/renderer/render_view.cc23
1 files changed, 22 insertions, 1 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index b8dff80..979f74f 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -68,6 +68,7 @@
#include "webkit/glue/webdropdata.h"
#include "webkit/glue/weberror.h"
#include "webkit/glue/webframe.h"
+#include "webkit/glue/webhistoryitem.h"
#include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webpreferences.h"
#include "webkit/glue/webplugin_delegate.h"
@@ -1560,6 +1561,13 @@ WindowOpenDisposition RenderView::DispositionForNavigationAction(
url.SchemeIs(chrome::kViewSourceScheme)) {
OpenURL(webview, url, GURL(), disposition);
return IGNORE_ACTION; // Suppress the load here.
+ } else if (url.SchemeIs(kBackForwardNavigationScheme)) {
+ std::string offset_str = url.ExtractFileName();
+ int offset;
+ if (StringToInt(offset_str, &offset)) {
+ GoToEntryAtOffset(offset);
+ return IGNORE_ACTION; // The browser process handles this one.
+ }
}
}
}
@@ -2437,7 +2445,20 @@ void RenderView::OnAutofillFormSubmitted(WebView* webview,
Send(new ViewHostMsg_AutofillFormSubmitted(routing_id_, form));
}
-void RenderView::NavigateBackForwardSoon(int offset) {
+WebHistoryItem* RenderView::GetHistoryEntryAtOffset(int offset) {
+ // Our history list is kept in the browser process on the UI thread. Since
+ // we can't make a sync IPC call to that thread without risking deadlock,
+ // we use a trick: construct a fake history item of the form:
+ // history://go/OFFSET
+ // When WebCore tells us to navigate to it, we tell the browser process to
+ // do a back/forward navigation instead.
+
+ GURL url(StringPrintf("%s://go/%d", kBackForwardNavigationScheme, offset));
+ history_navigation_item_ = WebHistoryItem::Create(url, L"", "", NULL);
+ return history_navigation_item_.get();
+}
+
+void RenderView::GoToEntryAtOffset(int offset) {
history_back_list_count_ += offset;
history_forward_list_count_ -= offset;