Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/common/features/feature_channel.h" | 5 #include "extensions/common/features/feature_channel.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | |
| 7 #include "components/version_info/version_info.h" | 8 #include "components/version_info/version_info.h" |
| 8 | 9 |
| 9 namespace { | 10 namespace { |
| 10 | 11 |
| 11 const version_info::Channel kDefaultChannel = version_info::Channel::STABLE; | 12 // The current channel to be reported, unless overridden by |
| 12 version_info::Channel g_current_channel = kDefaultChannel; | 13 // |ScopedCurrentChannel|. |
| 14 version_info::Channel g_current_channel = version_info::Channel::STABLE; | |
|
Devlin
2017/05/19 22:14:17
nit: \n
emaxx
2017/05/20 02:48:53
Done.
| |
| 15 // The current channel overridden by |ScopedCurrentChannel|. The value is valid | |
| 16 // only whenever |g_channel_is_overridden| is true. | |
| 17 version_info::Channel g_overridden_channel = version_info::Channel::STABLE; | |
|
Devlin
2017/05/19 22:14:17
\n
emaxx
2017/05/20 02:48:53
Done.
| |
| 18 // Whether an instance of |ScopedCurrentChannel| exists currently. | |
| 19 bool g_channel_is_overridden = false; | |
| 13 | 20 |
| 14 } // namespace | 21 } // namespace |
| 15 | 22 |
| 16 namespace extensions { | 23 namespace extensions { |
| 17 | 24 |
| 18 version_info::Channel GetCurrentChannel() { | 25 version_info::Channel GetCurrentChannel() { |
| 19 return g_current_channel; | 26 return g_channel_is_overridden ? g_overridden_channel : g_current_channel; |
| 20 } | 27 } |
| 21 | 28 |
| 22 void SetCurrentChannel(version_info::Channel channel) { | 29 void SetCurrentChannel(version_info::Channel channel) { |
| 23 g_current_channel = channel; | 30 g_current_channel = channel; |
| 24 } | 31 } |
| 25 | 32 |
| 26 version_info::Channel GetDefaultChannel() { | |
| 27 return kDefaultChannel; | |
| 28 } | |
| 29 | |
| 30 ScopedCurrentChannel::ScopedCurrentChannel(version_info::Channel channel) | 33 ScopedCurrentChannel::ScopedCurrentChannel(version_info::Channel channel) |
| 31 : original_channel_(version_info::Channel::UNKNOWN) { | 34 : channel_(channel), |
| 32 original_channel_ = GetCurrentChannel(); | 35 original_overridden_channel_(g_overridden_channel), |
| 33 SetCurrentChannel(channel); | 36 original_channel_is_overridden_(g_channel_is_overridden) { |
| 37 g_overridden_channel = channel; | |
| 38 g_channel_is_overridden = true; | |
| 34 } | 39 } |
| 35 | 40 |
| 36 ScopedCurrentChannel::~ScopedCurrentChannel() { | 41 ScopedCurrentChannel::~ScopedCurrentChannel() { |
| 37 SetCurrentChannel(original_channel_); | 42 DCHECK_EQ(g_overridden_channel, channel_) |
| 43 << "Scoped channel setters are not nested properly"; | |
|
Devlin
2017/05/19 22:14:17
One last bit of bikeshedding :)
We could actually
emaxx
2017/05/20 02:48:53
Done.
| |
| 44 g_overridden_channel = original_overridden_channel_; | |
| 45 g_channel_is_overridden = original_channel_is_overridden_; | |
| 38 } | 46 } |
| 39 | 47 |
| 40 } // namespace extensions | 48 } // namespace extensions |
| OLD | NEW |