blob: 99766ae44a6817a5d0e6ec7af35b13566773635c [file] [log] [blame]
yusufocac912f12017-05-09 16:09:511// 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#ifndef CHROME_BROWSER_ANDROID_RLZ_RLZ_PING_HANDLER_H_
6#define CHROME_BROWSER_ANDROID_RLZ_RLZ_PING_HANDLER_H_
7
8#include <jni.h>
Mark Pilgrim2e9fedc2018-05-02 21:08:459#include <memory>
10#include <string>
Sky Maliceae1742a2018-07-02 18:40:5911
yusufocac912f12017-05-09 16:09:5112#include "base/android/scoped_java_ref.h"
Mark Pilgrim2e9fedc2018-05-02 21:08:4513#include "base/memory/ref_counted.h"
14
15namespace network {
16class SimpleURLLoader;
17class SharedURLLoaderFactory;
18} // namespace network
yusufocac912f12017-05-09 16:09:5119
20namespace chrome {
21namespace android {
22
23// JNI bridge for RlzPingHandler.java
Mark Pilgrim2e9fedc2018-05-02 21:08:4524class RlzPingHandler {
yusufocac912f12017-05-09 16:09:5125 public:
Torne (Richard Coles)0a108752017-07-25 15:08:4126 explicit RlzPingHandler(const base::android::JavaRef<jobject>& jprofile);
Peter Boström53c6c5952021-09-17 09:41:2627
28 RlzPingHandler(const RlzPingHandler&) = delete;
29 RlzPingHandler& operator=(const RlzPingHandler&) = delete;
30
Mark Pilgrim2e9fedc2018-05-02 21:08:4531 ~RlzPingHandler();
yusufocac912f12017-05-09 16:09:5132
33 // Makes a GET request to the designated web end point with the given
34 // parameters. |j_brand| is a 4 character priorly designated brand value.
35 // |j_language| is the 2 letter lower case language. |events| is a single
36 // string where multiple 4 character long events are concatenated with ,
37 // and |id| is a unique id for the device that is 50 characters long.
38 void Ping(const base::android::JavaParamRef<jstring>& j_brand,
39 const base::android::JavaParamRef<jstring>& j_language,
40 const base::android::JavaParamRef<jstring>& j_events,
41 const base::android::JavaParamRef<jstring>& j_id,
42 const base::android::JavaParamRef<jobject>& j_callback);
43
44 private:
Mark Pilgrim2e9fedc2018-05-02 21:08:4545 void OnSimpleLoaderComplete(std::unique_ptr<std::string> response_body);
yusufocac912f12017-05-09 16:09:5146
Mark Pilgrim2e9fedc2018-05-02 21:08:4547 scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
48 std::unique_ptr<network::SimpleURLLoader> simple_url_loader_;
yusufocac912f12017-05-09 16:09:5149 base::android::ScopedJavaGlobalRef<jobject> j_callback_;
yusufocac912f12017-05-09 16:09:5150};
51
yusufocac912f12017-05-09 16:09:5152} // namespace android
53} // namespace chrome
54
55#endif // CHROME_BROWSER_ANDROID_RLZ_RLZ_PING_HANDLER_H_