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

Unified Diff: ios/web/web_state/web_state_impl_unittest.mm

Issue 2724953004: Test actual arguments in WebStateImplTest::ObserverTest. (Closed)
Patch Set: Rebased Created 3 years, 10 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: ios/web/web_state/web_state_impl_unittest.mm
diff --git a/ios/web/web_state/web_state_impl_unittest.mm b/ios/web/web_state/web_state_impl_unittest.mm
index c0a12747cbae52ed474dd28482d23a495748428d..4771d0a7ca1bb10a1bd55633f4501b63e9f99cab 100644
--- a/ios/web/web_state/web_state_impl_unittest.mm
+++ b/ios/web/web_state/web_state_impl_unittest.mm
@@ -22,6 +22,7 @@
#include "ios/web/public/test/web_test.h"
#import "ios/web/public/web_state/context_menu_params.h"
#include "ios/web/public/web_state/global_web_state_observer.h"
+#include "ios/web/public/web_state/navigation_context.h"
#import "ios/web/public/web_state/web_state_delegate.h"
#include "ios/web/public/web_state/web_state_observer.h"
#import "ios/web/public/web_state/web_state_policy_decider.h"
@@ -251,60 +252,165 @@ TEST_F(WebStateImplTest, ResponseHeaderClearing) {
EXPECT_EQ("", web_state_->GetContentLanguageHeader());
}
+// Tests forwarding to WebStateObserver callbacks.
TEST_F(WebStateImplTest, ObserverTest) {
std::unique_ptr<TestWebStateObserver> observer(
new TestWebStateObserver(web_state_.get()));
EXPECT_EQ(web_state_.get(), observer->web_state());
+ // Test that LoadProgressChanged() is called.
+ ASSERT_FALSE(observer->change_loading_progress_info());
+ const double kTestLoadProgress = 0.75;
+ web_state_->SendChangeLoadProgress(kTestLoadProgress);
+ ASSERT_TRUE(observer->change_loading_progress_info());
+ EXPECT_EQ(web_state_.get(),
+ observer->change_loading_progress_info()->web_state);
+ EXPECT_EQ(kTestLoadProgress,
+ observer->change_loading_progress_info()->progress);
+
+ // Test that TitleWasSet() is called.
+ ASSERT_FALSE(observer->title_was_set_info());
+ web_state_->OnTitleChanged();
+ ASSERT_TRUE(observer->title_was_set_info());
+ EXPECT_EQ(web_state_.get(), observer->title_was_set_info()->web_state);
+
+ // Test that DocumentSubmitted() is called.
+ ASSERT_FALSE(observer->submit_document_info());
+ std::string kTestFormName("form-name");
+ BOOL user_initiated = true;
+ web_state_->OnDocumentSubmitted(kTestFormName, user_initiated);
+ ASSERT_TRUE(observer->submit_document_info());
+ EXPECT_EQ(web_state_.get(), observer->submit_document_info()->web_state);
+ EXPECT_EQ(kTestFormName, observer->submit_document_info()->form_name);
+ EXPECT_EQ(user_initiated, observer->submit_document_info()->user_initiated);
+
+ // Test that FormActivityRegistered() is called.
+ ASSERT_FALSE(observer->form_activity_info());
+ std::string kTestFieldName("field-name");
+ std::string kTestTypeType("type");
+ std::string kTestValue("value");
+ web_state_->OnFormActivityRegistered(kTestFormName, kTestFieldName,
+ kTestTypeType, kTestValue, true);
+ ASSERT_TRUE(observer->form_activity_info());
+ EXPECT_EQ(web_state_.get(), observer->form_activity_info()->web_state);
+ EXPECT_EQ(kTestFormName, observer->form_activity_info()->form_name);
+ EXPECT_EQ(kTestFieldName, observer->form_activity_info()->field_name);
+ EXPECT_EQ(kTestTypeType, observer->form_activity_info()->type);
+ EXPECT_EQ(kTestValue, observer->form_activity_info()->value);
+ EXPECT_TRUE(observer->form_activity_info()->input_missing);
+
+ // Test that FaviconUrlUpdated() is called.
+ ASSERT_FALSE(observer->update_favicon_url_candidates_info());
+ web::FaviconURL favicon_url(GURL("https://chromium.test/"),
+ web::FaviconURL::TOUCH_ICON, {gfx::Size(5, 6)});
+ web_state_->OnFaviconUrlUpdated({favicon_url});
+ ASSERT_TRUE(observer->update_favicon_url_candidates_info());
+ EXPECT_EQ(web_state_.get(),
+ observer->update_favicon_url_candidates_info()->web_state);
+ ASSERT_EQ(1U,
+ observer->update_favicon_url_candidates_info()->candidates.size());
+ const web::FaviconURL& actual_favicon_url =
+ observer->update_favicon_url_candidates_info()->candidates[0];
+ EXPECT_EQ(favicon_url.icon_url, actual_favicon_url.icon_url);
+ EXPECT_EQ(favicon_url.icon_type, actual_favicon_url.icon_type);
+ ASSERT_EQ(favicon_url.icon_sizes.size(),
+ actual_favicon_url.icon_sizes.size());
+ EXPECT_EQ(favicon_url.icon_sizes[0].width(),
+ actual_favicon_url.icon_sizes[0].width());
+ EXPECT_EQ(favicon_url.icon_sizes[0].height(),
+ actual_favicon_url.icon_sizes[0].height());
+
+ // Test that RenderProcessGone() is called.
+ SetIgnoreRenderProcessCrashesDuringTesting(true);
+ ASSERT_FALSE(observer->render_process_gone_info());
+ web_state_->OnRenderProcessGone();
+ ASSERT_TRUE(observer->render_process_gone_info());
+ EXPECT_EQ(web_state_.get(), observer->render_process_gone_info()->web_state);
+
// Test that ProvisionalNavigationStarted() is called.
- EXPECT_FALSE(observer->provisional_navigation_started_called());
- web_state_->OnProvisionalNavigationStarted(GURL("http://test"));
- EXPECT_TRUE(observer->provisional_navigation_started_called());
+ ASSERT_FALSE(observer->start_provisional_navigation_info());
+ const GURL url("http://test");
+ web_state_->OnProvisionalNavigationStarted(url);
+ ASSERT_TRUE(observer->start_provisional_navigation_info());
+ EXPECT_EQ(web_state_.get(),
+ observer->start_provisional_navigation_info()->web_state);
+ EXPECT_EQ(url, observer->start_provisional_navigation_info()->url);
// Test that NavigationItemsPruned() is called.
- EXPECT_FALSE(observer->navigation_items_pruned_called());
+ ASSERT_FALSE(observer->navigation_items_pruned_info());
web_state_->OnNavigationItemsPruned(1);
- EXPECT_TRUE(observer->navigation_items_pruned_called());
+ ASSERT_TRUE(observer->navigation_items_pruned_info());
+ EXPECT_EQ(web_state_.get(),
+ observer->navigation_items_pruned_info()->web_state);
// Test that NavigationItemChanged() is called.
- EXPECT_FALSE(observer->navigation_item_changed_called());
+ ASSERT_FALSE(observer->navigation_item_changed_info());
web_state_->OnNavigationItemChanged();
- EXPECT_TRUE(observer->navigation_item_changed_called());
+ ASSERT_TRUE(observer->navigation_item_changed_info());
+ EXPECT_EQ(web_state_.get(),
+ observer->navigation_item_changed_info()->web_state);
// Test that NavigationItemCommitted() is called.
- EXPECT_FALSE(observer->navigation_item_committed_called());
+ ASSERT_FALSE(observer->commit_navigation_info());
LoadCommittedDetails details;
web_state_->OnNavigationItemCommitted(details);
- EXPECT_TRUE(observer->navigation_item_committed_called());
+ ASSERT_TRUE(observer->commit_navigation_info());
+ EXPECT_EQ(web_state_.get(), observer->commit_navigation_info()->web_state);
+ LoadCommittedDetails actual_details =
+ observer->commit_navigation_info()->load_details;
+ EXPECT_EQ(details.item, actual_details.item);
+ EXPECT_EQ(details.previous_item_index, actual_details.previous_item_index);
+ EXPECT_EQ(details.previous_url, actual_details.previous_url);
+ EXPECT_EQ(details.is_in_page, actual_details.is_in_page);
// Test that OnPageLoaded() is called with success when there is no error.
- EXPECT_FALSE(observer->page_loaded_called_with_success());
- web_state_->OnPageLoaded(GURL("http://test"), false);
- EXPECT_FALSE(observer->page_loaded_called_with_success());
- web_state_->OnPageLoaded(GURL("http://test"), true);
- EXPECT_TRUE(observer->page_loaded_called_with_success());
+ ASSERT_FALSE(observer->load_page_info());
+ web_state_->OnPageLoaded(url, false);
+ ASSERT_TRUE(observer->load_page_info());
+ EXPECT_EQ(web_state_.get(), observer->load_page_info()->web_state);
+ EXPECT_FALSE(observer->load_page_info()->success);
+ web_state_->OnPageLoaded(url, true);
+ ASSERT_TRUE(observer->load_page_info());
+ EXPECT_EQ(web_state_.get(), observer->load_page_info()->web_state);
+ EXPECT_TRUE(observer->load_page_info()->success);
// Test that DidFinishNavigation() is called for same page navigations.
- EXPECT_FALSE(observer->did_finish_navigation_called());
- web_state_->OnSamePageNavigation(GURL("http://test"));
- EXPECT_TRUE(observer->did_finish_navigation_called());
+ ASSERT_FALSE(observer->did_finish_navigation_info());
+ web_state_->OnSamePageNavigation(url);
+ ASSERT_TRUE(observer->did_finish_navigation_info());
+ EXPECT_EQ(web_state_.get(),
+ observer->did_finish_navigation_info()->web_state);
+ NavigationContext* context =
+ observer->did_finish_navigation_info()->context.get();
+ ASSERT_TRUE(context);
+ EXPECT_EQ(url, context->GetUrl());
+ EXPECT_TRUE(context->IsSamePage());
+ EXPECT_FALSE(context->IsErrorPage());
// Reset the observer and test that DidFinishNavigation() is called
// for error navigations.
observer = base::MakeUnique<TestWebStateObserver>(web_state_.get());
- EXPECT_FALSE(observer->did_finish_navigation_called());
- web_state_->OnErrorPageNavigation(GURL("http://test"));
- EXPECT_TRUE(observer->did_finish_navigation_called());
+ ASSERT_FALSE(observer->did_finish_navigation_info());
+ web_state_->OnErrorPageNavigation(url);
+ ASSERT_TRUE(observer->did_finish_navigation_info());
+ EXPECT_EQ(web_state_.get(),
+ observer->did_finish_navigation_info()->web_state);
+ context = observer->did_finish_navigation_info()->context.get();
+ ASSERT_TRUE(context);
+ EXPECT_EQ(url, context->GetUrl());
+ EXPECT_FALSE(context->IsSamePage());
+ EXPECT_TRUE(context->IsErrorPage());
// Test that OnTitleChanged() is called.
- EXPECT_FALSE(observer->title_was_set_called());
+ ASSERT_FALSE(observer->title_was_set_info());
web_state_->OnTitleChanged();
- EXPECT_TRUE(observer->title_was_set_called());
+ ASSERT_TRUE(observer->title_was_set_info());
+ EXPECT_EQ(web_state_.get(), observer->title_was_set_info()->web_state);
// Test that WebStateDestroyed() is called.
- EXPECT_FALSE(observer->web_state_destroyed_called());
+ EXPECT_FALSE(observer->web_state_destroyed_info());
web_state_.reset();
- EXPECT_TRUE(observer->web_state_destroyed_called());
+ EXPECT_TRUE(observer->web_state_destroyed_info());
EXPECT_EQ(nullptr, observer->web_state());
}

Powered by Google App Engine
This is Rietveld 408576698