1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "supervised_user_sync_data_type_controller.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/profiles/profile.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/sync/glue/chrome_report_unrecoverable_error.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/browser/browser_thread.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
11116680a4aac90f2aa7413d9095a592090648e557Ben MurdochSupervisedUserSyncDataTypeController::SupervisedUserSyncDataTypeController(
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    syncer::ModelType type,
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    sync_driver::SyncApiComponentFactory* sync_factory,
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    Profile* profile)
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    : sync_driver::UIDataTypeController(
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch          content::BrowserThread::GetMessageLoopProxyForThread(
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              content::BrowserThread::UI),
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch          base::Bind(&browser_sync::ChromeReportUnrecoverableError),
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch          type,
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch          sync_factory),
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      profile_(profile) {
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DCHECK(type == syncer::SUPERVISED_USERS ||
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch         type == syncer::SUPERVISED_USER_SETTINGS ||
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch         type == syncer::SUPERVISED_USER_SHARED_SETTINGS);
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
27116680a4aac90f2aa7413d9095a592090648e557Ben MurdochSupervisedUserSyncDataTypeController::~SupervisedUserSyncDataTypeController() {}
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool SupervisedUserSyncDataTypeController::ReadyForStart() const {
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  switch (type()) {
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    case syncer::SUPERVISED_USERS:
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      return !profile_->IsSupervised();
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    case syncer::SUPERVISED_USER_SETTINGS:
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      return profile_->IsSupervised();
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    case syncer::SUPERVISED_USER_SHARED_SETTINGS:
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      return true;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    default:
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      NOTREACHED();
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return false;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
42