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

Side by Side Diff: chrome/browser/android/physical_web/eddystone_encoder_bridge.cc

Issue 2753683002: Build a Bridge to Eddystone Encoder in Components (Closed)
Patch Set: Created 3 years, 9 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
(Empty)
1 // Copyright 2017 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 "chrome/browser/android/physical_web/eddystone_encoder_bridge.h"
6
7 #include <jni.h>
8 #include <vector>
9
10 #include "base/android/jni_android.h"
11 #include "base/android/jni_array.h"
12 #include "base/android/jni_string.h"
13 #include "components/physical_web/eddystone/eddystone_encoder.h"
14 #include "jni/PhysicalWebBroadcastService_jni.h"
15
16 bool RegisterEddystoneEncoderBridge(JNIEnv* env) {
17 return RegisterNativesImpl(env);
18 }
19
20 static base::android::ScopedJavaLocalRef<jbyteArray> EncodeUrl(
21 JNIEnv* env,
22 const base::android::JavaParamRef<jobject>& jcaller,
23 const base::android::JavaParamRef<jstring>& j_url) {
24 /*
25 * Exception preparation for illegal arguments.
26 */
27 jclass exception_class = env->FindClass("java/lang/IllegalArgumentException");
28
29 /*
30 * Input Sanitization
31 */
32 if (j_url.is_null()) {
33 env->ThrowNew(exception_class, "URL is null.");
34 return NULL;
35 }
36
37 std::string c_url;
38 base::android::ConvertJavaStringToUTF8(env, j_url, &c_url);
39 std::vector<uint8_t> encoded_url;
40
41 int encode_message = physical_web::EncodeUrl(c_url, &encoded_url);
42
43 if (encode_message < 0) {
44 std::string err_message = "Error in Eddystone Encoding. Error Code: ";
45 err_message += std::to_string(encode_message);
46 env->ThrowNew(exception_class, err_message.c_str());
47 return NULL;
48 }
49
50 return base::android::ToJavaByteArray(env, &encoded_url[0],
cco3 2017/03/14 21:55:54 &encoded_url[0] doesn't look quite right, but I'm
mattreynolds 2017/03/14 23:21:12 C++11 added vector::data(), let's use it instead:
iankc 2017/03/15 19:08:50 Done.
51 encoded_url.size());
52 }
53
54 // Functions For Testing
55 base::android::ScopedJavaLocalRef<jbyteArray> EncodeUrlForTesting(
56 JNIEnv* env,
57 const base::android::JavaParamRef<jobject>& jcaller,
58 const base::android::JavaParamRef<jstring>& j_url) {
59 return EncodeUrl(env, jcaller, j_url);
60 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698