summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authortoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-21 07:08:39 +0000
committertoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-21 07:08:39 +0000
commitde43b88e942f1f8eb33e962007830c63de46743b (patch)
tree6d2ff39b748db6e147377f63aa12a1662b50c486 /webkit
parent99127777d32f9b5cd46e7bbdfb5537b20fa8574e (diff)
downloadchromium_src-de43b88e942f1f8eb33e962007830c63de46743b.zip
chromium_src-de43b88e942f1f8eb33e962007830c63de46743b.tar.gz
chromium_src-de43b88e942f1f8eb33e962007830c63de46743b.tar.bz2
LayoutTests/http/tests/websocket/tests/hixie76/simple-stress.html was flaky.
|g_io_thread| and |message_loop_| threads touch |num_pending_tasks_|. We should define it as Atomic32 and touch it via atomic operation. BUG=32018 TEST=LayoutTests/http/tests/websocket/tests/hixie76/simple-stress.html Review URL: http://codereview.chromium.org/7389005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93350 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/tools/test_shell/simple_socket_stream_bridge.cc19
1 files changed, 10 insertions, 9 deletions
diff --git a/webkit/tools/test_shell/simple_socket_stream_bridge.cc b/webkit/tools/test_shell/simple_socket_stream_bridge.cc
index 43ee58e..14b652b 100644
--- a/webkit/tools/test_shell/simple_socket_stream_bridge.cc
+++ b/webkit/tools/test_shell/simple_socket_stream_bridge.cc
@@ -6,6 +6,7 @@
#include "webkit/tools/test_shell/simple_socket_stream_bridge.h"
+#include "base/atomicops.h"
#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
#include "googleurl/src/gurl.h"
@@ -68,7 +69,7 @@ class WebSocketStreamHandleBridgeImpl
scoped_refptr<net::SocketStreamJob> socket_;
// Number of pending tasks to handle net::SocketStream::Delegate methods.
- int num_pending_tasks_;
+ base::subtle::Atomic32 num_pending_tasks_;
DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl);
};
@@ -118,7 +119,7 @@ void WebSocketStreamHandleBridgeImpl::Close() {
void WebSocketStreamHandleBridgeImpl::OnConnected(
net::SocketStream* socket, int max_pending_send_allowed) {
- ++num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
message_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnConnected,
@@ -127,7 +128,7 @@ void WebSocketStreamHandleBridgeImpl::OnConnected(
void WebSocketStreamHandleBridgeImpl::OnSentData(
net::SocketStream* socket, int amount_sent) {
- ++num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
message_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnSentData,
@@ -136,7 +137,7 @@ void WebSocketStreamHandleBridgeImpl::OnSentData(
void WebSocketStreamHandleBridgeImpl::OnReceivedData(
net::SocketStream* socket, const char* data, int len) {
- ++num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
message_loop_->PostTask(
FROM_HERE,
NewRunnableMethod(this,
@@ -145,7 +146,7 @@ void WebSocketStreamHandleBridgeImpl::OnReceivedData(
}
void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) {
- ++num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
// Release socket_ on IO thread.
socket_ = NULL;
socket_id_ = kNoSocketId;
@@ -182,14 +183,14 @@ void WebSocketStreamHandleBridgeImpl::DoClose() {
void WebSocketStreamHandleBridgeImpl::DoOnConnected(
int max_pending_send_allowed) {
DCHECK(MessageLoop::current() == message_loop_);
- --num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
if (delegate_)
delegate_->DidOpenStream(handle_, max_pending_send_allowed);
}
void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) {
DCHECK(MessageLoop::current() == message_loop_);
- --num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
if (delegate_)
delegate_->DidSendData(handle_, amount_sent);
}
@@ -197,7 +198,7 @@ void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) {
void WebSocketStreamHandleBridgeImpl::DoOnReceivedData(
std::vector<char>* data) {
DCHECK(MessageLoop::current() == message_loop_);
- --num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
scoped_ptr<std::vector<char> > scoped_data(data);
if (delegate_)
delegate_->DidReceiveData(handle_, &(data->at(0)), data->size());
@@ -205,7 +206,7 @@ void WebSocketStreamHandleBridgeImpl::DoOnReceivedData(
void WebSocketStreamHandleBridgeImpl::DoOnClose() {
DCHECK(MessageLoop::current() == message_loop_);
- --num_pending_tasks_;
+ base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
// Don't handle OnClose if there are pending tasks.
DCHECK_EQ(num_pending_tasks_, 0);
DCHECK(!socket_);