// 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(data); return *b; } void PrerenderConditionPlatform::SetEnabled(content::BrowserContext* context, bool enabled) { BooleanWrapper* wrapper = new BooleanWrapper(enabled); context->SetUserData(kAllowPrerender, wrapper); } } // namespace android