Commit 18a03b96 authored by John Z Wu's avatar John Z Wu Committed by Commit Bot

Fix some TODOs in WebViewPasswordManagerClient

- Implement GetURLLoaderFactory()
- Implement GetIdentityManager()
- Use a real SyncCredentialsFilter
- Implement GetPasswordSyncState()

Bug: 867297
Change-Id: I1b4fddc1601b7cfd007957ca88ea493d35e55555
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1904869Reviewed-by: default avatarHiroshi Ichikawa <ichikawa@chromium.org>
Commit-Queue: John Wu <jzw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713905}
parent 421d2b7b
...@@ -150,8 +150,6 @@ ios_web_view_sources = [ ...@@ -150,8 +150,6 @@ ios_web_view_sources = [
"internal/language/web_view_language_model_manager_factory.mm", "internal/language/web_view_language_model_manager_factory.mm",
"internal/language/web_view_url_language_histogram_factory.h", "internal/language/web_view_url_language_histogram_factory.h",
"internal/language/web_view_url_language_histogram_factory.mm", "internal/language/web_view_url_language_histogram_factory.mm",
"internal/passwords/mock_credentials_filter.h",
"internal/passwords/mock_credentials_filter.mm",
"internal/passwords/web_view_password_feature_manager.h", "internal/passwords/web_view_password_feature_manager.h",
"internal/passwords/web_view_password_feature_manager.mm", "internal/passwords/web_view_password_feature_manager.mm",
"internal/passwords/web_view_password_manager_client.h", "internal/passwords/web_view_password_manager_client.h",
......
// 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.
#ifndef IOS_WEB_VIEW_INTERNAL_PASSWORDS_MOCK_CREDENTIALS_FILTER_H_
#define IOS_WEB_VIEW_INTERNAL_PASSWORDS_MOCK_CREDENTIALS_FILTER_H_
#include "base/macros.h"
#include "components/password_manager/core/browser/credentials_filter.h"
namespace ios_web_view {
// Mock of the CredentialsFilter API, to be used in tests. This filter does
// not filter out anything.
class MockCredentialsFilter : public password_manager::CredentialsFilter {
public:
MockCredentialsFilter();
~MockCredentialsFilter() override;
// CredentialsFilter
bool ShouldSave(const autofill::PasswordForm& form) const override;
bool ShouldSaveGaiaPasswordHash(
const autofill::PasswordForm& form) const override;
bool ShouldSaveEnterprisePasswordHash(
const autofill::PasswordForm& form) const override;
void ReportFormLoginSuccess(
const password_manager::PasswordFormManager& form_manager) const override;
bool IsSyncAccountEmail(const std::string& username) const override;
private:
DISALLOW_COPY_AND_ASSIGN(MockCredentialsFilter);
};
} // namespace ios_web_view
#endif // IOS_WEB_VIEW_INTERNAL_PASSWORDS_MOCK_CREDENTIALS_FILTER_H_
// 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 "ios/web_view/internal/passwords/mock_credentials_filter.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace ios_web_view {
MockCredentialsFilter::MockCredentialsFilter() = default;
MockCredentialsFilter::~MockCredentialsFilter() = default;
bool MockCredentialsFilter::ShouldSave(
const autofill::PasswordForm& form) const {
return true;
}
bool MockCredentialsFilter::ShouldSaveGaiaPasswordHash(
const autofill::PasswordForm& form) const {
return false;
}
bool MockCredentialsFilter::ShouldSaveEnterprisePasswordHash(
const autofill::PasswordForm& form) const {
return false;
}
void MockCredentialsFilter::ReportFormLoginSuccess(
const password_manager::PasswordFormManager& form_manager) const {}
bool MockCredentialsFilter::IsSyncAccountEmail(
const std::string& username) const {
return false;
}
} // namespace ios_web_view
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
#import "components/password_manager/core/browser/password_manager_client.h" #import "components/password_manager/core/browser/password_manager_client.h"
#include "components/password_manager/core/browser/password_manager_client_helper.h" #include "components/password_manager/core/browser/password_manager_client_helper.h"
#include "components/password_manager/core/browser/password_manager_metrics_recorder.h" #include "components/password_manager/core/browser/password_manager_metrics_recorder.h"
#include "components/password_manager/core/browser/sync_credentials_filter.h"
#include "components/prefs/pref_member.h" #include "components/prefs/pref_member.h"
#include "ios/web_view/internal/passwords/mock_credentials_filter.h"
#include "ios/web_view/internal/passwords/web_view_password_feature_manager.h" #include "ios/web_view/internal/passwords/web_view_password_feature_manager.h"
namespace ios_web_view { namespace ios_web_view {
...@@ -125,8 +125,7 @@ class WebViewPasswordManagerClient ...@@ -125,8 +125,7 @@ class WebViewPasswordManagerClient
// password_manager::prefs::kCredentialsEnableService. // password_manager::prefs::kCredentialsEnableService.
BooleanPrefMember saving_passwords_enabled_; BooleanPrefMember saving_passwords_enabled_;
// TODO(crbug.com/867297) Replace with SyncCredentialsFilter const password_manager::SyncCredentialsFilter credentials_filter_;
const MockCredentialsFilter credentials_filter_;
std::unique_ptr<autofill::LogManager> log_manager_; std::unique_ptr<autofill::LogManager> log_manager_;
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
#include "ios/web_view/internal/app/application_context.h" #include "ios/web_view/internal/app/application_context.h"
#import "ios/web_view/internal/passwords/web_view_password_manager_log_router_factory.h" #import "ios/web_view/internal/passwords/web_view_password_manager_log_router_factory.h"
#include "ios/web_view/internal/passwords/web_view_password_store_factory.h" #include "ios/web_view/internal/passwords/web_view_password_store_factory.h"
#include "ios/web_view/internal/signin/web_view_identity_manager_factory.h"
#import "ios/web_view/internal/sync/web_view_profile_sync_service_factory.h"
#include "ios/web_view/internal/web_view_browser_state.h" #include "ios/web_view/internal/web_view_browser_state.h"
#include "net/cert/cert_status_flags.h" #include "net/cert/cert_status_flags.h"
#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
...@@ -35,14 +37,24 @@ using password_manager::PasswordManagerMetricsRecorder; ...@@ -35,14 +37,24 @@ using password_manager::PasswordManagerMetricsRecorder;
using password_manager::PasswordStore; using password_manager::PasswordStore;
using password_manager::SyncState; using password_manager::SyncState;
// TODO(crbug.com/867297): Support sync service and signin manager. namespace {
const syncer::SyncService* GetSyncService(
ios_web_view::WebViewBrowserState* browser_state) {
return ios_web_view::WebViewProfileSyncServiceFactory::GetForBrowserState(
browser_state);
}
} // namespace
namespace ios_web_view { namespace ios_web_view {
// TODO(crbug.com/867297): Replace with sync credentials filter.
WebViewPasswordManagerClient::WebViewPasswordManagerClient( WebViewPasswordManagerClient::WebViewPasswordManagerClient(
id<CWVPasswordManagerClientDelegate> delegate) id<CWVPasswordManagerClientDelegate> delegate)
: delegate_(delegate), : delegate_(delegate),
credentials_filter_(), credentials_filter_(
this,
base::BindRepeating(&GetSyncService, delegate_.browserState)),
log_manager_(autofill::LogManager::Create( log_manager_(autofill::LogManager::Create(
ios_web_view::WebViewPasswordManagerLogRouterFactory:: ios_web_view::WebViewPasswordManagerLogRouterFactory::
GetForBrowserState(delegate_.browserState), GetForBrowserState(delegate_.browserState),
...@@ -55,9 +67,9 @@ WebViewPasswordManagerClient::WebViewPasswordManagerClient( ...@@ -55,9 +67,9 @@ WebViewPasswordManagerClient::WebViewPasswordManagerClient(
WebViewPasswordManagerClient::~WebViewPasswordManagerClient() = default; WebViewPasswordManagerClient::~WebViewPasswordManagerClient() = default;
SyncState WebViewPasswordManagerClient::GetPasswordSyncState() const { SyncState WebViewPasswordManagerClient::GetPasswordSyncState() const {
// Disable sync for Demo. const syncer::SyncService* sync_service =
// TODO(crbug.com/867297): Enable sync. GetSyncService(delegate_.browserState);
return password_manager::NOT_SYNCING; return password_manager_util::GetPasswordSyncState(sync_service);
} }
bool WebViewPasswordManagerClient::PromptUserToChooseCredentials( bool WebViewPasswordManagerClient::PromptUserToChooseCredentials(
...@@ -204,14 +216,13 @@ WebViewPasswordManagerClient::GetMetricsRecorder() { ...@@ -204,14 +216,13 @@ WebViewPasswordManagerClient::GetMetricsRecorder() {
} }
signin::IdentityManager* WebViewPasswordManagerClient::GetIdentityManager() { signin::IdentityManager* WebViewPasswordManagerClient::GetIdentityManager() {
NOTREACHED(); return WebViewIdentityManagerFactory::GetForBrowserState(
return nullptr; delegate_.browserState);
} }
scoped_refptr<network::SharedURLLoaderFactory> scoped_refptr<network::SharedURLLoaderFactory>
WebViewPasswordManagerClient::GetURLLoaderFactory() { WebViewPasswordManagerClient::GetURLLoaderFactory() {
NOTREACHED(); return (delegate_.browserState)->GetSharedURLLoaderFactory();
return nullptr;
} }
bool WebViewPasswordManagerClient::IsIsolationForPasswordSitesEnabled() const { bool WebViewPasswordManagerClient::IsIsolationForPasswordSitesEnabled() const {
......
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