diff options
author | miket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-07 12:52:40 +0000 |
---|---|---|
committer | miket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-07 12:52:40 +0000 |
commit | ea8b69393c3244b1d75d99e5dc4be7f2a5752864 (patch) | |
tree | d81d0fdc5564b46d728310c45424bc86c833e5e1 | |
parent | ede03219316ddd2b8e5fea48bd2f592f255036ac (diff) | |
download | chromium_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.cc | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/api/socket/udp_socket_unittest.cc | 44 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 1 |
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', |