File: layer_title_cache.h

package info (click to toggle)
chromium 135.0.7049.95-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 5,959,392 kB
  • sloc: cpp: 34,198,526; ansic: 7,100,035; javascript: 3,985,800; python: 1,395,489; asm: 896,754; xml: 722,891; pascal: 180,504; sh: 94,909; perl: 88,388; objc: 79,739; sql: 53,020; cs: 41,358; fortran: 24,137; makefile: 22,501; php: 13,699; tcl: 10,142; yacc: 8,822; ruby: 7,350; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; awk: 197; sed: 36
file content (130 lines) | stat: -rw-r--r-- 4,219 bytes parent folder | download
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 2014 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_ANDROID_COMPOSITOR_LAYER_TITLE_CACHE_H_
#define CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_TITLE_CACHE_H_

#include <jni.h>

#include "base/android/jni_android.h"
#include "base/android/jni_weak_ref.h"
#include "base/containers/id_map.h"
#include "base/functional/bind.h"
#include "base/memory/raw_ptr.h"
#include "cc/resources/ui_resource_client.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/geometry/transform.h"

namespace cc::slim {
class Layer;
}

namespace ui {
class ResourceManager;
}

namespace android {

class DecorationTabTitle;
class DecorationIconTitle;

// A native component of the Java LayerTitleCache class.  This class
// will build and maintain layers that represent the cached titles in
// the Java class.
class LayerTitleCache {
 public:
  static LayerTitleCache* FromJavaObject(
      const base::android::JavaRef<jobject>& jobj);

  LayerTitleCache(JNIEnv* env,
                  const jni_zero::JavaRef<jobject>& obj,
                  jint fade_width,
                  jint icon_start_padding,
                  jint icon_end_padding,
                  jint spinner_resource_id,
                  jint spinner_incognito_resource_id,
                  jint bubble_inner_dimension,
                  jint bubble_outer_dimension,
                  jint bubble_offset,
                  jint bubble_inner_tint,
                  jint bubble_outer_tint,
                  ui::ResourceManager* resource_manager);

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

  void Destroy(JNIEnv* env);

  // Called from Java, updates a native cc::slim::Layer based on the new texture
  // information.
  void UpdateLayer(JNIEnv* env,
                   const base::android::JavaParamRef<jobject>& obj,
                   jint tab_id,
                   jint title_resource_id,
                   jint icon_resource_id,
                   bool is_incognito,
                   bool is_rtl,
                   bool show_bubble);

  // Called from Java, updates a native cc::slim::Layer based on the new texture
  // information.
  void UpdateGroupLayer(JNIEnv* env,
                        const base::android::JavaParamRef<jobject>& obj,
                        jint group_root_id,
                        jint title_resource_id,
                        jint avatar_resource_id,
                        jint avatar_padding,
                        bool is_incognito,
                        bool is_rtl);

  // Called from Java, updates icon.
  void UpdateIcon(JNIEnv* env,
                  const base::android::JavaParamRef<jobject>& obj,
                  jint tab_id,
                  jint icon_resource_id,
                  bool show_bubble);

  // Called from Java, updates tab bubble if a shared tab is updated by
  // collaborators.
  void UpdateTabBubble(JNIEnv* env,
                       const base::android::JavaParamRef<jobject>& obj,
                       jint tab_id,
                       bool show_bubble);

  // Returns the layer that represents the title of tab of tab_id.
  // Returns NULL if no layer can be found.
  DecorationTabTitle* GetTitleLayer(int tab_id);

  // Returns the layer that represents the title of group of group_root_id.
  // Returns NULL if no layer can be found.
  DecorationIconTitle* GetGroupTitleLayer(int group_root_id, bool incognito);

 private:
  const int kEmptyWidth = 0;

  virtual ~LayerTitleCache();

  base::IDMap<std::unique_ptr<DecorationTabTitle>> layer_cache_;
  base::IDMap<std::unique_ptr<DecorationIconTitle>> group_layer_cache_;

  JavaObjectWeakGlobalRef weak_java_title_cache_;
  int fade_width_;
  int icon_start_padding_;
  int icon_end_padding_;

  int spinner_resource_id_;
  int spinner_incognito_resource_id_;

  int bubble_inner_dimension_;
  int bubble_outer_dimension_;
  int bubble_offset_;
  int bubble_inner_tint_;
  int bubble_outer_tint_;

  raw_ptr<ui::ResourceManager> resource_manager_;
};

}  // namespace android

#endif  // CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_TITLE_CACHE_H_