root/chrome/browser/android/prerender_condition_platform.cc

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. CanPrerender
  2. SetEnabled

// Copyright 2013 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 "base/prefs/pref_service.h"
#include "chrome/browser/android/prerender_condition_platform.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/pref_names.h"

namespace android {

namespace {

const char kAllowPrerender[] = "allow-prerender";

class BooleanWrapper : public base::SupportsUserData::Data {
 public:
  explicit BooleanWrapper(bool b) : m_b(b) { }
  virtual ~BooleanWrapper() { }

  operator bool() const { return m_b; }
 private:
  bool m_b;
  DISALLOW_COPY_AND_ASSIGN(BooleanWrapper);
};

}  // namespace

PrerenderConditionPlatform::PrerenderConditionPlatform(
    content::BrowserContext* context)
    : context_(context) {}

PrerenderConditionPlatform::~PrerenderConditionPlatform() {}

bool PrerenderConditionPlatform::CanPrerender() const {
  base::SupportsUserData::Data* data = context_->GetUserData(kAllowPrerender);
  if (!data)
    return true;
  BooleanWrapper* b = static_cast<BooleanWrapper*>(data);
  return *b;
}

void PrerenderConditionPlatform::SetEnabled(content::BrowserContext* context,
                                            bool enabled) {
  BooleanWrapper* wrapper = new BooleanWrapper(enabled);
  context->SetUserData(kAllowPrerender, wrapper);
}

}  // namespace android

/* [<][>][^][v][top][bottom][index][help] */