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

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

Issue 2292343002: Hooking up Blimp IME with BlimpContents (Closed)
Patch Set: Fixed linux client Created 4 years, 3 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 2015 The Chromium Authors. All rights reserved. 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 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 #include "blimp/client/app/android/blimp_client_session_android.h" 5 #include "blimp/client/app/android/blimp_client_session_android.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "base/android/scoped_java_ref.h" 10 #include "base/android/scoped_java_ref.h"
11 #include "base/threading/thread_task_runner_handle.h" 11 #include "base/threading/thread_task_runner_handle.h"
12 #include "blimp/client/app/user_agent.h" 12 #include "blimp/client/app/user_agent.h"
13 #include "blimp/client/core/contents/tab_control_feature.h" 13 #include "blimp/client/core/contents/tab_control_feature.h"
14 #include "blimp/client/core/session/assignment_source.h" 14 #include "blimp/client/core/session/assignment_source.h"
15 #include "blimp/client/core/settings/settings_feature.h" 15 #include "blimp/client/core/settings/settings_feature.h"
16 #include "blimp/net/blimp_stats.h" 16 #include "blimp/net/blimp_stats.h"
17 #include "components/version_info/version_info.h" 17 #include "components/version_info/version_info.h"
18 #include "jni/BlimpClientSession_jni.h" 18 #include "jni/BlimpClientSession_jni.h"
19 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
20 #include "ui/android/window_android.h"
20 21
21 using base::android::JavaParamRef; 22 using base::android::JavaParamRef;
22 23
23 namespace blimp { 24 namespace blimp {
24 namespace client { 25 namespace client {
25 namespace { 26 namespace {
26 const int kDummyTabId = 0; 27 const int kDummyTabId = 0;
27 28
28 GURL CreateAssignerGURL(const std::string& assigner_url) { 29 GURL CreateAssignerGURL(const std::string& assigner_url) {
29 GURL parsed_url(assigner_url); 30 GURL parsed_url(assigner_url);
30 CHECK(parsed_url.is_valid()); 31 CHECK(parsed_url.is_valid());
31 return parsed_url; 32 return parsed_url;
32 } 33 }
33 34
34 } // namespace 35 } // namespace
35 36
36 static jlong Init(JNIEnv* env, 37 static jlong Init(JNIEnv* env,
37 const JavaParamRef<jobject>& jobj, 38 const JavaParamRef<jobject>& jobj,
38 const base::android::JavaParamRef<jstring>& jassigner_url) { 39 const base::android::JavaParamRef<jstring>& jassigner_url,
39 return reinterpret_cast<intptr_t>( 40 jlong window_android_ptr) {
40 new BlimpClientSessionAndroid(env, jobj, jassigner_url)); 41 return reinterpret_cast<intptr_t>(new BlimpClientSessionAndroid(
42 env, jobj, jassigner_url, window_android_ptr));
41 } 43 }
42 44
43 // static 45 // static
44 bool BlimpClientSessionAndroid::RegisterJni(JNIEnv* env) { 46 bool BlimpClientSessionAndroid::RegisterJni(JNIEnv* env) {
45 return RegisterNativesImpl(env); 47 return RegisterNativesImpl(env);
46 } 48 }
47 49
48 // static 50 // static
49 BlimpClientSessionAndroid* BlimpClientSessionAndroid::FromJavaObject( 51 BlimpClientSessionAndroid* BlimpClientSessionAndroid::FromJavaObject(
50 JNIEnv* env, 52 JNIEnv* env,
51 jobject jobj) { 53 jobject jobj) {
52 return reinterpret_cast<BlimpClientSessionAndroid*>( 54 return reinterpret_cast<BlimpClientSessionAndroid*>(
53 Java_BlimpClientSession_getNativePtr(env, jobj)); 55 Java_BlimpClientSession_getNativePtr(env, jobj));
54 } 56 }
55 57
56 BlimpClientSessionAndroid::BlimpClientSessionAndroid( 58 BlimpClientSessionAndroid::BlimpClientSessionAndroid(
57 JNIEnv* env, 59 JNIEnv* env,
58 const base::android::JavaParamRef<jobject>& jobj, 60 const base::android::JavaParamRef<jobject>& jobj,
59 const base::android::JavaParamRef<jstring>& jassigner_url) 61 const base::android::JavaParamRef<jstring>& jassigner_url,
62 jlong window_android_ptr)
60 : BlimpClientSession(CreateAssignerGURL( 63 : BlimpClientSession(CreateAssignerGURL(
61 base::android::ConvertJavaStringToUTF8(jassigner_url))) { 64 base::android::ConvertJavaStringToUTF8(jassigner_url))) {
62 java_obj_.Reset(env, jobj); 65 java_obj_.Reset(env, jobj);
63 66
67 ui::WindowAndroid* window =
68 reinterpret_cast<ui::WindowAndroid*>(window_android_ptr);
69 ime_dialog_.reset(new ImeHelperDialog(window));
70 GetImeFeature()->set_delegate(ime_dialog_.get());
71
64 // Send OS info before creating any tab. 72 // Send OS info before creating any tab.
65 GetSettingsFeature()->SendUserAgentOSVersionInfo( 73 GetSettingsFeature()->SendUserAgentOSVersionInfo(
66 GetOSVersionInfoForUserAgent()); 74 GetOSVersionInfoForUserAgent());
67 75
68 // Create a single tab's WebContents. 76 // Create a single tab's WebContents.
69 // TODO(kmarshall): Remove this once we add tab-literacy to Blimp. 77 // TODO(kmarshall): Remove this once we add tab-literacy to Blimp.
70 GetTabControlFeature()->CreateTab(kDummyTabId); 78 GetTabControlFeature()->CreateTab(kDummyTabId);
71 } 79 }
72 80
73 void BlimpClientSessionAndroid::Connect( 81 void BlimpClientSessionAndroid::Connect(
74 JNIEnv* env, 82 JNIEnv* env,
75 const base::android::JavaParamRef<jobject>& jobj, 83 const base::android::JavaParamRef<jobject>& jobj,
76 const base::android::JavaParamRef<jstring>& jclient_auth_token) { 84 const base::android::JavaParamRef<jstring>& jclient_auth_token) {
77 std::string client_auth_token; 85 std::string client_auth_token;
78 if (jclient_auth_token.obj()) { 86 if (jclient_auth_token.obj()) {
79 client_auth_token = 87 client_auth_token =
80 base::android::ConvertJavaStringToUTF8(env, jclient_auth_token); 88 base::android::ConvertJavaStringToUTF8(env, jclient_auth_token);
81 } 89 }
82 90
83 BlimpClientSession::Connect(client_auth_token); 91 BlimpClientSession::Connect(client_auth_token);
84 } 92 }
85 93
86 BlimpClientSessionAndroid::~BlimpClientSessionAndroid() {} 94 BlimpClientSessionAndroid::~BlimpClientSessionAndroid() {
95 GetImeFeature()->set_delegate(nullptr);
96 }
87 97
88 void BlimpClientSessionAndroid::OnConnected() { 98 void BlimpClientSessionAndroid::OnConnected() {
89 JNIEnv* env = base::android::AttachCurrentThread(); 99 JNIEnv* env = base::android::AttachCurrentThread();
90 Java_BlimpClientSession_onConnected(env, java_obj_); 100 Java_BlimpClientSession_onConnected(env, java_obj_);
91 } 101 }
92 102
93 void BlimpClientSessionAndroid::OnDisconnected(int result) { 103 void BlimpClientSessionAndroid::OnDisconnected(int result) {
94 JNIEnv* env = base::android::AttachCurrentThread(); 104 JNIEnv* env = base::android::AttachCurrentThread();
95 Java_BlimpClientSession_onDisconnected( 105 Java_BlimpClientSession_onDisconnected(
96 env, java_obj_, base::android::ConvertUTF8ToJavaString( 106 env, java_obj_, base::android::ConvertUTF8ToJavaString(
(...skipping 27 matching lines...) Expand all
124 const base::android::JavaParamRef<jobject>& jobj) { 134 const base::android::JavaParamRef<jobject>& jobj) {
125 BlimpStats* stats = BlimpStats::GetInstance(); 135 BlimpStats* stats = BlimpStats::GetInstance();
126 int metrics[] = {stats->Get(BlimpStats::BYTES_RECEIVED), 136 int metrics[] = {stats->Get(BlimpStats::BYTES_RECEIVED),
127 stats->Get(BlimpStats::BYTES_SENT), 137 stats->Get(BlimpStats::BYTES_SENT),
128 stats->Get(BlimpStats::COMMIT)}; 138 stats->Get(BlimpStats::COMMIT)};
129 return base::android::ToJavaIntArray(env, metrics, arraysize(metrics)); 139 return base::android::ToJavaIntArray(env, metrics, arraysize(metrics));
130 } 140 }
131 141
132 } // namespace client 142 } // namespace client
133 } // namespace blimp 143 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/client/app/android/blimp_client_session_android.h ('k') | blimp/client/app/android/ime_helper_dialog.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698