File: android_sms_app_setup_controller_impl.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (130 lines) | stat: -rw-r--r-- 5,213 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_ASH_ANDROID_SMS_ANDROID_SMS_APP_SETUP_CONTROLLER_IMPL_H_
#define CHROME_BROWSER_ASH_ANDROID_SMS_ANDROID_SMS_APP_SETUP_CONTROLLER_IMPL_H_

#include "base/gtest_prod_util.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "base/unguessable_token.h"
#include "chrome/browser/ash/android_sms/android_sms_app_setup_controller.h"
#include "chrome/browser/web_applications/externally_managed_app_manager.h"
#include "components/webapps/common/web_app_id.h"
#include "net/cookies/canonical_cookie.h"
#include "net/cookies/cookie_access_result.h"
#include "url/gurl.h"

class HostContentSettingsMap;
class Profile;

namespace network {
namespace mojom {
class CookieManager;
}  // namespace mojom
}  // namespace network

namespace ash {
namespace android_sms {

// Concrete AndroidSmsAppSetupController implementation.
class AndroidSmsAppSetupControllerImpl : public AndroidSmsAppSetupController {
 public:
  AndroidSmsAppSetupControllerImpl(
      Profile* profile,
      web_app::ExternallyManagedAppManager* externally_managed_app_manager,
      HostContentSettingsMap* host_content_settings_map);

  AndroidSmsAppSetupControllerImpl(const AndroidSmsAppSetupControllerImpl&) =
      delete;
  AndroidSmsAppSetupControllerImpl& operator=(
      const AndroidSmsAppSetupControllerImpl&) = delete;

  ~AndroidSmsAppSetupControllerImpl() override;

 private:
  friend class AndroidSmsAppSetupControllerImplTest;
  FRIEND_TEST_ALL_PREFIXES(AndroidSmsAppSetupControllerImplTest,
                           SetUpApp_Retry);

  static const base::TimeDelta kInstallRetryDelay;
  static const size_t kMaxInstallRetryCount;

  // Thin wrapper around static PWA functions which is stubbed out for tests.
  class PwaDelegate {
   public:
    PwaDelegate();
    virtual ~PwaDelegate();

    virtual std::optional<webapps::AppId> GetPwaForUrl(const GURL& install_url,
                                                       Profile* profile);
    virtual network::mojom::CookieManager* GetCookieManager(Profile* profile);
    virtual void RemovePwa(const webapps::AppId& app_id,
                           Profile* profile,
                           SuccessCallback callback);
  };

  // AndroidSmsAppSetupController:
  void SetUpApp(const GURL& app_url,
                const GURL& install_url,
                SuccessCallback callback) override;
  std::optional<webapps::AppId> GetPwa(const GURL& install_url) override;
  void DeleteRememberDeviceByDefaultCookie(const GURL& app_url,
                                           SuccessCallback callback) override;
  void RemoveApp(const GURL& app_url,
                 const GURL& install_url,
                 const GURL& migrated_to_app_url,
                 SuccessCallback callback) override;

  void OnAppRemoved(SuccessCallback callback,
                    const GURL& app_url,
                    const GURL& install_url,
                    const GURL& migrated_to_app_url,
                    bool uninstalled);
  void OnSetRememberDeviceByDefaultCookieResult(const GURL& app_url,
                                                const GURL& install_url,
                                                SuccessCallback callback,
                                                net::CookieAccessResult result);
  void OnSetMigrationCookieResult(const GURL& app_url,
                                  SuccessCallback callback,
                                  net::CookieAccessResult result);

  void TryInstallApp(const GURL& install_url,
                     const GURL& app_url,
                     size_t num_attempts_so_far,
                     SuccessCallback callback);

  void OnAppInstallResult(
      SuccessCallback callback,
      size_t num_attempts_so_far,
      const GURL& app_url,
      const GURL& install_url,
      web_app::ExternallyManagedAppManager::InstallResult result);
  void SetMigrationCookie(const GURL& app_url,
                          const GURL& migrated_to_app_url,
                          SuccessCallback callback);
  void OnDeleteRememberDeviceByDefaultCookieResult(const GURL& app_url,
                                                   SuccessCallback callback,
                                                   uint32_t num_deleted);
  void OnDeleteMigrationCookieResult(const GURL& app_url,
                                     const GURL& install_url,
                                     SuccessCallback callback,
                                     uint32_t num_deleted);

  void SetPwaDelegateForTesting(std::unique_ptr<PwaDelegate> test_pwa_delegate);

  raw_ptr<Profile> profile_;
  raw_ptr<web_app::ExternallyManagedAppManager> externally_managed_app_manager_;
  raw_ptr<HostContentSettingsMap> host_content_settings_map_;

  std::unique_ptr<PwaDelegate> pwa_delegate_;
  base::WeakPtrFactory<AndroidSmsAppSetupControllerImpl> weak_ptr_factory_{
      this};
};

}  // namespace android_sms
}  // namespace ash

#endif  // CHROME_BROWSER_ASH_ANDROID_SMS_ANDROID_SMS_APP_SETUP_CONTROLLER_IMPL_H_