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..61fd6b341e98ecebb015e99d9ea658ef2b1d19e5 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,50 @@ 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), 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), 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 |