Chromium Code Reviews| Index: content/renderer/render_view_browsertest.cc |
| diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc |
| index c49fb4aa6c88da00027d12280469e7536954c237..152742ab86ac73df838df845d44bba95fea3668c 100644 |
| --- a/content/renderer/render_view_browsertest.cc |
| +++ b/content/renderer/render_view_browsertest.cc |
| @@ -21,14 +21,18 @@ |
| #include "content/test/mock_keyboard.h" |
| #include "net/base/net_errors.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebData.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebHTTPBody.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentServiceInfo.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebWindowFeatures.h" |
| #include "ui/base/keycodes/keyboard_codes.h" |
| #include "ui/base/range/range.h" |
| #include "ui/gfx/codec/jpeg_codec.h" |
| +#include "webkit/glue/glue_serialize.h" |
| #include "webkit/glue/web_io_operators.h" |
| #if defined(OS_LINUX) && !defined(USE_AURA) |
| @@ -300,6 +304,46 @@ TEST_F(RenderViewImplTest, OnNavStateChanged) { |
| ViewHostMsg_UpdateState::ID)); |
| } |
| +TEST_F(RenderViewImplTest, OnNavigationHttpPost) { |
| + ViewMsg_Navigate_Params nav_params; |
| + |
| + // An http url will trigger a resource load so cannot be used here. |
| + nav_params.url = GURL("data:text/html,<div>Page</div>"); |
| + nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL; |
| + nav_params.transition = content::PAGE_TRANSITION_TYPED; |
| + nav_params.page_id = -1; |
| + nav_params.is_post = true; |
| + |
| + // Set up post ata |
|
jam
2012/07/27 23:36:15
nit; data
|
| + const char* raw_data = "post \0\ndata"; |
| + const int length = 11; |
| + const std::vector<char> post_data(raw_data, raw_data + length); |
| + nav_params.browser_initiated_post_data = post_data; |
| + |
| + view()->OnNavigate(nav_params); |
| + ProcessPendingMessages(); |
| + |
| + const IPC::Message* frame_navigate_msg = |
| + render_thread_->sink().GetUniqueMessageMatching( |
| + ViewHostMsg_FrameNavigate::ID); |
| + EXPECT_TRUE(frame_navigate_msg); |
| + |
| + ViewHostMsg_FrameNavigate::Param host_nav_params; |
| + ViewHostMsg_FrameNavigate::Read(frame_navigate_msg, &host_nav_params); |
| + EXPECT_TRUE(host_nav_params.a.is_post); |
| + |
| + // Check post data sent to browser matches |
| + EXPECT_FALSE(host_nav_params.a.content_state.empty()); |
| + const WebKit::WebHistoryItem item = webkit_glue::HistoryItemFromString( |
| + host_nav_params.a.content_state); |
| + WebKit::WebHTTPBody body = item.httpBody(); |
| + WebKit::WebHTTPBody::Element element; |
| + bool successful = body.elementAt(0, element); |
| + EXPECT_TRUE(successful); |
| + EXPECT_EQ(WebKit::WebHTTPBody::Element::TypeData, element.type); |
| + EXPECT_EQ(0, memcmp(raw_data, element.data.data(), length)); |
| +} |
| + |
| TEST_F(RenderViewImplTest, DecideNavigationPolicy) { |
| WebUITestClient client; |
| WebUITestBrowserClient browser_client; |