blob: 7c513cd20d3c707b2b81f46c3f9b4d5f831807b6 [file] [log] [blame]
Clark DuVall54aecd62020-03-30 20:29:571// Copyright 2020 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#ifndef WEBLAYER_BROWSER_COOKIE_MANAGER_IMPL_H_
6#define WEBLAYER_BROWSER_COOKIE_MANAGER_IMPL_H_
7
Clark DuVall1eb61882020-04-01 01:38:268#include "base/memory/weak_ptr.h"
Clark DuVall54aecd62020-03-30 20:29:579#include "build/build_config.h"
Clark DuVall1eb61882020-04-01 01:38:2610#include "mojo/public/cpp/bindings/receiver_set.h"
11#include "services/network/public/mojom/cookie_manager.mojom.h"
Clark DuVall54aecd62020-03-30 20:29:5712#include "weblayer/public/cookie_manager.h"
13
14#if defined(OS_ANDROID)
15#include <jni.h>
16#include "base/android/scoped_java_ref.h"
17#endif
18
19namespace content {
20class BrowserContext;
21}
22
23namespace weblayer {
24
25class CookieManagerImpl : public CookieManager {
26 public:
27 explicit CookieManagerImpl(content::BrowserContext* browser_context);
Clark DuVall1eb61882020-04-01 01:38:2628 ~CookieManagerImpl() override;
Clark DuVall54aecd62020-03-30 20:29:5729
30 CookieManagerImpl(const CookieManagerImpl&) = delete;
31 CookieManagerImpl& operator=(const CookieManagerImpl&) = delete;
32
33 // CookieManager implementation:
34 void SetCookie(const GURL& url,
35 const std::string& value,
36 SetCookieCallback callback) override;
37 void GetCookie(const GURL& url, GetCookieCallback callback) override;
Peter Kasting7ba9440c2020-11-22 01:49:0238 base::CallbackListSubscription AddCookieChangedCallback(
Clark DuVall1eb61882020-04-01 01:38:2639 const GURL& url,
40 const std::string* name,
41 CookieChangedCallback callback) override;
Clark DuVall54aecd62020-03-30 20:29:5742
43#if defined(OS_ANDROID)
44 bool SetCookie(JNIEnv* env,
45 const base::android::JavaParamRef<jstring>& url,
46 const base::android::JavaParamRef<jstring>& value,
47 const base::android::JavaParamRef<jobject>& callback);
48 void GetCookie(JNIEnv* env,
49 const base::android::JavaParamRef<jstring>& url,
50 const base::android::JavaParamRef<jobject>& callback);
Clark DuVall1eb61882020-04-01 01:38:2651 int AddCookieChangedCallback(
52 JNIEnv* env,
53 const base::android::JavaParamRef<jstring>& url,
54 const base::android::JavaParamRef<jstring>& name,
55 const base::android::JavaParamRef<jobject>& callback);
56 void RemoveCookieChangedCallback(JNIEnv* env, int id);
Clark DuVall54aecd62020-03-30 20:29:5757#endif
58
59 private:
60 bool SetCookieInternal(const GURL& url,
61 const std::string& value,
62 SetCookieCallback callback);
Clark DuVall1eb61882020-04-01 01:38:2663 int AddCookieChangedCallbackInternal(const GURL& url,
64 const std::string* name,
65 CookieChangedCallback callback);
66 void RemoveCookieChangedCallbackInternal(int id);
Clark DuVall54aecd62020-03-30 20:29:5767
68 content::BrowserContext* browser_context_;
Clark DuVall1eb61882020-04-01 01:38:2669 mojo::ReceiverSet<network::mojom::CookieChangeListener,
70 std::unique_ptr<network::mojom::CookieChangeListener>>
71 cookie_change_receivers_;
72 base::WeakPtrFactory<CookieManagerImpl> weak_factory_{this};
Clark DuVall54aecd62020-03-30 20:29:5773};
74
75} // namespace weblayer
76
77#endif // WEBLAYER_BROWSER_COOKIE_MANAGER_IMPL_H_