diff options
author | husky@chromium.org <husky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-24 04:17:06 +0000 |
---|---|---|
committer | husky@chromium.org <husky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-24 04:17:06 +0000 |
commit | b77226e27cab2828e1638a978864442dd336a73e (patch) | |
tree | 190bad928416e69b85b5a930dac33954b9c2fb8a /content/browser/trace_subscriber_stdio_unittest.cc | |
parent | b07cdbcc2fd4044902f1542df9501b49c5f94786 (diff) | |
download | chromium_src-b77226e27cab2828e1638a978864442dd336a73e.zip chromium_src-b77226e27cab2828e1638a978864442dd336a73e.tar.gz chromium_src-b77226e27cab2828e1638a978864442dd336a73e.tar.bz2 |
Use SequencedWorkerPool for disk operations in TraceSubscriberStdio.
This class was hitting a ThreadRestrictions assert because it called
OpenFile on the UI thread. To reduce unnecessary copying, I've changed
the OnTraceDataCollected argument from std::string to RefCountedString.
Second attempt (originally committed in 123140, reverted in 123146).
Added DISALLOW_COPY_AND_ASSIGN to fix Windows compilation error.
BUG=None
TEST=content_unittests
Review URL: http://codereview.chromium.org/9443020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123433 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/trace_subscriber_stdio_unittest.cc')
-rw-r--r-- | content/browser/trace_subscriber_stdio_unittest.cc | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/content/browser/trace_subscriber_stdio_unittest.cc b/content/browser/trace_subscriber_stdio_unittest.cc index 92f360f..6c8531c 100644 --- a/content/browser/trace_subscriber_stdio_unittest.cc +++ b/content/browser/trace_subscriber_stdio_unittest.cc @@ -1,40 +1,34 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// 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 "content/browser/trace_subscriber_stdio.h" +#include "base/message_loop.h" #include "base/scoped_temp_dir.h" +#include "base/threading/sequenced_worker_pool.h" +#include "content/public/browser/browser_thread.h" #include "testing/gtest/include/gtest/gtest.h" -namespace { +TEST(TraceSubscriberStdioTest, CanWriteDataToFile) { + ScopedTempDir trace_dir; + ASSERT_TRUE(trace_dir.CreateUniqueTempDir()); + FilePath trace_file(trace_dir.path().AppendASCII("trace.txt")); + { + content::TraceSubscriberStdio subscriber(trace_file); -class TraceSubscriberStdioTest : public testing::Test { - public: - virtual void SetUp() { - ASSERT_TRUE(trace_dir_.CreateUniqueTempDir()); - trace_file_ = trace_dir_.path().AppendASCII("trace.txt"); - } - - std::string ReadTraceFile() { - std::string result; - EXPECT_TRUE(file_util::ReadFileToString(trace_file_, &result)); - return result; - } - - ScopedTempDir trace_dir_; - FilePath trace_file_; -}; + std::string foo("foo"); + subscriber.OnTraceDataCollected( + make_scoped_refptr(base::RefCountedString::TakeString(&foo))); -} // namespace + std::string bar("bar"); + subscriber.OnTraceDataCollected( + make_scoped_refptr(base::RefCountedString::TakeString(&bar))); -TEST_F(TraceSubscriberStdioTest, CanWriteDataToFile) { - TraceSubscriberStdio subscriber(trace_file_); - subscriber.OnTraceDataCollected("[foo]"); - subscriber.OnTraceDataCollected("[bar]"); - EXPECT_TRUE(subscriber.IsValid()); - - subscriber.OnEndTracingComplete(); - EXPECT_FALSE(subscriber.IsValid()); + subscriber.OnEndTracingComplete(); + } + content::BrowserThread::GetBlockingPool()->FlushForTesting(); + std::string result; + EXPECT_TRUE(file_util::ReadFileToString(trace_file, &result)); + EXPECT_EQ("[foo,bar]", result); } - |