File: spellchecker_session_bridge_android.h

package info (click to toggle)
chromium 90.0.4430.212-1~deb10u1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 3,450,632 kB
  • sloc: cpp: 19,832,434; javascript: 2,948,838; ansic: 2,312,399; python: 1,464,622; xml: 584,121; java: 514,189; asm: 470,557; objc: 83,463; perl: 77,861; sh: 77,030; cs: 70,789; fortran: 24,137; tcl: 18,916; php: 18,872; makefile: 16,848; ruby: 16,721; pascal: 13,150; sql: 10,199; yacc: 7,507; lex: 1,313; lisp: 840; awk: 329; jsp: 39; sed: 19
file content (70 lines) | stat: -rw-r--r-- 2,471 bytes parent folder | download | duplicates (9)
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
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SPELLCHECK_BROWSER_SPELLCHECKER_SESSION_BRIDGE_ANDROID_H_
#define COMPONENTS_SPELLCHECK_BROWSER_SPELLCHECKER_SESSION_BRIDGE_ANDROID_H_

#include <jni.h>

#include <memory>

#include "base/android/scoped_java_ref.h"
#include "base/macros.h"
#include "base/strings/string16.h"
#include "components/spellcheck/common/spellcheck.mojom.h"

// A class used to interface between the Java class of the same name and the
// android SpellCheckHost.  This class receives text to be spellchecked, sends
// that text to the Java side via JNI to be spellchecked, and then sends those
// results to the renderer.
class SpellCheckerSessionBridge {
 public:
  SpellCheckerSessionBridge();
  ~SpellCheckerSessionBridge();

  using RequestTextCheckCallback =
      spellcheck::mojom::SpellCheckHost::RequestTextCheckCallback;

  // Receives text to be checked and sends it to Java to be spellchecked.
  void RequestTextCheck(const base::string16& text,
                        RequestTextCheckCallback callback);

  // Receives information from Java side about the typos in a given string
  // of text, processes these and sends them to the renderer.
  void ProcessSpellCheckResults(
      JNIEnv* env,
      const base::android::JavaParamRef<jobject>& jobj,
      const base::android::JavaParamRef<jintArray>& offset_array,
      const base::android::JavaParamRef<jintArray>& length_array,
      const base::android::JavaParamRef<jobjectArray>& suggestions_array);

  // Sets the handle to the Java SpellCheckerSessionBridge object to null,
  // marking the Java object for garbage collection.
  void DisconnectSession();

 private:
  class SpellingRequest {
   public:
    SpellingRequest(const base::string16& text,
                    RequestTextCheckCallback callback);
    ~SpellingRequest();

    base::string16 text_;
    RequestTextCheckCallback callback_;

   private:
    DISALLOW_COPY_AND_ASSIGN(SpellingRequest);
  };

  std::unique_ptr<SpellingRequest> active_request_;
  std::unique_ptr<SpellingRequest> pending_request_;

  base::android::ScopedJavaGlobalRef<jobject> java_object_;
  bool java_object_initialization_failed_;
  bool active_session_;

  DISALLOW_COPY_AND_ASSIGN(SpellCheckerSessionBridge);
};

#endif  // COMPONENTS_SPELLCHECK_BROWSER_SPELLCHECKER_SESSION_BRIDGE_ANDROID_H_