Chromium Code Reviews| Index: content/renderer/render_frame_impl_browsertest.cc |
| diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc |
| index 258863cf3989eddf4cbca94d67304903ca27f817..e377095327f23e1438d0e32133a0c2a7de7f9120 100644 |
| --- a/content/renderer/render_frame_impl_browsertest.cc |
| +++ b/content/renderer/render_frame_impl_browsertest.cc |
| @@ -19,11 +19,14 @@ |
| #include "content/test/fake_compositor_dependencies.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/WebKit/public/platform/WebEffectiveConnectionType.h" |
| +#include "third_party/WebKit/public/platform/WebString.h" |
| #include "third_party/WebKit/public/platform/WebURLRequest.h" |
| #include "third_party/WebKit/public/web/WebFrameOwnerProperties.h" |
| #include "third_party/WebKit/public/web/WebHistoryItem.h" |
| #include "third_party/WebKit/public/web/WebLocalFrame.h" |
| +using blink::WebString; |
| + |
| namespace { |
| const int32_t kSubframeRouteId = 20; |
| const int32_t kSubframeWidgetRouteId = 21; |
| @@ -294,4 +297,52 @@ TEST_F(RenderFrameImplTest, EffectiveConnectionType) { |
| } |
| } |
| +TEST_F(RenderFrameImplTest, SaveImageFromDataURL) { |
| + const IPC::Message* msg1 = render_thread_->sink().GetFirstMessageMatching( |
| + FrameHostMsg_SaveImageFromDataURL::ID); |
| + EXPECT_FALSE(msg1); |
| + render_thread_->sink().ClearMessages(); |
| + |
| + const std::string image_data_url = |
| + "data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="; |
| + |
| + frame()->saveImageFromDataURL(WebString::fromUTF8(image_data_url)); |
| + ProcessPendingMessages(); |
| + const IPC::Message* msg2 = render_thread_->sink().GetFirstMessageMatching( |
| + FrameHostMsg_SaveImageFromDataURL::ID); |
| + EXPECT_TRUE(msg2); |
| + |
| + FrameHostMsg_SaveImageFromDataURL::Param param1; |
| + FrameHostMsg_SaveImageFromDataURL::Read(msg2, ¶m1); |
| + EXPECT_EQ(std::get<2>(param1).length(), image_data_url.length()); |
|
asanka
2016/06/20 17:13:18
Redundant? Here and below.
|
| + EXPECT_EQ(std::get<2>(param1), image_data_url); |
| + |
| + ProcessPendingMessages(); |
| + render_thread_->sink().ClearMessages(); |
| + |
| + const std::string large_data_url(1024 * 1024 * 20 - 1, 'd'); |
| + |
| + frame()->saveImageFromDataURL(WebString::fromUTF8(large_data_url)); |
| + ProcessPendingMessages(); |
| + const IPC::Message* msg3 = render_thread_->sink().GetFirstMessageMatching( |
| + FrameHostMsg_SaveImageFromDataURL::ID); |
| + EXPECT_TRUE(msg3); |
| + |
| + FrameHostMsg_SaveImageFromDataURL::Param param2; |
| + FrameHostMsg_SaveImageFromDataURL::Read(msg3, ¶m2); |
| + EXPECT_EQ(std::get<2>(param2).length(), large_data_url.length()); |
| + EXPECT_EQ(std::get<2>(param2), large_data_url); |
| + |
| + ProcessPendingMessages(); |
| + render_thread_->sink().ClearMessages(); |
| + |
| + const std::string exceeded_data_url(1024 * 1024 * 20 + 1, 'd'); |
| + |
| + frame()->saveImageFromDataURL(WebString::fromUTF8(exceeded_data_url)); |
| + ProcessPendingMessages(); |
| + const IPC::Message* msg4 = render_thread_->sink().GetFirstMessageMatching( |
| + FrameHostMsg_SaveImageFromDataURL::ID); |
| + EXPECT_FALSE(msg4); |
| +} |
| + |
| } // namespace |