File: plus_address_creation_view_android.h

package info (click to toggle)
chromium 139.0.7258.138-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,120,676 kB
  • sloc: cpp: 35,100,869; 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 (98 lines) | stat: -rw-r--r-- 4,026 bytes parent folder | download | duplicates (5)
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
// 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.

#ifndef CHROME_BROWSER_UI_PLUS_ADDRESSES_ANDROID_PLUS_ADDRESS_CREATION_VIEW_ANDROID_H_
#define CHROME_BROWSER_UI_PLUS_ADDRESSES_ANDROID_PLUS_ADDRESS_CREATION_VIEW_ANDROID_H_

#include <jni.h>

#include "components/plus_addresses/plus_address_types.h"
#include "ui/gfx/native_widget_types.h"

class TabModel;

namespace plus_addresses {

class PlusAddressCreationController;

struct PlusAddressCreationErrorStateInfo {
  PlusAddressCreationBottomSheetErrorType error_type;
  std::u16string title;
  std::u16string description;
  std::u16string ok_text;
  std::u16string cancel_text;

  PlusAddressCreationErrorStateInfo(
      PlusAddressCreationBottomSheetErrorType error_type,
      std::u16string title,
      std::u16string description,
      std::u16string ok_text,
      std::u16string cancel_text);
  ~PlusAddressCreationErrorStateInfo();

  PlusAddressCreationErrorStateInfo(const PlusAddressCreationErrorStateInfo&);
  PlusAddressCreationErrorStateInfo(PlusAddressCreationErrorStateInfo&&);
  PlusAddressCreationErrorStateInfo& operator=(
      const PlusAddressCreationErrorStateInfo&);
  PlusAddressCreationErrorStateInfo& operator=(
      PlusAddressCreationErrorStateInfo&&);
};

// A class intended as a thin wrapper around a Java object, which calls out to
// the `PlusAddressCreationControllerAndroid`. This shields the controller from
// JNI complications, allowing a consistent interface for clients (e.g.,
// autofill). Note that it is likely that either the controller will morph to do
// what this class does now, or a similar wrapper will be created for desktop,
// with a single controller implementation.
class PlusAddressCreationViewAndroid {
 public:
  explicit PlusAddressCreationViewAndroid(
      base::WeakPtr<PlusAddressCreationController> controller);
  ~PlusAddressCreationViewAndroid();

  void ShowInit(gfx::NativeView native_view,
                TabModel* tab_model,
                const std::string& primary_email_address,
                const std::u16string& origin_for_display,
                bool refresh_supported,
                bool has_accepted_notice);
  void TryAgainToReservePlusAddress(
      JNIEnv* env,
      const base::android::JavaParamRef<jobject>& obj);
  void OnRefreshClicked(JNIEnv* env,
                        const base::android::JavaParamRef<jobject>& obj);
  void OnConfirmRequested(JNIEnv* env,
                          const base::android::JavaParamRef<jobject>& obj);
  void OnCanceled(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
  void PromptDismissed(JNIEnv* env,
                       const base::android::JavaParamRef<jobject>& obj);

  // Updates the bottomsheet to either show an error message or show the
  // plus address in the bottomsheet and enable the OK button.
  void ShowReservedProfile(const PlusProfile& reserved_profile);
  // Either shows an error message on the bottomsheet or closes the bottomsheet.
  void FinishConfirm();
  // Shows the error state ui to the user.
  void ShowError(PlusAddressCreationErrorStateInfo error_info);
  // Hides the refresh icon in case no more plus address refreshes are available
  // to the user.
  void HideRefreshButton();

 private:
  // Returns either the fully initialized java counterpart of this bridge or
  // a is_null() reference if the creation failed. By using this method, the
  // bridge will try to recreate the java object if it failed previously (e.g.
  // because there was no native window available).
  base::android::ScopedJavaGlobalRef<jobject> GetOrCreateJavaObject(
      gfx::NativeView native_view,
      TabModel* tab_model);

  // The corresponding java object.
  base::android::ScopedJavaGlobalRef<jobject> java_object_;
  base::WeakPtr<PlusAddressCreationController> controller_;
};

}  // namespace plus_addresses

#endif  // CHROME_BROWSER_UI_PLUS_ADDRESSES_ANDROID_PLUS_ADDRESS_CREATION_VIEW_ANDROID_H_