1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67

content / test / fuzzer / fuzzer_support.cc [blame]

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/test/fuzzer/fuzzer_support.h"

#include <string>

#include "base/feature_list.h"
#include "base/i18n/icu_util.h"
#include "base/location.h"
#include "base/test/test_timeouts.h"
#include "gin/v8_initializer.h"
#include "third_party/blink/public/platform/web_runtime_features.h"
#include "tools/v8_context_snapshot/buildflags.h"

namespace content {

namespace {
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
#if BUILDFLAG(USE_V8_CONTEXT_SNAPSHOT)
constexpr gin::V8SnapshotFileType kSnapshotType =
    gin::V8SnapshotFileType::kWithAdditionalContext;
#else
constexpr gin::V8SnapshotFileType kSnapshotType =
    gin::V8SnapshotFileType::kDefault;
#endif
#endif
}

RenderViewTestAdapter::RenderViewTestAdapter()
    // Allow fuzzing test a longer Run() timeout than normal (see
    // htps://crbug.com/1053401).
    : increased_timeout_(FROM_HERE, TestTimeouts::action_max_timeout()) {}

void RenderViewTestAdapter::SetUp() {
  RenderViewTest::SetUp();
  CreateFakeURLLoaderFactory();
}

Env::Env() {
  base::CommandLine::Init(0, nullptr);
  base::FeatureList::InitInstance(std::string(), std::string());
  base::i18n::InitializeICU();
  TestTimeouts::Initialize();

  blink::WebRuntimeFeatures::EnableExperimentalFeatures(true);
  blink::WebRuntimeFeatures::EnableTestOnlyFeatures(true);

#ifdef V8_USE_EXTERNAL_STARTUP_DATA
  gin::V8Initializer::LoadV8Snapshot(kSnapshotType);
#endif

  // Initialize the adapter before gin, because the adapter can set V8 flags
  // only before initializing V8.
  adapter = std::make_unique<RenderViewTestAdapter>();
  adapter->SetUp();

  gin::IsolateHolder::Initialize(gin::IsolateHolder::kStrictMode,
                                 gin::ArrayBufferAllocator::SharedInstance());
}

Env::~Env() {
  LOG(FATAL) << "NOT SUPPORTED";
}

}  // namespace content