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#ifndef CHROME_COMMON_EXTENSIONS_FEATURES_FEATURE_CHANNEL_H_
6#define CHROME_COMMON_EXTENSIONS_FEATURES_FEATURE_CHANNEL_H_
7
8#include "chrome/common/chrome_version_info.h"
9
10namespace extensions {
11
12// Gets the current channel as seen by the Feature system.
13chrome::VersionInfo::Channel GetCurrentChannel();
14
15// Sets the current channel as seen by the Feature system. In the browser
16// process this should be chrome::VersionInfo::GetChannel(), and in the
17// renderer this will need to come from an IPC.
18void SetCurrentChannel(chrome::VersionInfo::Channel channel);
19
20// Gets the default channel as seen by the Feature system.
21chrome::VersionInfo::Channel GetDefaultChannel();
22
23// Scoped channel setter. Use for tests.
24class ScopedCurrentChannel {
25 public:
26  explicit ScopedCurrentChannel(chrome::VersionInfo::Channel channel)
27      : original_channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {
28    original_channel_ = GetCurrentChannel();
29    SetCurrentChannel(channel);
30  }
31
32  ~ScopedCurrentChannel() {
33    SetCurrentChannel(original_channel_);
34  }
35
36 private:
37  chrome::VersionInfo::Channel original_channel_;
38};
39
40}  // namespace extensions
41
42#endif  // CHROME_COMMON_EXTENSIONS_FEATURES_FEATURE_CHANNEL_H_
43