// 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.

#ifndef CHROME_COMMON_EXTENSIONS_FEATURES_FEATURE_CHANNEL_H_
#define CHROME_COMMON_EXTENSIONS_FEATURES_FEATURE_CHANNEL_H_

#include "chrome/common/chrome_version_info.h"

namespace extensions {

// Gets the current channel as seen by the Feature system.
chrome::VersionInfo::Channel GetCurrentChannel();

// Sets the current channel as seen by the Feature system. In the browser
// process this should be chrome::VersionInfo::GetChannel(), and in the
// renderer this will need to come from an IPC.
void SetCurrentChannel(chrome::VersionInfo::Channel channel);

// Gets the default channel as seen by the Feature system.
chrome::VersionInfo::Channel GetDefaultChannel();

// Scoped channel setter. Use for tests.
class ScopedCurrentChannel {
 public:
  explicit ScopedCurrentChannel(chrome::VersionInfo::Channel channel)
      : original_channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {
    original_channel_ = GetCurrentChannel();
    SetCurrentChannel(channel);
  }

  ~ScopedCurrentChannel() {
    SetCurrentChannel(original_channel_);
  }

 private:
  chrome::VersionInfo::Channel original_channel_;
};

}  // namespace extensions

#endif  // CHROME_COMMON_EXTENSIONS_FEATURES_FEATURE_CHANNEL_H_