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

#include "android_webview/browser/aw_content_browser_client.h"

#include "android_webview/browser/aw_feature_list_creator.h"
#include "base/task/thread_pool/thread_pool_instance.h"
#include "base/test/task_environment.h"
#include "mojo/core/embedder/embedder.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace android_webview {

class AwContentBrowserClientTest : public testing::Test {
 protected:
  void SetUp() override {
    mojo::core::Init();
  }
};

TEST_F(AwContentBrowserClientTest, DisableCreatingThreadPool) {
  AwFeatureListCreator aw_feature_list_creator;
  AwContentBrowserClient client(&aw_feature_list_creator);
  EXPECT_TRUE(client.CreateThreadPool("Hello"));
  EXPECT_TRUE(base::ThreadPoolInstance::Get());

  // Have to start the threed pool to shut it down, have to shut it down to
  // destroy it.
  base::ThreadPoolInstance::Get()->Start(
      base::ThreadPoolInstance::InitParams(1));
  base::ThreadPoolInstance::Get()->Shutdown();
  base::ThreadPoolInstance::Get()->JoinForTesting();
  base::ThreadPoolInstance::Set(nullptr);

  AwContentBrowserClient::DisableCreatingThreadPool();
  EXPECT_FALSE(client.CreateThreadPool("Hello"));
  EXPECT_FALSE(base::ThreadPoolInstance::Get());
}

}  // namespace android_webview