1// Copyright 2014 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 "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
6
7BrowsingDataRemoverCompletionObserver::BrowsingDataRemoverCompletionObserver(
8    BrowsingDataRemover* remover)
9    : message_loop_runner_(new content::MessageLoopRunner) {
10  remover->AddObserver(this);
11}
12
13BrowsingDataRemoverCompletionObserver::
14    ~BrowsingDataRemoverCompletionObserver() {}
15
16void BrowsingDataRemoverCompletionObserver::BlockUntilCompletion() {
17  message_loop_runner_->Run();
18}
19
20void BrowsingDataRemoverCompletionObserver::OnBrowsingDataRemoverDone() {
21  message_loop_runner_->Quit();
22}
23
24BrowsingDataRemoverCompletionInhibitor::BrowsingDataRemoverCompletionInhibitor()
25    : message_loop_runner_(new content::MessageLoopRunner) {
26  BrowsingDataRemover::set_completion_inhibitor_for_testing(this);
27}
28
29BrowsingDataRemoverCompletionInhibitor::
30    ~BrowsingDataRemoverCompletionInhibitor() {
31  BrowsingDataRemover::set_completion_inhibitor_for_testing(NULL);
32}
33
34void BrowsingDataRemoverCompletionInhibitor::BlockUntilNearCompletion() {
35  message_loop_runner_->Run();
36  message_loop_runner_ = new content::MessageLoopRunner;
37}
38
39void BrowsingDataRemoverCompletionInhibitor::ContinueToCompletion() {
40  DCHECK(!continue_to_completion_callback_.is_null());
41  continue_to_completion_callback_.Run();
42  continue_to_completion_callback_.Reset();
43}
44
45void BrowsingDataRemoverCompletionInhibitor::OnBrowsingDataRemoverWouldComplete(
46    BrowsingDataRemover* remover,
47    const base::Closure& continue_to_completion) {
48  DCHECK(continue_to_completion_callback_.is_null());
49  continue_to_completion_callback_ = continue_to_completion;
50  message_loop_runner_->Quit();
51}
52