// Copyright 2018 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 "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
