chromium/chromeos/ash/components/browser_context_helper/browser_context_flusher.cc

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

#include "chromeos/ash/components/browser_context_helper/browser_context_flusher.h"

#include "base/check.h"
#include "chromeos/ash/components/browser_context_helper/file_flusher.h"
#include "content/public/browser/browser_context.h"

namespace ash {
namespace {

BrowserContextFlusher* instance = nullptr;

}  // namespace

BrowserContextFlusher::BrowserContextFlusher() {
  DCHECK(!instance);
  instance = this;
}

BrowserContextFlusher::~BrowserContextFlusher() {
  DCHECK_EQ(instance, this);
  instance = nullptr;
}

// static
BrowserContextFlusher* BrowserContextFlusher::Get() {
  return instance;
}

void BrowserContextFlusher::ScheduleFlush(
    content::BrowserContext* browser_context) {
  if (!flusher_) {
    flusher_ = std::make_unique<FileFlusher>();
  }

  // Flushes files directly under browser_context's path since these are the
  // critical ones.
  flusher_->RequestFlush(browser_context->GetPath(), /*recursive=*/false,
                         base::OnceClosure());
}

}  // namespace ash