unittest_test_suite.cc revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/public/test/unittest_test_suite.h"
6
7#include "base/logging.h"
8#include "base/rand_util.h"
9#include "base/test/test_suite.h"
10#include "third_party/WebKit/public/platform/Platform.h"
11#include "third_party/WebKit/public/web/WebKit.h"
12
13namespace content {
14
15#if !defined(OS_IOS)
16// A stubbed out WebKit platform support impl.
17class UnitTestTestSuite::UnitTestWebKitPlatformSupport
18    : public WebKit::Platform {
19 public:
20  UnitTestWebKitPlatformSupport() {}
21  virtual ~UnitTestWebKitPlatformSupport() {}
22  virtual void cryptographicallyRandomValues(unsigned char* buffer,
23                                             size_t length) OVERRIDE {
24    base::RandBytes(buffer, length);
25  }
26  virtual const unsigned char* getTraceCategoryEnabledFlag(
27      const char* categoryName) {
28    // Causes tracing macros to be disabled.
29    static const unsigned char kEnabled = 0;
30    return &kEnabled;
31  }
32};
33#endif  // !OS_IOS
34
35UnitTestTestSuite::UnitTestTestSuite(base::TestSuite* test_suite)
36    : test_suite_(test_suite) {
37  DCHECK(test_suite);
38#if !defined(OS_IOS)
39  webkit_platform_support_.reset(new UnitTestWebKitPlatformSupport);
40  WebKit::initialize(webkit_platform_support_.get());
41#endif
42}
43
44UnitTestTestSuite::~UnitTestTestSuite() {
45#if !defined(OS_IOS)
46  WebKit::shutdown();
47#endif
48}
49
50int UnitTestTestSuite::Run() {
51  return test_suite_->Run();
52}
53
54}  // namespace content
55