| Index: chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc
|
| diff --git a/chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc b/chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9764ea82f7e9745da08116abdb06e33073564e08
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc
|
| @@ -0,0 +1,51 @@
|
| +// Copyright 2014 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 "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h"
|
| +
|
| +#include "base/lazy_instance.h"
|
| +#include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
|
| +#include "extensions/common/feature_switch.h"
|
| +
|
| +namespace {
|
| +
|
| +ComponentToolbarActionsFactory* testing_factory_ = nullptr;
|
| +
|
| +base::LazyInstance<ComponentToolbarActionsFactory> lazy_factory =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +} // namespace
|
| +
|
| +ComponentToolbarActionsFactory::ComponentToolbarActionsFactory() {}
|
| +ComponentToolbarActionsFactory::~ComponentToolbarActionsFactory() {}
|
| +
|
| +// static
|
| +ComponentToolbarActionsFactory* ComponentToolbarActionsFactory::GetInstance() {
|
| + return testing_factory_ ? testing_factory_ : &lazy_factory.Get();
|
| +}
|
| +
|
| +ScopedVector<ToolbarActionViewController>
|
| +ComponentToolbarActionsFactory::GetComponentToolbarActions() {
|
| + ScopedVector<ToolbarActionViewController> component_actions;
|
| +
|
| + // This is currently behind the extension-action-redesign flag, as it is
|
| + // designed for the new toolbar.
|
| + if (!extensions::FeatureSwitch::extension_action_redesign()->IsEnabled())
|
| + return component_actions.Pass();
|
| +
|
| + // Add component toolbar actions here.
|
| + // This current design means that the ComponentToolbarActionsFactory is aware
|
| + // of all actions. Since we should *not* have an excessive amount of these
|
| + // (since each will have an action in the toolbar or overflow menu), this
|
| + // should be okay. If this changes, we should rethink this design to have,
|
| + // e.g., RegisterChromeAction().
|
| +
|
| + return component_actions.Pass();
|
| +}
|
| +
|
| +// static
|
| +void ComponentToolbarActionsFactory::SetTestingFactory(
|
| + ComponentToolbarActionsFactory* factory) {
|
| + testing_factory_ = factory;
|
| +}
|
|
|