// Copyright 2014 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 "chrome/browser/search/contextual_search_policy_handler_android.h"

#include "base/prefs/pref_value_map.h"
#include "base/values.h"
#include "chrome/common/pref_names.h"
#include "components/policy/core/common/policy_map.h"
#include "policy/policy_constants.h"

namespace policy {

ContextualSearchPolicyHandlerAndroid::ContextualSearchPolicyHandlerAndroid()
    : TypeCheckingPolicyHandler(key::kContextualSearchEnabled,
                                base::Value::TYPE_BOOLEAN) {}

ContextualSearchPolicyHandlerAndroid::~ContextualSearchPolicyHandlerAndroid() {
}

void ContextualSearchPolicyHandlerAndroid::ApplyPolicySettings(
    const PolicyMap& policies,
    PrefValueMap* prefs) {
  const base::Value* value = policies.GetValue(policy_name());
  bool contextual_search_enabled = true;
  // From a Contextual Search preference point of view, "false" means the
  // feature is turned off completely. "" means the feature is uninitialized and
  // an opt-in screen is presented to the user, after which the preference is
  // either "true" or "false", depending on their choice. Here a false policy
  // explicitly disables Contextual Search.
  if (value &&
      value->GetAsBoolean(&contextual_search_enabled) &&
      !contextual_search_enabled) {
    prefs->SetString(prefs::kContextualSearchEnabled, "false");
  }
}

}  // namespace policy
