Commit b6bcda6c authored by sail@chromium.org's avatar sail@chromium.org

Cocoa: Media gallery dialog unit test

This is a port of the GTK unit test:
http://codereview.chromium.org/10823303/

BUG=134929


Review URL: https://chromiumcodereview.appspot.com/10854150

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152272 0039d316-1c4b-4281-b951-d872f2087c98
parent 0c230ff1
...@@ -115,6 +115,11 @@ void MediaGalleriesDialogController::DialogFinished(bool accepted) { ...@@ -115,6 +115,11 @@ void MediaGalleriesDialogController::DialogFinished(bool accepted) {
delete this; delete this;
} }
const MediaGalleriesDialogController::KnownGalleryPermissions&
MediaGalleriesDialogController::permissions() const {
return known_galleries_;
}
void MediaGalleriesDialogController::FileSelected(const FilePath& path, void MediaGalleriesDialogController::FileSelected(const FilePath& path,
int index, int index,
void* params) { void* params) {
......
...@@ -66,22 +66,19 @@ class MediaGalleriesDialogController : public ui::SelectFileDialog::Listener { ...@@ -66,22 +66,19 @@ class MediaGalleriesDialogController : public ui::SelectFileDialog::Listener {
const base::Callback<void(void)>& on_finish); const base::Callback<void(void)>& on_finish);
// Called by the view. // Called by the view.
string16 GetHeader() const; virtual string16 GetHeader() const;
string16 GetSubtext() const; virtual string16 GetSubtext() const;
bool HasPermittedGalleries() const; virtual bool HasPermittedGalleries() const;
void OnAddFolderClicked(); virtual void OnAddFolderClicked();
virtual void DidToggleGallery(const MediaGalleryPrefInfo* pref_info, virtual void DidToggleGallery(const MediaGalleryPrefInfo* pref_info,
bool enabled); bool enabled);
virtual void DialogFinished(bool accepted); virtual void DialogFinished(bool accepted);
virtual const KnownGalleryPermissions& permissions() const;
// SelectFileDialog::Listener implementation: // SelectFileDialog::Listener implementation:
virtual void FileSelected(const FilePath& path, virtual void FileSelected(const FilePath& path,
int index, int index,
void* params) OVERRIDE; void* params) OVERRIDE;
const KnownGalleryPermissions& permissions() const {
return known_galleries_;
}
TabContents* tab_contents() const { TabContents* tab_contents() const {
return tab_contents_; return tab_contents_;
} }
...@@ -92,10 +89,6 @@ class MediaGalleriesDialogController : public ui::SelectFileDialog::Listener { ...@@ -92,10 +89,6 @@ class MediaGalleriesDialogController : public ui::SelectFileDialog::Listener {
virtual ~MediaGalleriesDialogController(); virtual ~MediaGalleriesDialogController();
// This map excludes those galleries which have been blacklisted; it only
// counts active known galleries.
KnownGalleryPermissions known_galleries_;
private: private:
// This type is for media galleries that have been added via "add gallery" // This type is for media galleries that have been added via "add gallery"
// button, but have not yet been committed to the prefs system and will be // button, but have not yet been committed to the prefs system and will be
...@@ -116,6 +109,9 @@ class MediaGalleriesDialogController : public ui::SelectFileDialog::Listener { ...@@ -116,6 +109,9 @@ class MediaGalleriesDialogController : public ui::SelectFileDialog::Listener {
// while the dialog is showing. Will be NULL only during tests. // while the dialog is showing. Will be NULL only during tests.
const extensions::Extension* extension_; const extensions::Extension* extension_;
// This map excludes those galleries which have been blacklisted; it only
// counts active known galleries.
KnownGalleryPermissions known_galleries_;
NewGalleryPermissions new_galleries_; NewGalleryPermissions new_galleries_;
// We run this callback when done. // We run this callback when done.
......
// Copyright (c) 2012 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/media_gallery/media_galleries_dialog_controller_mock.h"
using ::testing::Return;
namespace chrome {
MediaGalleriesDialogControllerMock::MediaGalleriesDialogControllerMock() {
EXPECT_CALL(*this, GetHeader()).
WillRepeatedly(Return(string16()));
EXPECT_CALL(*this, GetSubtext()).
WillRepeatedly(Return(string16()));
}
MediaGalleriesDialogControllerMock::~MediaGalleriesDialogControllerMock() {
}
} // namespace
// Copyright (c) 2012 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_BROWSER_MEDIA_GALLERY_MEDIA_GALLERIES_DIALOG_CONTROLLER_MOCK_H_
#define CHROME_BROWSER_MEDIA_GALLERY_MEDIA_GALLERIES_DIALOG_CONTROLLER_MOCK_H_
#include "chrome/browser/media_gallery/media_galleries_dialog_controller.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace chrome {
class MediaGalleriesDialogControllerMock
: public MediaGalleriesDialogController {
public:
MediaGalleriesDialogControllerMock();
virtual ~MediaGalleriesDialogControllerMock();
MOCK_CONST_METHOD0(GetHeader, string16());
MOCK_CONST_METHOD0(GetSubtext, string16());
MOCK_CONST_METHOD0(HasPermittedGalleries, bool());
MOCK_CONST_METHOD0(permissions, const KnownGalleryPermissions&());
MOCK_METHOD0(OnAddFolderClicked, void());
MOCK_METHOD2(DidToggleGallery, void(const MediaGalleryPrefInfo* pref_info,
bool enabled));
};
} // namespace
#endif // CHROME_BROWSER_MEDIA_GALLERY_MEDIA_GALLERIES_DIALOG_CONTROLLER_MOCK_H_
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#include "base/gtest_prod_util.h"
#include "chrome/browser/media_gallery/media_galleries_dialog_controller.h" #include "chrome/browser/media_gallery/media_galleries_dialog_controller.h"
#import "chrome/browser/ui/cocoa/constrained_window_mac.h" #import "chrome/browser/ui/cocoa/constrained_window_mac.h"
...@@ -14,6 +15,8 @@ ...@@ -14,6 +15,8 @@
namespace chrome { namespace chrome {
class MediaGalleriesDialogTest;
// This class displays an alert that can be used to grant permission for // This class displays an alert that can be used to grant permission for
// extensions to access a gallery (media folders). // extensions to access a gallery (media folders).
class MediaGalleriesDialogCocoa : class MediaGalleriesDialogCocoa :
...@@ -40,6 +43,10 @@ class MediaGalleriesDialogCocoa : ...@@ -40,6 +43,10 @@ class MediaGalleriesDialogCocoa :
virtual void DeleteDelegate() OVERRIDE; virtual void DeleteDelegate() OVERRIDE;
private: private:
FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, InitializeCheckboxes);
FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, ToggleCheckboxes);
FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, UpdateAdds);
void UpdateGalleryCheckbox(NSButton* checkbox, void UpdateGalleryCheckbox(NSButton* checkbox,
const MediaGalleryPrefInfo* gallery, const MediaGalleryPrefInfo* gallery,
bool permitted); bool permitted);
......
...@@ -93,7 +93,9 @@ MediaGalleriesDialogCocoa::MediaGalleriesDialogCocoa( ...@@ -93,7 +93,9 @@ MediaGalleriesDialogCocoa::MediaGalleriesDialogCocoa(
controller_->HasPermittedGalleries()]; controller_->HasPermittedGalleries()];
set_sheet(alert_); set_sheet(alert_);
window_ = new ConstrainedWindowMac(controller->tab_contents(), this); // May be NULL during tests.
if (controller->tab_contents())
window_ = new ConstrainedWindowMac(controller->tab_contents(), this);
} }
MediaGalleriesDialogCocoa::~MediaGalleriesDialogCocoa() { MediaGalleriesDialogCocoa::~MediaGalleriesDialogCocoa() {
...@@ -124,10 +126,12 @@ void MediaGalleriesDialogCocoa::SheetDidEnd(NSInteger result) { ...@@ -124,10 +126,12 @@ void MediaGalleriesDialogCocoa::SheetDidEnd(NSInteger result) {
switch (result) { switch (result) {
case NSAlertFirstButtonReturn: case NSAlertFirstButtonReturn:
accepted_ = true; accepted_ = true;
window_->CloseConstrainedWindow(); if (window_)
window_->CloseConstrainedWindow();
break; break;
case NSAlertSecondButtonReturn: case NSAlertSecondButtonReturn:
window_->CloseConstrainedWindow(); if (window_)
window_->CloseConstrainedWindow();
break; break;
default: default:
NOTREACHED(); NOTREACHED();
......
// Copyright (c) 2012 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/media_gallery/media_galleries_dialog_controller_mock.h"
#include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h"
#include "testing/gtest/include/gtest/gtest.h"
using ::testing::_;
using ::testing::NiceMock;
using ::testing::Return;
using ::testing::ReturnRef;
namespace chrome {
class MediaGalleriesDialogTest : public testing::Test {
};
// Tests that checkboxes are initialized according to the contents of
// permissions().
TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) {
NiceMock<MediaGalleriesDialogControllerMock> controller;
MediaGalleriesDialogController::KnownGalleryPermissions permissions;
MediaGalleryPrefInfo gallery1;
gallery1.device_id = "/a";
permissions[1] = MediaGalleriesDialogController::GalleryPermission(
gallery1, true);
MediaGalleryPrefInfo gallery2;
gallery2.device_id = "/b";
permissions[2] = MediaGalleriesDialogController::GalleryPermission(
gallery2, false);
EXPECT_CALL(controller, permissions()).
WillRepeatedly(ReturnRef(permissions));
// Initializing checkboxes should not cause them to be toggled.
EXPECT_CALL(controller, DidToggleGallery(_, _)).
Times(0);
scoped_ptr<MediaGalleriesDialogCocoa> dialog(
static_cast<MediaGalleriesDialogCocoa*>(
MediaGalleriesDialog::Create(&controller)));
EXPECT_EQ(2U, [dialog->checkboxes_ count]);
// Note that checkboxes_ is sorted from bottom up.
NSButton* checkbox1 = [dialog->checkboxes_ objectAtIndex:1];
EXPECT_EQ([checkbox1 state], NSOnState);
NSButton* checkbox2 = [dialog->checkboxes_ objectAtIndex:0];
EXPECT_EQ([checkbox2 state], NSOffState);
}
// Tests that toggling checkboxes updates the controller.
TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) {
NiceMock<MediaGalleriesDialogControllerMock> controller;
MediaGalleriesDialogController::KnownGalleryPermissions permissions;
MediaGalleryPrefInfo gallery;
permissions[1] = MediaGalleriesDialogController::GalleryPermission(
gallery, true);
EXPECT_CALL(controller, permissions()).
WillRepeatedly(ReturnRef(permissions));
scoped_ptr<MediaGalleriesDialogCocoa> dialog(
static_cast<MediaGalleriesDialogCocoa*>(
MediaGalleriesDialog::Create(&controller)));
EXPECT_EQ(1U, [dialog->checkboxes_ count]);
NSButton* checkbox = [dialog->checkboxes_ objectAtIndex:0];
EXPECT_EQ([checkbox state], NSOnState);
EXPECT_CALL(controller, DidToggleGallery(_, false));
[checkbox performClick:nil];
EXPECT_EQ([checkbox state], NSOffState);
EXPECT_CALL(controller, DidToggleGallery(_, true));
[checkbox performClick:nil];
EXPECT_EQ([checkbox state], NSOnState);
}
// Tests that UpdateGallery will add a new checkbox, but only if it refers to
// a gallery that the dialog hasn't seen before.
TEST_F(MediaGalleriesDialogTest, UpdateAdds) {
NiceMock<MediaGalleriesDialogControllerMock> controller;
MediaGalleriesDialogController::KnownGalleryPermissions permissions;
EXPECT_CALL(controller, permissions()).
WillRepeatedly(ReturnRef(permissions));
scoped_ptr<MediaGalleriesDialogCocoa> dialog(
static_cast<MediaGalleriesDialogCocoa*>(
MediaGalleriesDialog::Create(&controller)));
EXPECT_EQ(0U, [dialog->checkboxes_ count]);
CGFloat old_container_height = NSHeight([dialog->checkbox_container_ frame]);
MediaGalleryPrefInfo gallery1;
gallery1.device_id = "/a";
dialog->UpdateGallery(&gallery1, true);
EXPECT_EQ(1U, [dialog->checkboxes_ count]);
// The checkbox container should be taller.
CGFloat new_container_height = NSHeight([dialog->checkbox_container_ frame]);
EXPECT_GT(new_container_height, old_container_height);
old_container_height = new_container_height;
MediaGalleryPrefInfo gallery2;
gallery2.device_id = "/b";
dialog->UpdateGallery(&gallery2, true);
EXPECT_EQ(2U, [dialog->checkboxes_ count]);
// The checkbox container should be taller.
new_container_height = NSHeight([dialog->checkbox_container_ frame]);
EXPECT_GT(new_container_height, old_container_height);
old_container_height = new_container_height;
dialog->UpdateGallery(&gallery2, false);
EXPECT_EQ(2U, [dialog->checkboxes_ count]);
// The checkbox container height should not have changed.
new_container_height = NSHeight([dialog->checkbox_container_ frame]);
EXPECT_EQ(new_container_height, old_container_height);
}
} // namespace chrome
...@@ -2,96 +2,101 @@ ...@@ -2,96 +2,101 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/media_gallery/media_galleries_dialog_controller.h" #include "chrome/browser/media_gallery/media_galleries_dialog_controller_mock.h"
#include "chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk.h" #include "chrome/browser/ui/gtk/extensions/media_galleries_dialog_gtk.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
using ::testing::_;
using ::testing::NiceMock;
using ::testing::ReturnRef;
namespace chrome { namespace chrome {
class MediaGalleriesDialogTest : public testing::Test, class MediaGalleriesDialogTest : public testing::Test {
public MediaGalleriesDialogController {
public:
MediaGalleriesDialogTest() : toggles_(0) {}
virtual ~MediaGalleriesDialogTest() {}
virtual void DialogFinished(bool accepted) OVERRIDE {}
virtual void DidToggleGallery(const MediaGalleryPrefInfo* pref_info,
bool enabled) OVERRIDE {
toggles_++;
MediaGalleriesDialogController::DidToggleGallery(pref_info, enabled);
}
protected:
// Counter that tracks the number of times a checkbox has been toggled.
size_t toggles_;
}; };
// Tests that checkboxes are initialized according to the contents of // Tests that checkboxes are initialized according to the contents of
// |known_galleries|. // permissions().
TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) { TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) {
NiceMock<MediaGalleriesDialogControllerMock> controller;
MediaGalleriesDialogController::KnownGalleryPermissions permissions;
MediaGalleryPrefInfo gallery1; MediaGalleryPrefInfo gallery1;
gallery1.pref_id = 1; gallery1.pref_id = 1;
known_galleries_[1] = GalleryPermission(gallery1, true); permissions[1] =
MediaGalleriesDialogController::GalleryPermission(gallery1, true);
MediaGalleryPrefInfo gallery2; MediaGalleryPrefInfo gallery2;
gallery2.pref_id = 2; gallery2.pref_id = 2;
known_galleries_[2] = GalleryPermission(gallery2, false); permissions[2] =
MediaGalleriesDialogController::GalleryPermission(gallery2, false);
EXPECT_CALL(controller, permissions()).
WillRepeatedly(ReturnRef(permissions));
// Initializing checkboxes should not cause them to be toggled.
EXPECT_CALL(controller, DidToggleGallery(_, _)).
Times(0);
scoped_ptr<MediaGalleriesDialogGtk> MediaGalleriesDialogGtk dialog(&controller);
dialog_(new MediaGalleriesDialogGtk(this)); EXPECT_EQ(2U, dialog.checkbox_map_.size());
EXPECT_EQ(2U, dialog_->checkbox_map_.size());
GtkWidget* checkbox1 = dialog_->checkbox_map_[&known_galleries_[1].pref_info]; GtkWidget* checkbox1 = dialog.checkbox_map_[&permissions[1].pref_info];
ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox1)); ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox1));
EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox1))); EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox1)));
GtkWidget* checkbox2 = dialog_->checkbox_map_[&known_galleries_[2].pref_info]; GtkWidget* checkbox2 = dialog.checkbox_map_[&permissions[2].pref_info];
ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox2)); ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox2));
EXPECT_FALSE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox2))); EXPECT_FALSE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox2)));
// Initializing checkboxes should not cause them to be toggled.
EXPECT_EQ(0U, toggles_);
} }
// Tests that toggling checkboxes updates the controller. // Tests that toggling checkboxes updates the controller.
TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) { TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) {
NiceMock<MediaGalleriesDialogControllerMock> controller;
MediaGalleriesDialogController::KnownGalleryPermissions permissions;
MediaGalleryPrefInfo gallery1; MediaGalleryPrefInfo gallery1;
gallery1.pref_id = 1; gallery1.pref_id = 1;
known_galleries_[1] = GalleryPermission(gallery1, true); permissions[1] =
MediaGalleriesDialogController::GalleryPermission(gallery1, true);
EXPECT_CALL(controller, permissions()).
WillRepeatedly(ReturnRef(permissions));
scoped_ptr<MediaGalleriesDialogGtk> MediaGalleriesDialogGtk dialog(&controller);
dialog_(new MediaGalleriesDialogGtk(this)); EXPECT_EQ(1U, dialog.checkbox_map_.size());
EXPECT_EQ(1U, dialog_->checkbox_map_.size());
GtkWidget* checkbox = GtkWidget* checkbox =
dialog_->checkbox_map_[&known_galleries_[1].pref_info]; dialog.checkbox_map_[&permissions[1].pref_info];
ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox)); ASSERT_TRUE(GTK_IS_TOGGLE_BUTTON(checkbox));
EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox))); EXPECT_TRUE(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox)));
EXPECT_CALL(controller, DidToggleGallery(_, false));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), FALSE);
EXPECT_FALSE(known_galleries_[1].allowed);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), TRUE);
EXPECT_TRUE(known_galleries_[1].allowed);
EXPECT_EQ(2U, toggles_); EXPECT_CALL(controller, DidToggleGallery(_, true));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), TRUE);
} }
// Tests that UpdateGallery will add a new checkbox, but only if it refers to // Tests that UpdateGallery will add a new checkbox, but only if it refers to
// a gallery that the dialog hasn't seen before. // a gallery that the dialog hasn't seen before.
TEST_F(MediaGalleriesDialogTest, UpdateAdds) { TEST_F(MediaGalleriesDialogTest, UpdateAdds) {
scoped_ptr<MediaGalleriesDialogGtk> NiceMock<MediaGalleriesDialogControllerMock> controller;
dialog_(new MediaGalleriesDialogGtk(this));
MediaGalleriesDialogController::KnownGalleryPermissions permissions;
EXPECT_CALL(controller, permissions()).
WillRepeatedly(ReturnRef(permissions));
MediaGalleriesDialogGtk dialog(&controller);
EXPECT_TRUE(dialog_->checkbox_map_.empty()); EXPECT_TRUE(dialog.checkbox_map_.empty());
MediaGalleryPrefInfo gallery1; MediaGalleryPrefInfo gallery1;
dialog_->UpdateGallery(&gallery1, true); dialog.UpdateGallery(&gallery1, true);
EXPECT_EQ(1U, dialog_->checkbox_map_.size()); EXPECT_EQ(1U, dialog.checkbox_map_.size());
MediaGalleryPrefInfo gallery2; MediaGalleryPrefInfo gallery2;
dialog_->UpdateGallery(&gallery2, true); dialog.UpdateGallery(&gallery2, true);
EXPECT_EQ(2U, dialog_->checkbox_map_.size()); EXPECT_EQ(2U, dialog.checkbox_map_.size());
dialog_->UpdateGallery(&gallery2, false); dialog.UpdateGallery(&gallery2, false);
EXPECT_EQ(2U, dialog_->checkbox_map_.size()); EXPECT_EQ(2U, dialog.checkbox_map_.size());
} }
} // namespace chrome } // namespace chrome
...@@ -1364,6 +1364,8 @@ ...@@ -1364,6 +1364,8 @@
'browser/media_gallery/media_device_notifications_linux_unittest.cc', 'browser/media_gallery/media_device_notifications_linux_unittest.cc',
'browser/media_gallery/media_device_notifications_utils_unittest.cc', 'browser/media_gallery/media_device_notifications_utils_unittest.cc',
'browser/media_gallery/media_device_notifications_window_win_unittest.cc', 'browser/media_gallery/media_device_notifications_window_win_unittest.cc',
'browser/media_gallery/media_galleries_dialog_controller_mock.cc',
'browser/media_gallery/media_galleries_dialog_controller_mock.h',
'browser/media_gallery/media_galleries_preferences_unittest.cc', 'browser/media_gallery/media_galleries_preferences_unittest.cc',
'browser/media_gallery/media_gallery_database_unittest.cc', 'browser/media_gallery/media_gallery_database_unittest.cc',
'browser/metrics/metrics_log_unittest.cc', 'browser/metrics/metrics_log_unittest.cc',
...@@ -1724,6 +1726,7 @@ ...@@ -1724,6 +1726,7 @@
'browser/ui/cocoa/extensions/extension_install_dialog_controller_unittest.mm', 'browser/ui/cocoa/extensions/extension_install_dialog_controller_unittest.mm',
'browser/ui/cocoa/extensions/extension_installed_bubble_controller_unittest.mm', 'browser/ui/cocoa/extensions/extension_installed_bubble_controller_unittest.mm',
'browser/ui/cocoa/extensions/extension_popup_controller_unittest.mm', 'browser/ui/cocoa/extensions/extension_popup_controller_unittest.mm',
'browser/ui/cocoa/extensions/media_galleries_dialog_cocoa_unittest.mm',
'browser/ui/cocoa/fast_resize_view_unittest.mm', 'browser/ui/cocoa/fast_resize_view_unittest.mm',
'browser/ui/cocoa/find_bar/find_bar_bridge_unittest.mm', 'browser/ui/cocoa/find_bar/find_bar_bridge_unittest.mm',
'browser/ui/cocoa/find_bar/find_bar_cocoa_controller_unittest.mm', 'browser/ui/cocoa/find_bar/find_bar_cocoa_controller_unittest.mm',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment