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

Unified Diff: ios/chrome/browser/web/error_page_content_unittest.mm

Issue 2580333003: Upstream Chrome on iOS source code [10/11]. (Closed)
Patch Set: Created 4 years 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/web/error_page_content.mm ('k') | ios/chrome/browser/web/external_app_launcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/web/error_page_content_unittest.mm
diff --git a/ios/chrome/browser/web/error_page_content_unittest.mm b/ios/chrome/browser/web/error_page_content_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..371488238e21d342d690d399b3ac5f2b4ac4f963
--- /dev/null
+++ b/ios/chrome/browser/web/error_page_content_unittest.mm
@@ -0,0 +1,116 @@
+// Copyright 2013 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 "base/mac/scoped_nsobject.h"
+#include "base/strings/sys_string_conversions.h"
+#import "ios/chrome/browser/ui/url_loader.h"
+#import "ios/chrome/browser/web/error_page_content.h"
+#include "ios/web/public/test/web_test.h"
+#include "ios/web/web_state/error_translation_util.h"
+#import "net/base/mac/url_conversions.h"
+#include "net/base/net_errors.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/gtest_mac.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
+#import "third_party/ocmock/gtest_support.h"
+#include "url/gurl.h"
+
+// From static_html_view_controller.mm: callback for the HtmlGenerator protocol.
+typedef void (^HtmlCallback)(NSString*);
+
+// To test the error page content code, generate a URL and error data, and
+// examine the generated HTML to make sure the expected text has been
+// included. In detail:
+// 1. Create a GURL with the URL to submit to the error page creator.
+// 2. Use GenerateError to create an NSError object to pass in.
+// 3. Initialize errorPageContent_ with the URL and NSError objects.
+// 4. Pass the |TestHTMLForError| function to errorPageContent_'s generateHTML
+// function, along with the string that's expected to appear in the
+// generated HTML for this error.
+class ErrorPageContentTest : public web::WebTest {
+ protected:
+ void SetUp() override {
+ web::WebTest::SetUp();
+ mockLoader_.reset(
+ [[OCMockObject niceMockForProtocol:@protocol(UrlLoader)] retain]);
+ }
+
+ // Test the HTML generated in the test against the error we were supposed to
+ // find.
+ static void TestHTMLForError(NSString* html, NSString* errorToFind) {
+ EXPECT_TRUE([html rangeOfString:errorToFind].length > 0);
+ }
+
+ // Generate an NSError object with the format expected by LocalizedError,
+ // given a URL, error domain, and error code.
+ NSError* GenerateError(const GURL& errorURL,
+ NSString* errorDomain,
+ NSInteger errorCode) {
+ NSDictionary* info = @{
+ NSURLErrorFailingURLStringErrorKey :
+ base::SysUTF8ToNSString(errorURL.spec())
+ };
+ return web::NetErrorFromError(
+ [NSError errorWithDomain:errorDomain code:errorCode userInfo:info]);
+ }
+
+ // ErrorPageContent object to be tested.
+ base::scoped_nsobject<ErrorPageContent> errorPageContent_;
+
+ // Mock for the URLLoader that would otherwise handle the HTML produced.
+ base::scoped_nsobject<OCMockObject> mockLoader_;
+};
+
+// Test with a timed out error.
+TEST_F(ErrorPageContentTest, TimedOut) {
+ GURL errorURL("http://www.google.com");
+ NSError* error =
+ GenerateError(errorURL, NSURLErrorDomain, kCFURLErrorTimedOut);
+ errorPageContent_.reset([[ErrorPageContent alloc]
+ initWithLoader:((id<UrlLoader>)mockLoader_.get())
+ browserState:GetBrowserState()
+ url:errorURL
+ error:error
+ isPost:NO
+ isIncognito:NO]);
+ [errorPageContent_.get() generateHtml:^(NSString* html) {
+ TestHTMLForError(html, @"ERR_CONNECTION_TIMED_OUT");
+ }];
+}
+
+// Test with a bad URL scheme (see b/7448754).
+TEST_F(ErrorPageContentTest, BadURLScheme) {
+ GURL errorURL(
+ "itms-appss://itunes.apple.com/gb/app/google-search/id284815942?mt=8");
+ NSError* error =
+ GenerateError(errorURL, NSURLErrorDomain, kCFURLErrorTimedOut);
+ errorPageContent_.reset([[ErrorPageContent alloc]
+ initWithLoader:((id<UrlLoader>)mockLoader_.get())
+ browserState:GetBrowserState()
+ url:errorURL
+ error:error
+ isPost:NO
+ isIncognito:NO]);
+ [errorPageContent_.get() generateHtml:^(NSString* html) {
+ TestHTMLForError(html, @"ERR_CONNECTION_TIMED_OUT");
+ }];
+}
+
+// Test with an empty GURL object.
+// TODO(ios): [merge 191784] b/8525110 fix the code or the test.
+TEST_F(ErrorPageContentTest, EmptyURLObject) {
+ GURL errorURL;
+ NSError* error =
+ GenerateError(errorURL, NSURLErrorDomain, kCFURLErrorTimedOut);
+ errorPageContent_.reset([[ErrorPageContent alloc]
+ initWithLoader:((id<UrlLoader>)mockLoader_.get())
+ browserState:GetBrowserState()
+ url:errorURL
+ error:error
+ isPost:NO
+ isIncognito:NO]);
+ [errorPageContent_.get() generateHtml:^(NSString* html) {
+ TestHTMLForError(html, @"ERR_CONNECTION_TIMED_OUT");
+ }];
+}
« no previous file with comments | « ios/chrome/browser/web/error_page_content.mm ('k') | ios/chrome/browser/web/external_app_launcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698