Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: chrome/browser/ui/cocoa/extensions/browser_action_test_util_mac.mm

Issue 1104813005: [Extensions Toolbar] Refactor a few test classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/extensions/browser_action_test_util_mac.mm
diff --git a/chrome/browser/ui/cocoa/extensions/browser_action_test_util_mac.mm b/chrome/browser/ui/cocoa/extensions/browser_action_test_util_mac.mm
index da052fad73ed473a63614dd9dad106ef7f0b2cb9..51e9f0fe7d03ee1525c9a646d7b64ff0b462a866 100644
--- a/chrome/browser/ui/cocoa/extensions/browser_action_test_util_mac.mm
+++ b/chrome/browser/ui/cocoa/extensions/browser_action_test_util_mac.mm
@@ -4,11 +4,14 @@
#include "chrome/browser/extensions/browser_action_test_util.h"
+#include "base/mac/bundle_locations.h"
#include "base/mac/foundation_util.h"
+#include "base/path_service.h"
#include "base/strings/sys_string_conversions.h"
#include "chrome/browser/ui/browser.h"
#import "chrome/browser/ui/cocoa/browser_window_cocoa.h"
#import "chrome/browser/ui/cocoa/browser_window_controller.h"
+#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
#import "chrome/browser/ui/cocoa/extensions/browser_action_button.h"
#import "chrome/browser/ui/cocoa/extensions/browser_actions_container_view.h"
#import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h"
@@ -19,6 +22,8 @@
#import "chrome/browser/ui/cocoa/themed_window.h"
#import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h"
#include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
+#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
+#include "chrome/common/chrome_constants.h"
#include "grit/theme_resources.h"
#include "ui/base/theme_provider.h"
#include "ui/gfx/geometry/rect.h"
@@ -26,11 +31,54 @@
namespace {
-BrowserActionsController* GetController(
+// The Cocoa implementation of the TestToolbarActionsBarHelper, which creates
+// (and owns) a BrowserActionsController and BrowserActionsContainerView for
+// testing purposes.
+class TestToolbarActionsBarHelperCocoa : public TestToolbarActionsBarHelper {
+ public:
+ TestToolbarActionsBarHelperCocoa(Browser* browser,
+ BrowserActionsController* mainController);
+ ~TestToolbarActionsBarHelperCocoa() override;
+
+ BrowserActionsController* controller() { return controller_.get(); }
+
+ private:
+ // The owned BrowserActionsContainerView and BrowserActionsController; the
+ // mac implementation of the ToolbarActionsBar delegate and view.
+ base::scoped_nsobject<BrowserActionsContainerView> containerView_;
+ base::scoped_nsobject<BrowserActionsController> controller_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestToolbarActionsBarHelperCocoa);
+};
+
+TestToolbarActionsBarHelperCocoa::TestToolbarActionsBarHelperCocoa(
Browser* browser,
- ToolbarActionsBarDelegate* barDelegate) {
- if (barDelegate)
- return [BrowserActionsController fromToolbarActionsBarDelegate:barDelegate];
+ BrowserActionsController* mainController) {
+ // Make sure that Cocoa has been bootstrapped.
+ if (!base::mac::FrameworkBundle()) {
+ // Look in the framework bundle for resources.
+ base::FilePath path;
+ PathService::Get(base::DIR_EXE, &path);
+ path = path.Append(chrome::kFrameworkName);
+ base::mac::SetOverrideFrameworkBundlePath(path);
+ }
+
+ containerView_.reset([[BrowserActionsContainerView alloc]
+ initWithFrame:NSMakeRect(0, 0, 0, 15)]);
+ controller_.reset(
+ [[BrowserActionsController alloc] initWithBrowser:browser
+ containerView:containerView_.get()
+ mainController:mainController]);
+}
+
+TestToolbarActionsBarHelperCocoa::~TestToolbarActionsBarHelperCocoa() {
+}
+
+BrowserActionsController* GetController(Browser* browser,
+ TestToolbarActionsBarHelper* helper) {
+ if (helper) {
+ return static_cast<TestToolbarActionsBarHelperCocoa*>(helper)->controller();
+ }
BrowserWindowCocoa* window =
static_cast<BrowserWindowCocoa*>(browser->window());
@@ -40,23 +88,37 @@ BrowserActionsController* GetController(
BrowserActionButton* GetButton(
Browser* browser,
- ToolbarActionsBarDelegate* barDelegate,
+ TestToolbarActionsBarHelper* helper,
int index) {
- return [GetController(browser, barDelegate) buttonWithIndex:index];
+ return [GetController(browser, helper) buttonWithIndex:index];
}
} // namespace
+BrowserActionTestUtil::BrowserActionTestUtil(Browser* browser)
+ : BrowserActionTestUtil(browser, true) {
+}
+
+BrowserActionTestUtil::BrowserActionTestUtil(Browser* browser,
+ bool is_real_window)
+ : browser_(browser) {
+ if (!is_real_window)
+ test_helper_.reset(new TestToolbarActionsBarHelperCocoa(browser, nullptr));
+}
+
+BrowserActionTestUtil::~BrowserActionTestUtil() {}
+
int BrowserActionTestUtil::NumberOfBrowserActions() {
- return [GetController(browser_, bar_delegate_) buttonCount];
+ return [GetController(browser_, test_helper_.get()) buttonCount];
}
int BrowserActionTestUtil::VisibleBrowserActions() {
- return [GetController(browser_, bar_delegate_) visibleButtonCount];
+ return [GetController(browser_, test_helper_.get()) visibleButtonCount];
}
bool BrowserActionTestUtil::IsChevronShowing() {
- BrowserActionsController* controller = GetController(browser_, bar_delegate_);
+ BrowserActionsController* controller =
+ GetController(browser_, test_helper_.get());
// The magic "18" comes from kChevronWidth in browser_actions_controller.mm.
return ![controller chevronIsHidden] &&
NSWidth([[controller containerView] animationEndFrame]) >= 18;
@@ -67,11 +129,11 @@ void BrowserActionTestUtil::InspectPopup(int index) {
}
bool BrowserActionTestUtil::HasIcon(int index) {
- return [GetButton(browser_, bar_delegate_, index) image] != nil;
+ return [GetButton(browser_, test_helper_.get(), index) image] != nil;
}
gfx::Image BrowserActionTestUtil::GetIcon(int index) {
- NSImage* ns_image = [GetButton(browser_, bar_delegate_, index) image];
+ NSImage* ns_image = [GetButton(browser_, test_helper_.get(), index) image];
// gfx::Image takes ownership of the |ns_image| reference. We have to increase
// the ref count so |ns_image| stays around when the image object is
// destroyed.
@@ -80,16 +142,17 @@ gfx::Image BrowserActionTestUtil::GetIcon(int index) {
}
void BrowserActionTestUtil::Press(int index) {
- NSButton* button = GetButton(browser_, bar_delegate_, index);
+ NSButton* button = GetButton(browser_, test_helper_.get(), index);
[button performClick:nil];
}
std::string BrowserActionTestUtil::GetExtensionId(int index) {
- return [GetButton(browser_, bar_delegate_, index) viewController]->GetId();
+ return
+ [GetButton(browser_, test_helper_.get(), index) viewController]->GetId();
}
std::string BrowserActionTestUtil::GetTooltip(int index) {
- NSString* tooltip = [GetButton(browser_, bar_delegate_, index) toolTip];
+ NSString* tooltip = [GetButton(browser_, test_helper_.get(), index) toolTip];
return base::SysNSStringToUTF8(tooltip);
}
@@ -116,7 +179,8 @@ bool BrowserActionTestUtil::HidePopup() {
}
bool BrowserActionTestUtil::ActionButtonWantsToRun(size_t index) {
- BrowserActionsController* controller = GetController(browser_, bar_delegate_);
+ BrowserActionsController* controller =
+ GetController(browser_, test_helper_.get());
ui::ThemeProvider* themeProvider =
[[[controller containerView] window] themeProvider];
DCHECK(themeProvider);
@@ -141,7 +205,13 @@ bool BrowserActionTestUtil::OverflowedActionButtonWantsToRun() {
}
ToolbarActionsBar* BrowserActionTestUtil::GetToolbarActionsBar() {
- return [GetController(browser_, bar_delegate_) toolbarActionsBar];
+ return [GetController(browser_, test_helper_.get()) toolbarActionsBar];
+}
+
+scoped_ptr<BrowserActionTestUtil> BrowserActionTestUtil::CreateOverflowBar() {
+ CHECK(!GetToolbarActionsBar()->in_overflow_mode())
+ << "Only a main bar can create an overflow bar!";
+ return make_scoped_ptr(new BrowserActionTestUtil(browser_, this));
}
// static
@@ -153,3 +223,10 @@ gfx::Size BrowserActionTestUtil::GetMinPopupSize() {
gfx::Size BrowserActionTestUtil::GetMaxPopupSize() {
return gfx::Size(NSSizeToCGSize([ExtensionPopupController maxPopupSize]));
}
+
+BrowserActionTestUtil::BrowserActionTestUtil(Browser* browser,
+ BrowserActionTestUtil* main_bar)
+ : browser_(browser),
+ test_helper_(new TestToolbarActionsBarHelperCocoa(
+ browser_, GetController(browser_, main_bar->test_helper_.get()))) {
+}

Powered by Google App Engine
This is Rietveld 408576698