1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/prefs/pref_service.h"
6#include "chrome/browser/android/prerender_condition_platform.h"
7#include "chrome/browser/browser_process.h"
8#include "chrome/browser/profiles/profile_manager.h"
9#include "chrome/common/pref_names.h"
10
11namespace android {
12
13namespace {
14
15const char kAllowPrerender[] = "allow-prerender";
16
17class BooleanWrapper : public base::SupportsUserData::Data {
18 public:
19  explicit BooleanWrapper(bool b) : m_b(b) { }
20  virtual ~BooleanWrapper() { }
21
22  operator bool() const { return m_b; }
23 private:
24  bool m_b;
25  DISALLOW_COPY_AND_ASSIGN(BooleanWrapper);
26};
27
28}  // namespace
29
30PrerenderConditionPlatform::PrerenderConditionPlatform(
31    content::BrowserContext* context)
32    : context_(context) {}
33
34PrerenderConditionPlatform::~PrerenderConditionPlatform() {}
35
36bool PrerenderConditionPlatform::CanPrerender() const {
37  base::SupportsUserData::Data* data = context_->GetUserData(kAllowPrerender);
38  if (!data)
39    return true;
40  BooleanWrapper* b = static_cast<BooleanWrapper*>(data);
41  return *b;
42}
43
44void PrerenderConditionPlatform::SetEnabled(content::BrowserContext* context,
45                                            bool enabled) {
46  BooleanWrapper* wrapper = new BooleanWrapper(enabled);
47  context->SetUserData(kAllowPrerender, wrapper);
48}
49
50}  // namespace android
51