1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
// Copyright 2015 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/test_toolbar_actions_bar_bubble_delegate.h"
#include "base/logging.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
class TestToolbarActionsBarBubbleDelegate::DelegateImpl
: public ToolbarActionsBarBubbleDelegate {
public:
explicit DelegateImpl(TestToolbarActionsBarBubbleDelegate* parent)
: parent_(parent) {}
~DelegateImpl() override {}
private:
bool ShouldShow() override { return true; }
bool ShouldCloseOnDeactivate() override {
return parent_->close_on_deactivate_;
}
base::string16 GetHeadingText() override { return parent_->heading_; }
base::string16 GetBodyText(bool anchored_to_action) override {
return parent_->body_;
}
base::string16 GetItemListText() override { return parent_->item_list_; }
base::string16 GetActionButtonText() override { return parent_->action_; }
base::string16 GetDismissButtonText() override { return parent_->dismiss_; }
base::string16 GetLearnMoreButtonText() override {
return parent_->learn_more_;
}
std::unique_ptr<ToolbarActionsBarBubbleDelegate::ExtraViewInfo>
GetExtraViewInfo() override {
if (parent_->info_)
return base::MakeUnique<ToolbarActionsBarBubbleDelegate::ExtraViewInfo>(
*parent_->info_);
return nullptr;
}
std::string GetAnchorActionId() override { return std::string(); }
void OnBubbleShown() override {
CHECK(!parent_->shown_);
parent_->shown_ = true;
}
void OnBubbleClosed(CloseAction action) override {
CHECK(!parent_->close_action_);
parent_->close_action_.reset(new CloseAction(action));
}
TestToolbarActionsBarBubbleDelegate* parent_;
DISALLOW_COPY_AND_ASSIGN(DelegateImpl);
};
TestToolbarActionsBarBubbleDelegate::TestToolbarActionsBarBubbleDelegate(
const base::string16& heading,
const base::string16& body,
const base::string16& action)
: shown_(false),
heading_(heading),
body_(body),
action_(action),
close_on_deactivate_(true) {}
TestToolbarActionsBarBubbleDelegate::~TestToolbarActionsBarBubbleDelegate() {
// If the bubble didn't close, it means that it still owns the DelegateImpl,
// which has a weak ptr to this object. Make sure that this class always
// outlives the bubble.
CHECK(close_action_);
}
std::unique_ptr<ToolbarActionsBarBubbleDelegate>
TestToolbarActionsBarBubbleDelegate::GetDelegate() {
return std::unique_ptr<ToolbarActionsBarBubbleDelegate>(
new DelegateImpl(this));
}
|