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

Side by Side Diff: blimp/client/app/android/blimp_client_session_android.cc

Issue 2542083004: Make //blimp/client/app a real embedder of //blimp/client/public (Closed)
Patch Set: Fix findbugs issue Created 4 years 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
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "blimp/client/app/android/blimp_client_session_android.h"
6
7 #include <string>
8
9 #include "base/android/jni_string.h"
10 #include "base/android/scoped_java_ref.h"
11 #include "base/threading/thread_task_runner_handle.h"
12 #include "blimp/client/core/contents/tab_control_feature.h"
13 #include "blimp/client/core/session/assignment_source.h"
14 #include "blimp/client/core/settings/settings_feature.h"
15 #include "blimp/net/blimp_stats.h"
16 #include "components/version_info/version_info.h"
17 #include "jni/BlimpClientSession_jni.h"
18 #include "net/base/net_errors.h"
19 #include "ui/android/window_android.h"
20
21 namespace blimp {
22 namespace client {
23 namespace {
24 const int kDummyTabId = 0;
25
26 GURL CreateAssignerGURL(const std::string& assigner_url) {
27 GURL parsed_url(assigner_url);
28 CHECK(parsed_url.is_valid());
29 return parsed_url;
30 }
31
32 } // namespace
33
34 static jlong Init(JNIEnv* env,
35 const base::android::JavaParamRef<jobject>& jobj,
36 const base::android::JavaParamRef<jstring>& jassigner_url,
37 jlong window_android_ptr) {
38 return reinterpret_cast<intptr_t>(new BlimpClientSessionAndroid(
39 env, jobj, jassigner_url, window_android_ptr));
40 }
41
42 // static
43 bool BlimpClientSessionAndroid::RegisterJni(JNIEnv* env) {
44 return RegisterNativesImpl(env);
45 }
46
47 // static
48 BlimpClientSessionAndroid* BlimpClientSessionAndroid::FromJavaObject(
49 JNIEnv* env,
50 const base::android::JavaRef<jobject>& jobj) {
51 return reinterpret_cast<BlimpClientSessionAndroid*>(
52 Java_BlimpClientSession_getNativePtr(env, jobj));
53 }
54
55 BlimpClientSessionAndroid::BlimpClientSessionAndroid(
56 JNIEnv* env,
57 const base::android::JavaParamRef<jobject>& jobj,
58 const base::android::JavaParamRef<jstring>& jassigner_url,
59 jlong window_android_ptr)
60 : BlimpClientSession(CreateAssignerGURL(
61 base::android::ConvertJavaStringToUTF8(jassigner_url))) {
62 java_obj_.Reset(env, jobj);
63
64 ui::WindowAndroid* window =
65 reinterpret_cast<ui::WindowAndroid*>(window_android_ptr);
66 ime_dialog_.reset(new ImeHelperDialog(window));
67 GetImeFeature()->set_delegate(ime_dialog_.get());
68
69 // Create a single tab's WebContents.
70 // TODO(kmarshall): Remove this once we add tab-literacy to Blimp.
71 GetTabControlFeature()->CreateTab(kDummyTabId);
72 }
73
74 void BlimpClientSessionAndroid::Connect(
75 JNIEnv* env,
76 const base::android::JavaParamRef<jobject>& jobj,
77 const base::android::JavaParamRef<jstring>& jclient_auth_token) {
78 std::string client_auth_token;
79 if (jclient_auth_token.obj()) {
80 client_auth_token =
81 base::android::ConvertJavaStringToUTF8(env, jclient_auth_token);
82 }
83
84 BlimpClientSession::Connect(client_auth_token);
85 }
86
87 BlimpClientSessionAndroid::~BlimpClientSessionAndroid() {
88 GetImeFeature()->set_delegate(nullptr);
89 }
90
91 void BlimpClientSessionAndroid::OnConnected() {
92 JNIEnv* env = base::android::AttachCurrentThread();
93 Java_BlimpClientSession_onConnected(env, java_obj_);
94 }
95
96 void BlimpClientSessionAndroid::OnDisconnected(int result) {
97 JNIEnv* env = base::android::AttachCurrentThread();
98 Java_BlimpClientSession_onDisconnected(
99 env, java_obj_, base::android::ConvertUTF8ToJavaString(
100 env, net::ErrorToShortString(result)));
101 }
102
103 void BlimpClientSessionAndroid::Destroy(
104 JNIEnv* env,
105 const base::android::JavaParamRef<jobject>& jobj) {
106 delete this;
107 }
108
109 void BlimpClientSessionAndroid::OnAssignmentConnectionAttempted(
110 AssignmentRequestResult result,
111 const Assignment& assignment) {
112 // Notify the front end of the assignment result.
113 std::string engine_ip = IPAddressToStringWithPort(
114 assignment.engine_endpoint.address(), assignment.engine_endpoint.port());
115 JNIEnv* env = base::android::AttachCurrentThread();
116 Java_BlimpClientSession_onAssignmentReceived(
117 env, java_obj_, static_cast<jint>(result),
118 base::android::ConvertUTF8ToJavaString(env, engine_ip),
119 base::android::ConvertUTF8ToJavaString(env,
120 version_info::GetVersionNumber()));
121
122 BlimpClientSession::OnAssignmentConnectionAttempted(result, assignment);
123 }
124
125 base::android::ScopedJavaLocalRef<jintArray>
126 BlimpClientSessionAndroid::GetDebugInfo(
127 JNIEnv* env,
128 const base::android::JavaParamRef<jobject>& jobj) {
129 BlimpStats* stats = BlimpStats::GetInstance();
130 int metrics[] = {stats->Get(BlimpStats::BYTES_RECEIVED),
131 stats->Get(BlimpStats::BYTES_SENT),
132 stats->Get(BlimpStats::COMMIT)};
133 return base::android::ToJavaIntArray(env, metrics, arraysize(metrics));
134 }
135
136 } // namespace client
137 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/client/app/android/blimp_client_session_android.h ('k') | blimp/client/app/android/blimp_contents_display.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698