#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
#include "components/sync/model/proxy_model_type_controller_delegate.h"
+#if defined(TIZEN_AUTOFILL_FW)
+#include "base/synchronization/waitable_event.h"
+#include "tizen_src/ewk/efl_integration/browser/autofill/autofill_request_manager.h"
+#endif
+
namespace password_manager {
namespace {
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0("passwords", "PasswordStore::GetLogins",
consumer.get());
+#if defined(TIZEN_AUTOFILL_FW)
+ LOG(INFO) << "[Autofill] PasswordStore::GetLogins, signon_realm: "
+ << form.signon_realm << ", origin: " << form.url.spec()
+ << ", username: " << form.username << ", view: " << view
+ << ", skip_checking_autofill: " << skip_checking_autofill;
+ if (!view) {
+ return;
+ }
+
+ if (!skip_checking_autofill) {
+ if (backend_) {
+ backend_->PostTaskToBackgroundTaskRunner(base::BindOnce(
+ &PasswordStore::CheckAutofillData, this, form, view,
+ base::BindOnce(
+ &PasswordStoreConsumer::OnGetPasswordStoreResultsOrErrorFrom,
+ consumer, base::RetainedRef(this))));
+ }
+ } else {
+ LOG(INFO) << "[Autofill] " << __FUNCTION__ << " with view " << view
+ << " skip check autofill";
+ affiliated_match_helper_->InjectAffiliationAndBrandingInformation(
+ LoginsResult(),
+ base::BindOnce(
+ &PasswordStoreConsumer::OnGetPasswordStoreResultsOrErrorFrom,
+ consumer, base::RetainedRef(this)));
+ }
+#else
backend_->GetGroupedMatchingLoginsAsync(
form, base::BindOnce(
&PasswordStoreConsumer::OnGetPasswordStoreResultsOrErrorFrom,
consumer, base::RetainedRef(this)));
+#endif
}
void PasswordStore::GetAutofillableLogins(
return backend_.get();
}
+#if defined(TIZEN_AUTOFILL_FW)
+void PasswordStore::CheckAutofillData(const PasswordFormDigest& form,
+ void* view,
+ LoginsOrErrorReply callback) {
+ base::WaitableEvent done(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+ base::WaitableEvent::InitialState::NOT_SIGNALED);
+ autofill::AutofillRequestManager::GetInstance()->CheckAutofillData(
+ view, &done, form.signon_realm, form.url, form.username);
+ LOG(INFO) << "[Autofill] " << __FUNCTION__ << " with view " << view
+ << " wait start!";
+ done.Wait();
+ LOG(INFO) << "[Autofill] " << __FUNCTION__ << " with view " << view
+ << " wait end!";
+ affiliated_match_helper_->InjectAffiliationAndBrandingInformation(
+ LoginsResult(), std::move(callback));
+}
+#endif
+
PasswordStore::~PasswordStore() {
DCHECK(!backend_) << "Shutdown() needs to be called before destruction!";
}