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