Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: content/renderer/render_view_browsertest.cc

Issue 10829044: Implement NavigationControllerWebView.PostURL (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixes according to comments. Improve render_view test. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 6
7 #include "base/shared_memory.h" 7 #include "base/shared_memory.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "content/common/intents_messages.h" 10 #include "content/common/intents_messages.h"
11 #include "content/common/view_messages.h" 11 #include "content/common/view_messages.h"
12 #include "content/public/browser/native_web_keyboard_event.h" 12 #include "content/public/browser/native_web_keyboard_event.h"
13 #include "content/public/browser/web_ui_controller_factory.h" 13 #include "content/public/browser/web_ui_controller_factory.h"
14 #include "content/public/common/bindings_policy.h" 14 #include "content/public/common/bindings_policy.h"
15 #include "content/public/common/url_constants.h" 15 #include "content/public/common/url_constants.h"
16 #include "content/public/test/render_view_test.h" 16 #include "content/public/test/render_view_test.h"
17 #include "content/renderer/render_view_impl.h" 17 #include "content/renderer/render_view_impl.h"
18 #include "content/shell/shell_content_client.h" 18 #include "content/shell/shell_content_client.h"
19 #include "content/shell/shell_content_browser_client.h" 19 #include "content/shell/shell_content_browser_client.h"
20 #include "content/shell/shell_main_delegate.h" 20 #include "content/shell/shell_main_delegate.h"
21 #include "content/test/mock_keyboard.h" 21 #include "content/test/mock_keyboard.h"
22 #include "net/base/net_errors.h" 22 #include "net/base/net_errors.h"
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebData.h"
25 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebHTTPBody. h"
24 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" 26 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
25 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError. h" 27 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError. h"
28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h"
26 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentServiceInfo. h" 29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentServiceInfo. h"
27 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 30 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebWindowFeatures.h" 31 #include "third_party/WebKit/Source/WebKit/chromium/public/WebWindowFeatures.h"
29 #include "ui/base/keycodes/keyboard_codes.h" 32 #include "ui/base/keycodes/keyboard_codes.h"
30 #include "ui/base/range/range.h" 33 #include "ui/base/range/range.h"
31 #include "ui/gfx/codec/jpeg_codec.h" 34 #include "ui/gfx/codec/jpeg_codec.h"
35 #include "webkit/glue/glue_serialize.h"
32 #include "webkit/glue/web_io_operators.h" 36 #include "webkit/glue/web_io_operators.h"
33 37
34 #if defined(OS_LINUX) && !defined(USE_AURA) 38 #if defined(OS_LINUX) && !defined(USE_AURA)
35 #include "ui/base/gtk/event_synthesis_gtk.h" 39 #include "ui/base/gtk/event_synthesis_gtk.h"
36 #endif 40 #endif
37 41
38 #if defined(USE_AURA) 42 #if defined(USE_AURA)
39 #include "ui/aura/event.h" 43 #include "ui/aura/event.h"
40 #endif 44 #endif
41 45
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 render_thread_->sink().ClearMessages(); 297 render_thread_->sink().ClearMessages();
294 298
295 // Change the value of the input. We should have gotten an update state 299 // Change the value of the input. We should have gotten an update state
296 // notification. We need to spin the message loop to catch this update. 300 // notification. We need to spin the message loop to catch this update.
297 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';"); 301 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';");
298 ProcessPendingMessages(); 302 ProcessPendingMessages();
299 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching( 303 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching(
300 ViewHostMsg_UpdateState::ID)); 304 ViewHostMsg_UpdateState::ID));
301 } 305 }
302 306
307 TEST_F(RenderViewImplTest, OnNavigationHttpPost) {
308 ViewMsg_Navigate_Params nav_params;
309
310 // An http url will trigger a resource load so cannot be used here.
311 nav_params.url = GURL("data:text/html,<div>Page</div>");
312 nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL;
313 nav_params.transition = content::PAGE_TRANSITION_TYPED;
314 nav_params.page_id = -1;
315 nav_params.is_post = true;
316
317 // Set up post ata
jam 2012/07/27 23:36:15 nit; data
318 const char* raw_data = "post \0\ndata";
319 const int length = 11;
320 const std::vector<char> post_data(raw_data, raw_data + length);
321 nav_params.browser_initiated_post_data = post_data;
322
323 view()->OnNavigate(nav_params);
324 ProcessPendingMessages();
325
326 const IPC::Message* frame_navigate_msg =
327 render_thread_->sink().GetUniqueMessageMatching(
328 ViewHostMsg_FrameNavigate::ID);
329 EXPECT_TRUE(frame_navigate_msg);
330
331 ViewHostMsg_FrameNavigate::Param host_nav_params;
332 ViewHostMsg_FrameNavigate::Read(frame_navigate_msg, &host_nav_params);
333 EXPECT_TRUE(host_nav_params.a.is_post);
334
335 // Check post data sent to browser matches
336 EXPECT_FALSE(host_nav_params.a.content_state.empty());
337 const WebKit::WebHistoryItem item = webkit_glue::HistoryItemFromString(
338 host_nav_params.a.content_state);
339 WebKit::WebHTTPBody body = item.httpBody();
340 WebKit::WebHTTPBody::Element element;
341 bool successful = body.elementAt(0, element);
342 EXPECT_TRUE(successful);
343 EXPECT_EQ(WebKit::WebHTTPBody::Element::TypeData, element.type);
344 EXPECT_EQ(0, memcmp(raw_data, element.data.data(), length));
345 }
346
303 TEST_F(RenderViewImplTest, DecideNavigationPolicy) { 347 TEST_F(RenderViewImplTest, DecideNavigationPolicy) {
304 WebUITestClient client; 348 WebUITestClient client;
305 WebUITestBrowserClient browser_client; 349 WebUITestBrowserClient browser_client;
306 content::ContentClient* old_client = content::GetContentClient(); 350 content::ContentClient* old_client = content::GetContentClient();
307 content::ContentBrowserClient* old_browser_client = 351 content::ContentBrowserClient* old_browser_client =
308 content::GetContentClient()->browser(); 352 content::GetContentClient()->browser();
309 353
310 content::SetContentClient(&client); 354 content::SetContentClient(&client);
311 content::GetContentClient()->set_browser_for_testing(&browser_client); 355 content::GetContentClient()->set_browser_for_testing(&browser_client);
312 client.set_renderer_for_testing(old_client->renderer()); 356 client.set_renderer_for_testing(old_client->renderer());
(...skipping 1332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 ASSERT_EQ(utf16_length, bounds.size()); 1689 ASSERT_EQ(utf16_length, bounds.size());
1646 for (size_t i = 0; i < utf16_length; ++i) { 1690 for (size_t i = 0; i < utf16_length; ++i) {
1647 if (is_surrogate_pair_empty_rect[i]) { 1691 if (is_surrogate_pair_empty_rect[i]) {
1648 EXPECT_EQ(0, bounds[i].width()); 1692 EXPECT_EQ(0, bounds[i].width());
1649 } else { 1693 } else {
1650 EXPECT_LT(0, bounds[i].width()); 1694 EXPECT_LT(0, bounds[i].width());
1651 } 1695 }
1652 } 1696 }
1653 view()->OnImeConfirmComposition(empty_string, ui::Range::InvalidRange()); 1697 view()->OnImeConfirmComposition(empty_string, ui::Range::InvalidRange());
1654 } 1698 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698