1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/sync_error_controller.h"
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/profile_sync_service.h"
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/profile_sync_service_factory.h"
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
10effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochSyncErrorController::SyncErrorController(ProfileSyncService* service)
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    : service_(service) {
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  DCHECK(service_);
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
15effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochSyncErrorController::~SyncErrorController() {
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool SyncErrorController::HasError() {
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return service_->HasSyncSetupCompleted() &&
20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      service_->IsPassphraseRequired() &&
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      service_->IsPassphraseRequiredForDecryption();
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid SyncErrorController::AddObserver(Observer* observer) {
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  observer_list_.AddObserver(observer);
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid SyncErrorController::RemoveObserver(Observer* observer) {
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  observer_list_.RemoveObserver(observer);
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid SyncErrorController::OnStateChanged() {
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  FOR_EACH_OBSERVER(Observer,
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                    observer_list_,
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                    OnErrorChanged());
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
37