// Copyright 2015 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/public/test/test_web_contents_factory.h"

#include "base/run_loop.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/test_renderer_host.h"
#include "content/public/test/web_contents_tester.h"

namespace content {

TestWebContentsFactory::TestWebContentsFactory()
    : rvh_enabler_(new content::RenderViewHostTestEnabler()) {
}

TestWebContentsFactory::~TestWebContentsFactory() {
  // We explicitly clear the vector to force destruction of any created web
  // contents so that we can properly handle their cleanup (running posted
  // tasks, etc).
  web_contents_.clear();
  // Let any posted tasks for web contents deletion run.
  base::RunLoop().RunUntilIdle();
  rvh_enabler_.reset();
  // Let any posted tasks for RenderProcess/ViewHost deletion run.
  base::RunLoop().RunUntilIdle();
}

WebContents* TestWebContentsFactory::CreateWebContents(
    BrowserContext* context) {
  web_contents_.push_back(
      WebContentsTester::CreateTestWebContents(context, nullptr));
  DCHECK(web_contents_.back());
  return web_contents_.back();
}

}  // namespace content
