blob: 5260665f970c74f69d02e131ca76d255909d93e2 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/autofill/ios/browser/autofill_driver_ios_webframe.h"
namespace autofill {
// static
void AutofillDriverIOSWebFrameFactory::CreateForWebStateAndDelegate(
web::WebState* web_state,
AutofillClient* client,
id<AutofillDriverIOSBridge> bridge,
const std::string& app_locale,
AutofillManager::AutofillDownloadManagerState enable_download_manager) {
if (FromWebState(web_state))
return;
web_state->SetUserData(
UserDataKey(),
std::make_unique<AutofillDriverIOSWebFrameFactory>(
web_state, client, bridge, app_locale, enable_download_manager));
}
AutofillDriverIOSWebFrameFactory::AutofillDriverIOSWebFrameFactory(
web::WebState* web_state,
AutofillClient* client,
id<AutofillDriverIOSBridge> bridge,
const std::string& app_locale,
AutofillManager::AutofillDownloadManagerState enable_download_manager)
: web_state_(web_state),
client_(client),
bridge_(bridge),
app_locale_(app_locale),
enable_download_manager_(enable_download_manager) {}
AutofillDriverIOSWebFrameFactory::~AutofillDriverIOSWebFrameFactory() {}
AutofillDriverIOSWebFrame*
AutofillDriverIOSWebFrameFactory::AutofillDriverIOSFromWebFrame(
web::WebFrame* web_frame) {
AutofillDriverIOSWebFrame::CreateForWebFrameAndDelegate(
web_state_, web_frame, client_, bridge_, app_locale_,
enable_download_manager_);
return AutofillDriverIOSWebFrame::FromWebFrame(web_frame);
}
// static
void AutofillDriverIOSWebFrame::CreateForWebFrameAndDelegate(
web::WebState* web_state,
web::WebFrame* web_frame,
AutofillClient* client,
id<AutofillDriverIOSBridge> bridge,
const std::string& app_locale,
AutofillManager::AutofillDownloadManagerState enable_download_manager) {
if (FromWebFrame(web_frame))
return;
web_frame->SetUserData(UserDataKey(),
std::make_unique<AutofillDriverIOSWebFrame>(
web_state, web_frame, client, bridge, app_locale,
enable_download_manager));
}
AutofillDriverIOSRefCountable::AutofillDriverIOSRefCountable(
web::WebState* web_state,
web::WebFrame* web_frame,
AutofillClient* client,
id<AutofillDriverIOSBridge> bridge,
const std::string& app_locale,
AutofillManager::AutofillDownloadManagerState enable_download_manager)
: AutofillDriverIOS(web_state,
web_frame,
client,
bridge,
app_locale,
enable_download_manager) {}
AutofillDriverIOSWebFrame::AutofillDriverIOSWebFrame(
web::WebState* web_state,
web::WebFrame* web_frame,
AutofillClient* client,
id<AutofillDriverIOSBridge> bridge,
const std::string& app_locale,
AutofillManager::AutofillDownloadManagerState enable_download_manager)
: driver_(base::MakeRefCounted<AutofillDriverIOSRefCountable>(
web_state,
web_frame,
client,
bridge,
app_locale,
enable_download_manager)) {}
AutofillDriverIOSWebFrame::~AutofillDriverIOSWebFrame() {}
scoped_refptr<AutofillDriverIOSRefCountable>
AutofillDriverIOSWebFrame::GetRetainableDriver() {
return driver_;
}
WEB_STATE_USER_DATA_KEY_IMPL(AutofillDriverIOSWebFrameFactory)
} // namespace autofill