Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(444)

Side by Side Diff: remoting/client/jni/chromoting_jni_runtime.h

Issue 2007403002: [Android Client] Move session-scoped native interface into JniClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merged with latest changes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef REMOTING_CLIENT_JNI_CHROMOTING_JNI_RUNTIME_H_ 5 #ifndef REMOTING_CLIENT_JNI_CHROMOTING_JNI_RUNTIME_H_
6 #define REMOTING_CLIENT_JNI_CHROMOTING_JNI_RUNTIME_H_ 6 #define REMOTING_CLIENT_JNI_CHROMOTING_JNI_RUNTIME_H_
7 7
8 #include <jni.h> 8 #include <jni.h>
9 #include <string> 9 #include <string>
10 10
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 } 52 }
53 53
54 // The runtime handles authentication and the caller should not call SetAuth*. 54 // The runtime handles authentication and the caller should not call SetAuth*.
55 // The runtime itself will not send out any logs. Used on the network thread. 55 // The runtime itself will not send out any logs. Used on the network thread.
56 ClientTelemetryLogger* logger() { 56 ClientTelemetryLogger* logger() {
57 DCHECK(runtime_->network_task_runner()->BelongsToCurrentThread()); 57 DCHECK(runtime_->network_task_runner()->BelongsToCurrentThread());
58 DCHECK(logger_); 58 DCHECK(logger_);
59 return logger_.get(); 59 return logger_.get();
60 } 60 }
61 61
62 // Initiates a connection with the specified host. Only call when a host
63 // connection is active (i.e. between a call to Connect() and the
64 // corresponding call to Disconnect()). To skip the attempt at pair-based
65 // authentication, leave |pairing_id| and |pairing_secret| as empty strings.
66 void ConnectToHost(const std::string& username,
67 const std::string& auth_token,
68 const std::string& host_jid,
69 const std::string& host_id,
70 const std::string& host_pubkey,
71 const std::string& pairing_id,
72 const std::string& pairing_secret,
73 const std::string& capabilities,
74 const std::string& flags);
75
76 // Terminates any ongoing connection attempt and cleans up by nullifying
77 // |session_|. This is a no-op unless |session| is currently non-null.
78 void DisconnectFromHost();
79
80 // Returns the client for the currently-active session. Do not call if
81 // |session| is null.
82 scoped_refptr<ChromotingJniInstance> session() {
83 DCHECK(session_.get());
84 return session_;
85 }
86
87 // Notifies Java code of the current connection status. Call on UI thread.
88 void OnConnectionState(protocol::ConnectionToHost::State state,
89 protocol::ErrorCode error);
90
91 // Pops up a dialog box asking the user to enter a PIN. Call on UI thread.
92 void DisplayAuthenticationPrompt(bool pairing_supported);
93
94 // Saves new pairing credentials to permanent storage. Call on UI thread.
95 void CommitPairingCredentials(const std::string& host,
96 const std::string& id,
97 const std::string& secret);
98
99 // Fetch OAuth token for the telemetry logger. Call on UI thread. 62 // Fetch OAuth token for the telemetry logger. Call on UI thread.
100 void FetchAuthToken(); 63 void FetchAuthToken();
101 64
102 // Pops up a third party login page to fetch token required for
103 // authentication. Call on UI thread.
104 void FetchThirdPartyToken(const std::string& token_url,
105 const std::string& client_id,
106 const std::string& scope);
107
108 // Pass on the set of negotiated capabilities to the client.
109 void SetCapabilities(const std::string& capabilities);
110
111 // Passes on the deconstructed ExtensionMessage to the client to handle
112 // appropriately.
113 void HandleExtensionMessage(const std::string& type,
114 const std::string& message);
115
116 // Creates a new Bitmap object to store a video frame.
117 base::android::ScopedJavaLocalRef<jobject> NewBitmap(int width, int height);
118
119 // Updates video frame bitmap. |bitmap| must be an instance of
120 // android.graphics.Bitmap. Call on the display thread.
121 void UpdateFrameBitmap(jobject bitmap);
122
123 // Updates cursor shape. Call on display thread.
124 void UpdateCursorShape(const protocol::CursorShapeInfo& cursor_shape);
125
126 // Draws the latest image buffer onto the canvas. Call on the display thread.
127 void RedrawCanvas();
128
129 private: 65 private:
130 ChromotingJniRuntime(); 66 ChromotingJniRuntime();
131 67
132 // Forces a DisconnectFromHost() in case there is any active or failed 68 // Forces a DisconnectFromHost() in case there is any active or failed
133 // connection, then proceeds to tear down the Chromium dependencies on which 69 // connection, then proceeds to tear down the Chromium dependencies on which
134 // all sessions depended. Because destruction only occurs at application exit 70 // all sessions depended. Because destruction only occurs at application exit
135 // after all connections have terminated, it is safe to make unretained 71 // after all connections have terminated, it is safe to make unretained
136 // cross-thread calls on the class. 72 // cross-thread calls on the class.
137 virtual ~ChromotingJniRuntime(); 73 virtual ~ChromotingJniRuntime();
138 74
139 // Detaches JVM from the current thread, then signals. Doesn't own |waiter|. 75 // Detaches JVM from the current thread, then signals. Doesn't own |waiter|.
140 void DetachFromVmAndSignal(base::WaitableEvent* waiter); 76 void DetachFromVmAndSignal(base::WaitableEvent* waiter);
141 77
142 // Starts the logger on the network thread. 78 // Starts the logger on the network thread.
143 void StartLoggerOnNetworkThread(); 79 void StartLoggerOnNetworkThread();
144 80
145 // Chromium code's connection to the app message loop. Once created the 81 // Chromium code's connection to the app message loop. Once created the
146 // MessageLoop will live for the life of the program. 82 // MessageLoop will live for the life of the program.
147 std::unique_ptr<base::MessageLoopForUI> ui_loop_; 83 std::unique_ptr<base::MessageLoopForUI> ui_loop_;
148 84
149 // Contains threads. 85 // Contains threads.
150 // 86 //
151 std::unique_ptr<ChromotingClientRuntime> runtime_; 87 std::unique_ptr<ChromotingClientRuntime> runtime_;
152 88
153 // Contains all connection-specific state.
154 scoped_refptr<ChromotingJniInstance> session_;
155
156 // For logging session stage changes and stats. 89 // For logging session stage changes and stats.
157 std::unique_ptr<ClientTelemetryLogger> logger_; 90 std::unique_ptr<ClientTelemetryLogger> logger_;
158 91
159 friend struct base::DefaultSingletonTraits<ChromotingJniRuntime>; 92 friend struct base::DefaultSingletonTraits<ChromotingJniRuntime>;
160 93
161 DISALLOW_COPY_AND_ASSIGN(ChromotingJniRuntime); 94 DISALLOW_COPY_AND_ASSIGN(ChromotingJniRuntime);
162 }; 95 };
163 96
164 } // namespace remoting 97 } // namespace remoting
165 98
166 #endif 99 #endif
OLDNEW
« no previous file with comments | « remoting/client/jni/chromoting_jni_instance.cc ('k') | remoting/client/jni/chromoting_jni_runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698