Upstream version 10.38.222.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / android / prerender_condition_platform.cc
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
11 namespace android {
12
13 namespace {
14
15 const char kAllowPrerender[] = "allow-prerender";
16
17 class 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
30 PrerenderConditionPlatform::PrerenderConditionPlatform(
31     content::BrowserContext* context)
32     : context_(context) {}
33
34 PrerenderConditionPlatform::~PrerenderConditionPlatform() {}
35
36 bool 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
44 void PrerenderConditionPlatform::SetEnabled(content::BrowserContext* context,
45                                             bool enabled) {
46   BooleanWrapper* wrapper = new BooleanWrapper(enabled);
47   context->SetUserData(kAllowPrerender, wrapper);
48 }
49
50 }  // namespace android