summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-07 12:52:40 +0000
committermiket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-07 12:52:40 +0000
commitea8b69393c3244b1d75d99e5dc4be7f2a5752864 (patch)
treed81d0fdc5564b46d728310c45424bc86c833e5e1
parentede03219316ddd2b8e5fea48bd2f592f255036ac (diff)
downloadchromium_src-ea8b69393c3244b1d75d99e5dc4be7f2a5752864.zip
chromium_src-ea8b69393c3244b1d75d99e5dc4be7f2a5752864.tar.gz
chromium_src-ea8b69393c3244b1d75d99e5dc4be7f2a5752864.tar.bz2
Fix a bad parameter that was being sent to a std::string constructor.
BUG=146606 TEST=added Review URL: https://chromiumcodereview.appspot.com/10918090 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155366 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/api/socket/udp_socket.cc2
-rw-r--r--chrome/browser/extensions/api/socket/udp_socket_unittest.cc44
-rw-r--r--chrome/chrome_tests.gypi1
3 files changed, 46 insertions, 1 deletions
diff --git a/chrome/browser/extensions/api/socket/udp_socket.cc b/chrome/browser/extensions/api/socket/udp_socket.cc
index 1e65b6b..0ecfe2a 100644
--- a/chrome/browser/extensions/api/socket/udp_socket.cc
+++ b/chrome/browser/extensions/api/socket/udp_socket.cc
@@ -109,7 +109,7 @@ void UDPSocket::RecvFrom(int count,
DCHECK(!callback.is_null());
if (!recv_from_callback_.is_null()) {
- callback.Run(net::ERR_IO_PENDING, NULL, NULL, 0);
+ callback.Run(net::ERR_IO_PENDING, NULL, "", 0);
return;
} else {
recv_from_callback_ = callback;
diff --git a/chrome/browser/extensions/api/socket/udp_socket_unittest.cc b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
new file mode 100644
index 0000000..08a864f
--- /dev/null
+++ b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
@@ -0,0 +1,44 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/api/socket/udp_socket.h"
+
+#include <string>
+
+#include "base/memory/scoped_ptr.h"
+#include "base/message_loop.h"
+#include "chrome/test/base/browser_with_test_window_test.h"
+#include "net/base/io_buffer.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+
+// UDPSocketUnitTest exists solely to make it easier to pass a specific
+// gtest_filter argument during development.
+class UDPSocketUnitTest : public BrowserWithTestWindowTest {
+};
+
+static void OnConnected(int result) {
+ DCHECK(result == 0);
+}
+
+static void OnCompleted(int bytes_read,
+ scoped_refptr<net::IOBuffer> io_buffer,
+ const std::string& address,
+ int port) {
+ // Do nothing; don't care.
+}
+
+TEST(UDPSocketUnitTest, TestUDPSocketRecvFrom) {
+ MessageLoopForIO io_loop; // for RecvFrom to do its threaded work.
+ UDPSocket socket(NULL);
+
+ // Confirm that we can call two RecvFroms in quick succession without
+ // triggering crbug.com/146606.
+ socket.Connect("127.0.0.1", 40000, base::Bind(&OnConnected));
+ socket.RecvFrom(4096, base::Bind(&OnCompleted));
+ socket.RecvFrom(4096, base::Bind(&OnCompleted));
+}
+
+} // namespace extensions
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 0c042e9..5688a3e 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -1263,6 +1263,7 @@
'browser/extensions/api/serial/serial_port_enumerator_unittest.cc',
'browser/extensions/api/socket/socket_api_unittest.cc',
'browser/extensions/api/socket/tcp_socket_unittest.cc',
+ 'browser/extensions/api/socket/udp_socket_unittest.cc',
'browser/extensions/api/web_navigation/frame_navigation_state_unittest.cc',
'browser/extensions/api/web_request/web_request_api_unittest.cc',
'browser/extensions/api/web_request/web_request_permissions_unittest.cc',