summaryrefslogtreecommitdiffstats
path: root/content/browser/trace_subscriber_stdio_unittest.cc
diff options
context:
space:
mode:
authorhusky@chromium.org <husky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-24 04:17:06 +0000
committerhusky@chromium.org <husky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-24 04:17:06 +0000
commitb77226e27cab2828e1638a978864442dd336a73e (patch)
tree190bad928416e69b85b5a930dac33954b9c2fb8a /content/browser/trace_subscriber_stdio_unittest.cc
parentb07cdbcc2fd4044902f1542df9501b49c5f94786 (diff)
downloadchromium_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.cc50
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);
}
-