File: translate_bubble_model.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-- 4,992 bytes parent folder | download | duplicates (7)
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 2013 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_TRANSLATE_TRANSLATE_BUBBLE_MODEL_H_
#define CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_BUBBLE_MODEL_H_

#include <string>

#include "chrome/browser/ui/translate/translate_language_list_model.h"
#include "components/translate/core/browser/translate_metrics_logger_impl.h"
#include "components/translate/core/common/translate_errors.h"

// The model for the Full Page Translate bubble UX. This manages the user's
// manipulation of the bubble and offers the data to show on the bubble.
class TranslateBubbleModel : public TranslateLanguageListModel {
 public:
  enum ViewState {
    // The view state before translating.
    VIEW_STATE_BEFORE_TRANSLATE,

    // The view state during translating.
    VIEW_STATE_TRANSLATING,

    // The view state after translating.
    VIEW_STATE_AFTER_TRANSLATE,

    // The view state when an error of Translate happens.
    VIEW_STATE_ERROR,

    // The view state for when the source language combobox is shown. This view
    // appears when the user selects "Page is not in {source language}" under
    // the options menu.
    VIEW_STATE_SOURCE_LANGUAGE,

    // The view state for when the target language combobox is shown. This view
    // appears when the user selects "Choose another language..." under the
    // options menu.
    VIEW_STATE_TARGET_LANGUAGE
  };

  ~TranslateBubbleModel() override = default;

  // Returns the current view state.
  virtual ViewState GetViewState() const = 0;

  // Transitions the view state.
  virtual void SetViewState(ViewState view_state) = 0;

  // Shows an error.
  virtual void ShowError(translate::TranslateErrors error_type) = 0;

  // TranslateLanguageListModel:
  int GetNumberOfSourceLanguages() const override = 0;
  int GetNumberOfTargetLanguages() const override = 0;
  std::u16string GetSourceLanguageNameAt(int index) const override = 0;
  std::u16string GetTargetLanguageNameAt(int index) const override = 0;
  int GetSourceLanguageIndex() const override = 0;
  void UpdateSourceLanguageIndex(int index) override = 0;
  int GetTargetLanguageIndex() const override = 0;
  void UpdateTargetLanguageIndex(int index) override = 0;

  // Returns the source language code.
  virtual std::string GetSourceLanguageCode() const = 0;

  // Invoked when the user actively declines to translate the page - e.g.
  // selects 'nope', 'never translate this language', etc.
  // Should not be invoked on a passive decline - i.e. if the bubble is closed
  // due to focus loss.
  virtual void DeclineTranslation() = 0;

  // Returns if the user doesn't want to have the page translated in the
  // current page's language.
  virtual bool ShouldNeverTranslateLanguage() = 0;

  // Sets the value if the user doesn't want to have the page translated in the
  // current page's language.
  virtual void SetNeverTranslateLanguage(bool value) = 0;

  // Returns if the user doesn't want to have the page translated the
  // current page's domain.
  virtual bool ShouldNeverTranslateSite() = 0;

  // Sets the value if the user doesn't want to have the page translated the
  // current page's domain.
  virtual void SetNeverTranslateSite(bool value) = 0;

  // Returns true if the webpage in the current source language should be
  // translated into the current target language automatically.
  virtual bool ShouldAlwaysTranslate() const = 0;

  // Returns true if the Always Translate checkbox should be checked by default.
  virtual bool ShouldAlwaysTranslateBeCheckedByDefault() const = 0;

  // Returns true if the Always Translate checkbox should be shown on the
  // initial translation prompt, when we think the user wants that
  // functionality.
  virtual bool ShouldShowAlwaysTranslateShortcut() const = 0;

  // Sets the value if the webpage in the current source language should be
  // translated into the current target language automatically.
  virtual void SetAlwaysTranslate(bool value) = 0;

  // Starts translating the current page.
  virtual void Translate() = 0;

  // Reverts translation.
  virtual void RevertTranslation() = 0;

  // Called when the bubble is closed. Allows final cleanup
  // and notification of delegates.
  virtual void OnBubbleClosing() = 0;

  // Returns true if the page is translated in the currently selected source
  // and target language.
  virtual bool IsPageTranslatedInCurrentLanguages() const = 0;

  // True if the site of the current page can be blocklisted.
  virtual bool CanAddSiteToNeverPromptList() = 0;

  // Reports a high level UI interaction to the centralzied
  // TranslateMetricsLogger.
  virtual void ReportUIInteraction(translate::UIInteraction ui_interaction) = 0;

  // Updates TranslateMetricsLogger state of whether Translate UI is currently
  // shown.
  virtual void ReportUIChange(bool is_ui_shown) = 0;
};

#endif  // CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_BUBBLE_MODEL_H_