blob: 1b232ddd03ba7b0cb6d8e065b7dd1821f04d0a82 [file] [log] [blame]
// Copyright 2019 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.
#ifndef WEBLAYER_BROWSER_PROFILE_IMPL_H_
#define WEBLAYER_BROWSER_PROFILE_IMPL_H_
#include "base/files/file_path.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "build/build_config.h"
#include "weblayer/browser/i18n_util.h"
#include "weblayer/public/profile.h"
#if defined(OS_ANDROID)
#include <jni.h>
#include "base/android/scoped_java_ref.h"
#endif
namespace content {
class BrowserContext;
}
namespace weblayer {
class ProfileImpl : public Profile {
public:
// Return the cache directory path for this BrowserContext. On some
// platforms, file in cache directory may be deleted by the operating
// system. So it is suitable for storing data that can be recreated such
// as caches.
// |context| must not be null.
static base::FilePath GetCachePath(content::BrowserContext* context);
explicit ProfileImpl(const std::string& name);
~ProfileImpl() override;
content::BrowserContext* GetBrowserContext();
// Profile implementation:
void ClearBrowsingData(const std::vector<BrowsingDataType>& data_types,
base::Time from_time,
base::Time to_time,
base::OnceClosure callback) override;
#if defined(OS_ANDROID)
ProfileImpl(JNIEnv* env, const base::android::JavaParamRef<jstring>& path);
void ClearBrowsingData(
JNIEnv* env,
const base::android::JavaParamRef<jintArray>& j_data_types,
const jlong j_from_time_millis,
const jlong j_to_time_millis,
const base::android::JavaRef<jobject>& j_callback);
#endif
private:
class BrowserContextImpl;
class DataClearer;
void ClearRendererCache();
// Callback when the system locale has been updated.
void OnLocaleChanged();
const std::string name_;
base::FilePath data_path_;
std::unique_ptr<BrowserContextImpl> browser_context_;
std::unique_ptr<i18n::LocaleChangeSubscription> locale_change_subscription_;
DISALLOW_COPY_AND_ASSIGN(ProfileImpl);
};
} // namespace weblayer
#endif // WEBLAYER_BROWSER_PROFILE_IMPL_H_