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

Unified Diff: ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm

Issue 2770223003: [ios] Switches ToolbarModelDelegateIOS to use WebStateList. (Closed)
Patch Set: Review Created 3 years, 9 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
« no previous file with comments | « ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm
diff --git a/ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm b/ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm
index 308a1b0dcd3ef5bf95f8211925f1222d488b35b9..588dd944b01e0e520f5716dd60347521e6c39055 100644
--- a/ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm
+++ b/ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm
@@ -7,6 +7,7 @@
#include <memory>
#include "base/mac/scoped_nsobject.h"
+#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "components/bookmarks/browser/bookmark_model.h"
@@ -14,12 +15,13 @@
#include "components/toolbar/test_toolbar_model.h"
#include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
-#import "ios/chrome/browser/tabs/tab.h"
-#import "ios/chrome/browser/tabs/tab_model.h"
#include "ios/chrome/browser/ui/toolbar/toolbar_model_delegate_ios.h"
#include "ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios.h"
#import "ios/chrome/browser/xcallback_parameters.h"
+#include "ios/shared/chrome/browser/tabs/fake_web_state_list_delegate.h"
+#include "ios/shared/chrome/browser/tabs/web_state_list.h"
#import "ios/testing/ocmock_complex_type_helper.h"
+#import "ios/web/public/test/fakes/test_navigation_manager.h"
#import "ios/web/public/test/fakes/test_web_state.h"
#include "ios/web/public/test/test_web_thread.h"
#include "ios/web/public/test/test_web_thread_bundle.h"
@@ -28,35 +30,48 @@
#include "third_party/ocmock/gtest_support.h"
#include "third_party/ocmock/ocmock_extensions.h"
-@interface TMITestTabMock : OCMockComplexTypeHelper {
- GURL url_;
- web::WebState* web_state_;
-}
-
-@property(nonatomic, assign) const GURL& url;
-@property(nonatomic, assign) web::WebState* webState;
-@end
-
-@implementation TMITestTabMock
-- (const GURL&)url {
- return url_;
-}
-- (void)setUrl:(const GURL&)url {
- url_ = url;
-}
-- (web::WebState*)webState {
- return web_state_;
-}
-- (void)setWebState:(web::WebState*)web_state {
- web_state_ = web_state;
-}
-@end
-
namespace {
static const char kWebUrl[] = "http://www.chromium.org";
static const char kNativeUrl[] = "chrome://version";
+namespace {
+
+class ToolbarTestWebState : public web::TestWebState {
+ public:
+ ToolbarTestWebState() : loading_progress_(0) {}
+
+ double GetLoadingProgress() const override { return loading_progress_; }
+ void set_loading_progress(double loading_progress) {
+ loading_progress_ = loading_progress;
+ }
+
+ private:
+ double loading_progress_;
+
+ DISALLOW_COPY_AND_ASSIGN(ToolbarTestWebState);
+};
+
+class ToolbarTestNavigationManager : public web::TestNavigationManager {
+ public:
+ ToolbarTestNavigationManager()
+ : can_go_back_(false), can_go_forward_(false) {}
+
+ bool CanGoBack() const override { return can_go_back_; }
+ bool CanGoForward() const override { return can_go_forward_; }
+
+ void set_can_go_back(bool can_go_back) { can_go_back_ = can_go_back; }
+ void set_can_go_forward(bool can_go_forward) {
+ can_go_forward_ = can_go_forward;
+ }
+
+ private:
+ bool can_go_back_;
+ bool can_go_forward_;
+};
+
+} // namespace
+
class ToolbarModelImplIOSTest : public PlatformTest {
protected:
void SetUp() override {
@@ -67,41 +82,38 @@ class ToolbarModelImplIOSTest : public PlatformTest {
ios::BookmarkModelFactory::GetForBrowserState(
chrome_browser_state_.get()));
- tabModel_.reset([[OCMockObject niceMockForClass:[TabModel class]] retain]);
-
- toolbarModelDelegate_.reset(new ToolbarModelDelegateIOS(tabModel_.get()));
+ // Create a WebStateList that will always return the test WebState as
+ // the active WebState.
+ web_state_list_ = base::MakeUnique<WebStateList>(
+ &web_state_list_delegate_, WebStateList::WebStateOwned);
+ std::unique_ptr<ToolbarTestWebState> web_state =
+ base::MakeUnique<ToolbarTestWebState>();
+ web_state->SetBrowserState(chrome_browser_state_.get());
+ web_state_ = web_state.get();
+ web_state_list_->InsertWebState(0, web_state.release());
+ web_state_list_->ActivateWebStateAt(0);
+
+ toolbarModelDelegate_.reset(
+ new ToolbarModelDelegateIOS(web_state_list_.get()));
toolbarModel_.reset(new ToolbarModelImplIOS(toolbarModelDelegate_.get()));
}
web::TestWebThreadBundle thread_bundle_;
std::unique_ptr<TestChromeBrowserState> chrome_browser_state_;
- base::scoped_nsobject<TabModel> tabModel_;
+ FakeWebStateListDelegate web_state_list_delegate_;
+ std::unique_ptr<WebStateList> web_state_list_;
+ ToolbarTestWebState* web_state_;
std::unique_ptr<ToolbarModelDelegateIOS> toolbarModelDelegate_;
std::unique_ptr<ToolbarModelIOS> toolbarModel_;
};
-class ToolbarModelImplIOSTestWebState : public web::TestWebState {
- public:
- explicit ToolbarModelImplIOSTestWebState(web::BrowserState* browser_state)
- : browser_state_(browser_state) {}
-
- web::BrowserState* GetBrowserState() const override { return browser_state_; }
- double GetLoadingProgress() const override { return loading_progress_; }
- void SetLoadingProgress(double loading_progress) {
- loading_progress_ = loading_progress;
- }
-
- private:
- web::BrowserState* browser_state_;
- double loading_progress_;
-
- DISALLOW_COPY_AND_ASSIGN(ToolbarModelImplIOSTestWebState);
-};
-
-TEST_F(ToolbarModelImplIOSTest, TestWhenCurrentTabIsNull) {
- // Make a mock to always return NULL for the current tab.
- OCMockObject* tabModelMock = static_cast<OCMockObject*>(tabModel_.get());
- [[[tabModelMock stub] andReturn:NULL] currentTab];
+TEST_F(ToolbarModelImplIOSTest, TestWhenCurrentWebStateIsNull) {
+ // The test fixture adds one WebState to the WebStateList, so remove it before
+ // running this test.
+ ASSERT_EQ(1, web_state_list_->count());
+ std::unique_ptr<web::WebState> closed_web_state(
+ web_state_list_->DetachWebStateAt(0));
+ ASSERT_TRUE(web_state_list_->empty());
EXPECT_FALSE(toolbarModel_->IsLoading());
EXPECT_EQ(0, toolbarModel_->GetLoadProgressFraction());
@@ -112,95 +124,66 @@ TEST_F(ToolbarModelImplIOSTest, TestWhenCurrentTabIsNull) {
}
TEST_F(ToolbarModelImplIOSTest, TestIsLoading) {
- OCMockObject* tabModelMock = static_cast<OCMockObject*>(tabModel_.get());
- id tabMock = [[TMITestTabMock alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[Tab class]]];
-
- // Make mocks return a current tab with a null web state.
- [[[tabModelMock stub] andReturn:tabMock] currentTab];
- [tabMock setWebState:nullptr];
- [static_cast<TMITestTabMock*>(tabMock) setUrl:GURL(kWebUrl)];
- EXPECT_FALSE(toolbarModel_->IsLoading());
-
- // Make mocks return a current tab that is loading.
- web::TestWebState webState;
- [tabMock setWebState:&webState];
- webState.SetLoading(true);
+ // An active webstate that is loading.
+ web_state_->SetLoading(true);
EXPECT_TRUE(toolbarModel_->IsLoading());
- // Make mocks return a current tab that is not loading.
- webState.SetLoading(false);
+ // An active webstate that is not loading.
+ web_state_->SetLoading(false);
EXPECT_FALSE(toolbarModel_->IsLoading());
- // Make mocks return a current tab that is pointing at a native URL.
- webState.SetLoading(true);
- [static_cast<TMITestTabMock*>(tabMock) setUrl:GURL(kNativeUrl)];
+ // An active webstate that is pointing at a native URL.
+ web_state_->SetLoading(true);
+ web_state_->SetCurrentURL(GURL(kNativeUrl));
EXPECT_FALSE(toolbarModel_->IsLoading());
}
TEST_F(ToolbarModelImplIOSTest, TestGetLoadProgressFraction) {
- ToolbarModelImplIOSTestWebState web_state(chrome_browser_state_.get());
- OCMockObject* tabModelMock = static_cast<OCMockObject*>(tabModel_.get());
- id tabMock = [[TMITestTabMock alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[Tab class]]];
- [static_cast<TMITestTabMock*>(tabMock) setWebState:&web_state];
- [[[tabModelMock stub] andReturn:tabMock] currentTab];
-
const CGFloat kExpectedProgress = 0.42;
- web_state.SetLoadingProgress(kExpectedProgress);
+ web_state_->set_loading_progress(kExpectedProgress);
EXPECT_FLOAT_EQ(kExpectedProgress, toolbarModel_->GetLoadProgressFraction());
}
TEST_F(ToolbarModelImplIOSTest, TestCanGoBack) {
- OCMockObject* tabModelMock = static_cast<OCMockObject*>(tabModel_.get());
- id tabMock = [[TMITestTabMock alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[Tab class]]];
- [[[tabModelMock stub] andReturn:tabMock] currentTab];
+ web_state_->SetNavigationManager(
+ base::MakeUnique<ToolbarTestNavigationManager>());
+ ToolbarTestNavigationManager* manager =
+ static_cast<ToolbarTestNavigationManager*>(
+ web_state_->GetNavigationManager());
- [[[tabMock expect] andReturnBool:true] canGoBack];
+ manager->set_can_go_back(true);
EXPECT_TRUE(toolbarModel_->CanGoBack());
- [[[tabMock expect] andReturnBool:false] canGoBack];
+ manager->set_can_go_back(false);
EXPECT_FALSE(toolbarModel_->CanGoBack());
}
TEST_F(ToolbarModelImplIOSTest, TestCanGoForward) {
- OCMockObject* tabModelMock = static_cast<OCMockObject*>(tabModel_.get());
- id tabMock = [[TMITestTabMock alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[Tab class]]];
- [[[tabModelMock stub] andReturn:tabMock] currentTab];
+ web_state_->SetNavigationManager(
+ base::MakeUnique<ToolbarTestNavigationManager>());
+ ToolbarTestNavigationManager* manager =
+ static_cast<ToolbarTestNavigationManager*>(
+ web_state_->GetNavigationManager());
- [[[tabMock expect] andReturnBool:true] canGoForward];
+ manager->set_can_go_forward(true);
EXPECT_TRUE(toolbarModel_->CanGoForward());
- [[[tabMock expect] andReturnBool:false] canGoForward];
+ manager->set_can_go_forward(false);
EXPECT_FALSE(toolbarModel_->CanGoForward());
}
TEST_F(ToolbarModelImplIOSTest, TestIsCurrentTabNativePage) {
- OCMockObject* tabModelMock = static_cast<OCMockObject*>(tabModel_.get());
- id tabMock = [[TMITestTabMock alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[Tab class]]];
- [[[tabModelMock stub] andReturn:tabMock] currentTab];
-
- [tabMock setUrl:GURL(kNativeUrl)];
+ web_state_->SetCurrentURL(GURL(kNativeUrl));
EXPECT_TRUE(toolbarModel_->IsCurrentTabNativePage());
- [tabMock setUrl:GURL(kWebUrl)];
+ web_state_->SetCurrentURL(GURL(kWebUrl));
EXPECT_FALSE(toolbarModel_->IsCurrentTabNativePage());
}
TEST_F(ToolbarModelImplIOSTest, TestIsCurrentTabBookmarked) {
- ToolbarModelImplIOSTestWebState web_state(chrome_browser_state_.get());
- OCMockObject* tabModelMock = static_cast<OCMockObject*>(tabModel_.get());
- id tabMock = [[TMITestTabMock alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[Tab class]]];
- [[[tabModelMock stub] andReturn:tabMock] currentTab];
-
// Set the curent tab to |kWebUrl| and create a bookmark for |kWebUrl|, then
// verify that the toolbar model indicates that the URL is bookmarked.
- [static_cast<TMITestTabMock*>(tabMock) setWebState:&web_state];
- [static_cast<TMITestTabMock*>(tabMock) setUrl:GURL(kWebUrl)];
+ web_state_->SetCurrentURL(GURL(kWebUrl));
bookmarks::BookmarkModel* bookmark_model =
ios::BookmarkModelFactory::GetForBrowserState(
chrome_browser_state_.get());
« no previous file with comments | « ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698