Commit bd892c3f authored by Clemens Arbesser's avatar Clemens Arbesser Committed by Chromium LUCI CQ

Moved some methods into util namespace.

The goal is to maket those methods reusable outside of client_android.

Bug: b/174305656
Change-Id: I1e6188d0e8bf50d112bedf01b93f26b7816bd3c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2620805
Commit-Queue: Clemens Arbesser <arbesser@google.com>
Commit-Queue: Mathias Carlen <mcarlen@chromium.org>
Auto-Submit: Clemens Arbesser <arbesser@google.com>
Reviewed-by: default avatarMathias Carlen <mcarlen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#842044}
parent 1e6eeaa9
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "base/time/default_tick_clock.h" #include "base/time/default_tick_clock.h"
#include "chrome/android/features/autofill_assistant/jni_headers/AutofillAssistantClient_jni.h" #include "chrome/android/features/autofill_assistant/jni_headers/AutofillAssistantClient_jni.h"
#include "chrome/android/features/autofill_assistant/jni_headers/AutofillAssistantDirectActionImpl_jni.h" #include "chrome/android/features/autofill_assistant/jni_headers/AutofillAssistantDirectActionImpl_jni.h"
#include "chrome/browser/android/autofill_assistant/ui_controller_android_utils.h"
#include "chrome/browser/autofill/android/personal_data_manager_android.h" #include "chrome/browser/autofill/android/personal_data_manager_android.h"
#include "chrome/browser/autofill/personal_data_manager_factory.h" #include "chrome/browser/autofill/personal_data_manager_factory.h"
#include "chrome/browser/flags/android/chrome_feature_list.h" #include "chrome/browser/flags/android/chrome_feature_list.h"
...@@ -51,34 +52,6 @@ namespace { ...@@ -51,34 +52,6 @@ namespace {
// the UI. // the UI.
const char* const kCancelActionName = "cancel"; const char* const kCancelActionName = "cancel";
// Fills a map from two Java arrays of strings of the same length.
void FillStringMapFromJava(JNIEnv* env,
const JavaRef<jobjectArray>& names,
const JavaRef<jobjectArray>& values,
std::map<std::string, std::string>* parameters) {
std::vector<std::string> names_vector;
base::android::AppendJavaStringArrayToStringVector(env, names, &names_vector);
std::vector<std::string> values_vector;
base::android::AppendJavaStringArrayToStringVector(env, values,
&values_vector);
DCHECK_EQ(names_vector.size(), values_vector.size());
for (size_t i = 0; i < names_vector.size(); ++i) {
parameters->insert(std::make_pair(names_vector[i], values_vector[i]));
}
}
std::unique_ptr<TriggerContextImpl> CreateTriggerContext(
JNIEnv* env,
const base::android::JavaParamRef<jstring>& jexperiment_ids,
const base::android::JavaParamRef<jobjectArray>& jparameter_names,
const base::android::JavaParamRef<jobjectArray>& jparameter_values) {
std::map<std::string, std::string> parameters;
FillStringMapFromJava(env, jparameter_names, jparameter_values, &parameters);
return std::make_unique<TriggerContextImpl>(
std::move(parameters),
base::android::ConvertJavaStringToUTF8(env, jexperiment_ids));
}
} // namespace } // namespace
static base::android::ScopedJavaLocalRef<jobject> static base::android::ScopedJavaLocalRef<jobject>
...@@ -144,7 +117,7 @@ bool ClientAndroid::Start(JNIEnv* env, ...@@ -144,7 +117,7 @@ bool ClientAndroid::Start(JNIEnv* env,
} }
GURL initial_url(base::android::ConvertJavaStringToUTF8(env, jinitial_url)); GURL initial_url(base::android::ConvertJavaStringToUTF8(env, jinitial_url));
auto trigger_context = CreateTriggerContext( auto trigger_context = ui_controller_android_utils::CreateTriggerContext(
env, jexperiment_ids, jparameter_names, jparameter_values); env, jexperiment_ids, jparameter_names, jparameter_values);
trigger_context->SetCCT(jis_cct); trigger_context->SetCCT(jis_cct);
trigger_context->SetOnboardingShown(jonboarding_shown); trigger_context->SetOnboardingShown(jonboarding_shown);
...@@ -156,9 +129,9 @@ bool ClientAndroid::Start(JNIEnv* env, ...@@ -156,9 +129,9 @@ bool ClientAndroid::Start(JNIEnv* env,
if (VLOG_IS_ON(2)) { if (VLOG_IS_ON(2)) {
std::string experiment_ids = std::string experiment_ids =
base::android::ConvertJavaStringToUTF8(env, jexperiment_ids); base::android::ConvertJavaStringToUTF8(env, jexperiment_ids);
std::map<std::string, std::string> parameters; std::map<std::string, std::string> parameters =
FillStringMapFromJava(env, jparameter_names, jparameter_values, ui_controller_android_utils::CreateStringMapFromJava(
&parameters); env, jparameter_names, jparameter_values);
DVLOG(2) << "Starting autofill assistant with parameters:"; DVLOG(2) << "Starting autofill assistant with parameters:";
DVLOG(2) << "\tinitial_url: " << initial_url; DVLOG(2) << "\tinitial_url: " << initial_url;
...@@ -183,8 +156,8 @@ void ClientAndroid::StartTriggerScript( ...@@ -183,8 +156,8 @@ void ClientAndroid::StartTriggerScript(
trigger_script_bridge_.StartTriggerScript( trigger_script_bridge_.StartTriggerScript(
web_contents_, jdelegate, web_contents_, jdelegate,
GURL(base::android::ConvertJavaStringToUTF8(env, jinitial_url)), GURL(base::android::ConvertJavaStringToUTF8(env, jinitial_url)),
CreateTriggerContext(env, jexperiment_ids, jparameter_names, ui_controller_android_utils::CreateTriggerContext(
jparameter_values), env, jexperiment_ids, jparameter_names, jparameter_values),
jservice_request_sender); jservice_request_sender);
} }
...@@ -250,8 +223,8 @@ void ClientAndroid::FetchWebsiteActions( ...@@ -250,8 +223,8 @@ void ClientAndroid::FetchWebsiteActions(
base::android::ScopedJavaGlobalRef<jobject> scoped_jcallback(env, jcallback); base::android::ScopedJavaGlobalRef<jobject> scoped_jcallback(env, jcallback);
controller_->Track( controller_->Track(
CreateTriggerContext(env, jexperiment_ids, jparameter_names, ui_controller_android_utils::CreateTriggerContext(
jparameter_values), env, jexperiment_ids, jparameter_names, jparameter_values),
base::BindOnce(&ClientAndroid::OnFetchWebsiteActions, base::BindOnce(&ClientAndroid::OnFetchWebsiteActions,
weak_ptr_factory_.GetWeakPtr(), scoped_jcallback)); weak_ptr_factory_.GetWeakPtr(), scoped_jcallback));
} }
...@@ -368,7 +341,7 @@ bool ClientAndroid::PerformDirectAction( ...@@ -368,7 +341,7 @@ bool ClientAndroid::PerformDirectAction(
int action_index = FindDirectAction(action_name); int action_index = FindDirectAction(action_name);
auto trigger_context = CreateTriggerContext( auto trigger_context = ui_controller_android_utils::CreateTriggerContext(
env, jexperiment_ids, jparameter_names, jparameter_values); env, jexperiment_ids, jparameter_names, jparameter_values);
trigger_context->SetDirectAction(true); trigger_context->SetDirectAction(true);
......
...@@ -471,5 +471,32 @@ base::android::ScopedJavaLocalRef<jobject> CreateJavaAssistantChipList( ...@@ -471,5 +471,32 @@ base::android::ScopedJavaLocalRef<jobject> CreateJavaAssistantChipList(
return jlist; return jlist;
} }
std::map<std::string, std::string> CreateStringMapFromJava(
JNIEnv* env,
const base::android::JavaRef<jobjectArray>& names,
const base::android::JavaRef<jobjectArray>& values) {
std::vector<std::string> names_vector;
base::android::AppendJavaStringArrayToStringVector(env, names, &names_vector);
std::vector<std::string> values_vector;
base::android::AppendJavaStringArrayToStringVector(env, values,
&values_vector);
std::map<std::string, std::string> result;
DCHECK_EQ(names_vector.size(), values_vector.size());
for (size_t i = 0; i < names_vector.size(); ++i) {
result.insert(std::make_pair(names_vector[i], values_vector[i]));
}
return result;
}
std::unique_ptr<TriggerContextImpl> CreateTriggerContext(
JNIEnv* env,
const base::android::JavaParamRef<jstring>& jexperiment_ids,
const base::android::JavaParamRef<jobjectArray>& jparameter_names,
const base::android::JavaParamRef<jobjectArray>& jparameter_values) {
return std::make_unique<TriggerContextImpl>(
CreateStringMapFromJava(env, jparameter_names, jparameter_values),
base::android::ConvertJavaStringToUTF8(env, jexperiment_ids));
}
} // namespace ui_controller_android_utils } // namespace ui_controller_android_utils
} // namespace autofill_assistant } // namespace autofill_assistant
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "base/optional.h" #include "base/optional.h"
#include "components/autofill_assistant/browser/bottom_sheet_state.h" #include "components/autofill_assistant/browser/bottom_sheet_state.h"
#include "components/autofill_assistant/browser/service.pb.h" #include "components/autofill_assistant/browser/service.pb.h"
#include "components/autofill_assistant/browser/trigger_context.h"
#include "components/autofill_assistant/browser/user_model.h" #include "components/autofill_assistant/browser/user_model.h"
#include "components/autofill_assistant/browser/view_layout.pb.h" #include "components/autofill_assistant/browser/view_layout.pb.h"
#include "url/gurl.h" #include "url/gurl.h"
...@@ -100,6 +101,19 @@ base::android::ScopedJavaLocalRef<jobject> CreateJavaAssistantChipList( ...@@ -100,6 +101,19 @@ base::android::ScopedJavaLocalRef<jobject> CreateJavaAssistantChipList(
JNIEnv* env, JNIEnv* env,
const std::vector<ChipProto>& chips); const std::vector<ChipProto>& chips);
// Creates a std::map from an incoming set of Java string keys and values.
std::map<std::string, std::string> CreateStringMapFromJava(
JNIEnv* env,
const base::android::JavaRef<jobjectArray>& keys,
const base::android::JavaRef<jobjectArray>& values);
// Creates a C++ trigger context for the specified java inputs.
std::unique_ptr<TriggerContextImpl> CreateTriggerContext(
JNIEnv* env,
const base::android::JavaParamRef<jstring>& jexperiment_ids,
const base::android::JavaParamRef<jobjectArray>& jparameter_names,
const base::android::JavaParamRef<jobjectArray>& jparameter_values);
} // namespace ui_controller_android_utils } // namespace ui_controller_android_utils
} // namespace autofill_assistant } // namespace autofill_assistant
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment