OLD | NEW |
| (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/android/toolbar.h" | |
6 | |
7 #include "base/android/jni_string.h" | |
8 #include "blimp/client/session/blimp_client_session_android.h" | |
9 #include "jni/Toolbar_jni.h" | |
10 #include "third_party/skia/include/core/SkBitmap.h" | |
11 #include "ui/gfx/android/java_bitmap.h" | |
12 #include "url/gurl.h" | |
13 | |
14 namespace blimp { | |
15 namespace client { | |
16 | |
17 namespace { | |
18 | |
19 const int kDummyTabId = 0; | |
20 | |
21 } // namespace | |
22 | |
23 static jlong Init(JNIEnv* env, | |
24 const JavaParamRef<jobject>& jobj, | |
25 const JavaParamRef<jobject>& blimp_client_session) { | |
26 BlimpClientSession* client_session = | |
27 BlimpClientSessionAndroid::FromJavaObject(env, | |
28 blimp_client_session.obj()); | |
29 | |
30 return reinterpret_cast<intptr_t>( | |
31 new Toolbar(env, jobj, client_session->GetNavigationFeature())); | |
32 } | |
33 | |
34 // static | |
35 bool Toolbar::RegisterJni(JNIEnv* env) { | |
36 return RegisterNativesImpl(env); | |
37 } | |
38 | |
39 Toolbar::Toolbar(JNIEnv* env, | |
40 const base::android::JavaParamRef<jobject>& jobj, | |
41 NavigationFeature* navigation_feature) | |
42 : navigation_feature_(navigation_feature) { | |
43 java_obj_.Reset(env, jobj); | |
44 | |
45 navigation_feature_->SetDelegate(kDummyTabId, this); | |
46 } | |
47 | |
48 Toolbar::~Toolbar() { | |
49 navigation_feature_->RemoveDelegate(kDummyTabId); | |
50 } | |
51 | |
52 void Toolbar::Destroy(JNIEnv* env, const JavaParamRef<jobject>& jobj) { | |
53 delete this; | |
54 } | |
55 | |
56 void Toolbar::OnUrlTextEntered(JNIEnv* env, | |
57 const JavaParamRef<jobject>& jobj, | |
58 const JavaParamRef<jstring>& text) { | |
59 navigation_feature_->NavigateToUrlText( | |
60 kDummyTabId, base::android::ConvertJavaStringToUTF8(env, text)); | |
61 } | |
62 | |
63 void Toolbar::OnReloadPressed(JNIEnv* env, const JavaParamRef<jobject>& jobj) { | |
64 navigation_feature_->Reload(kDummyTabId); | |
65 } | |
66 | |
67 void Toolbar::OnForwardPressed(JNIEnv* env, const JavaParamRef<jobject>& jobj) { | |
68 navigation_feature_->GoForward(kDummyTabId); | |
69 } | |
70 | |
71 jboolean Toolbar::OnBackPressed(JNIEnv* env, | |
72 const JavaParamRef<jobject>& jobj) { | |
73 navigation_feature_->GoBack(kDummyTabId); | |
74 | |
75 // TODO(dtrainor): Find a way to determine whether or not we're at the end of | |
76 // our history stack. | |
77 return true; | |
78 } | |
79 | |
80 void Toolbar::OnUrlChanged(int tab_id, const GURL& url) { | |
81 JNIEnv* env = base::android::AttachCurrentThread(); | |
82 ScopedJavaLocalRef<jstring> jurl( | |
83 base::android::ConvertUTF8ToJavaString(env, url.spec())); | |
84 | |
85 Java_Toolbar_onEngineSentUrl(env, java_obj_.obj(), jurl.obj()); | |
86 } | |
87 | |
88 void Toolbar::OnFaviconChanged(int tab_id, const SkBitmap& favicon) { | |
89 JNIEnv* env = base::android::AttachCurrentThread(); | |
90 ScopedJavaLocalRef<jobject> jfavicon(gfx::ConvertToJavaBitmap(&favicon)); | |
91 | |
92 Java_Toolbar_onEngineSentFavicon(env, java_obj_.obj(), jfavicon.obj()); | |
93 } | |
94 | |
95 void Toolbar::OnTitleChanged(int tab_id, const std::string& title) { | |
96 JNIEnv* env = base::android::AttachCurrentThread(); | |
97 ScopedJavaLocalRef<jstring> jtitle( | |
98 base::android::ConvertUTF8ToJavaString(env, title)); | |
99 | |
100 Java_Toolbar_onEngineSentTitle(env, java_obj_.obj(), jtitle.obj()); | |
101 } | |
102 | |
103 void Toolbar::OnLoadingChanged(int tab_id, bool loading) { | |
104 JNIEnv* env = base::android::AttachCurrentThread(); | |
105 | |
106 Java_Toolbar_onEngineSentLoading(env, | |
107 java_obj_.obj(), | |
108 static_cast<jboolean>(loading)); | |
109 } | |
110 | |
111 } // namespace client | |
112 } // namespace blimp | |
OLD | NEW |