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

Unified Diff: ios/web/web_state/ui/crw_static_file_web_view_unittest.mm

Issue 1043243003: Upstream most of ios/web/net (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove accidentally-added clients Created 5 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/web/web_state/ui/crw_static_file_web_view.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/web_state/ui/crw_static_file_web_view_unittest.mm
diff --git a/ios/web/web_state/ui/crw_static_file_web_view_unittest.mm b/ios/web/web_state/ui/crw_static_file_web_view_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..bcf12ebaaf92ddae97892c6082226aa1af47460b
--- /dev/null
+++ b/ios/web/web_state/ui/crw_static_file_web_view_unittest.mm
@@ -0,0 +1,89 @@
+// Copyright 2014 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.
+
+#import "ios/web/web_state/ui/crw_static_file_web_view.h"
+
+#import <Foundation/Foundation.h>
+
+#include "base/mac/scoped_nsobject.h"
+#include "ios/web/net/request_group_util.h"
+#include "ios/web/public/test/test_browser_state.h"
+#include "ios/web/public/test/test_web_thread_bundle.h"
+#import "ios/web/ui_web_view_util.h"
+#include "testing/platform_test.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
+
+@interface CRWStaticFileWebView (Testing)
++ (BOOL)isStaticFileUserAgent:(NSString*)userAgent;
+@end
+
+class CRWStaticFileWebViewTest : public PlatformTest {
+ public:
+ CRWStaticFileWebViewTest() {}
+
+ protected:
+ void SetUp() override { PlatformTest::SetUp(); }
+ void TearDown() override { PlatformTest::TearDown(); }
+
+ // Gets the user agent of |web_view|, using javascript.
+ NSString* GetWebViewUserAgent(UIWebView* web_view) {
+ NSString* const kJsUserAgent = @"navigator.userAgent";
+ return [web_view stringByEvaluatingJavaScriptFromString:kJsUserAgent];
+ };
+
+ web::TestWebThreadBundle thread_bundle_;
+ web::TestBrowserState browser_state_;
+};
+
+// Tests that requests for images are considered as static file requests,
+// regardless of the user agent.
+TEST_F(CRWStaticFileWebViewTest, TestIsStaticImageRequestTrue) {
+ // Empty dictionary so User-Agent check fails.
+ NSDictionary* dictionary = @{};
+ NSURL* url = [NSURL URLWithString:@"file:///show/this.png"];
+ id mockRequest = [OCMockObject mockForClass:[NSURLRequest class]];
+ [[[mockRequest stub] andReturn:dictionary] allHTTPHeaderFields];
+ [[[mockRequest stub] andReturn:url] URL];
+ EXPECT_TRUE([CRWStaticFileWebView isStaticFileRequest:mockRequest]);
+}
+
+// Tests that requests for files are considered as static file requests if they
+// have the static file user agent.
+TEST_F(CRWStaticFileWebViewTest, TestIsStaticFileRequestTrue) {
+ base::scoped_nsobject<UIWebView> webView(
+ [[CRWStaticFileWebView alloc] initWithFrame:CGRectZero
+ browserState:&browser_state_]);
+ EXPECT_TRUE(webView);
+ NSString* userAgent = GetWebViewUserAgent(webView);
+ NSDictionary* dictionary = @{ @"User-Agent" : userAgent };
+ NSURL* url = [NSURL URLWithString:@"file:///some/random/url.html"];
+ id mockRequest = [OCMockObject mockForClass:[NSURLRequest class]];
+ [[[mockRequest stub] andReturn:dictionary] allHTTPHeaderFields];
+ [[[mockRequest stub] andReturn:url] URL];
+ EXPECT_TRUE([CRWStaticFileWebView isStaticFileRequest:mockRequest]);
+}
+
+
+// Tests that arbitrary files cannot be retrieved by a web view for
+// static file content.
+TEST_F(CRWStaticFileWebViewTest, TestIsStaticFileRequestFalse) {
+ // Empty dictionary so User-Agent check fails.
+ NSDictionary* dictionary = @{};
+ NSURL* url = [NSURL URLWithString:@"file:///steal/this/file.html"];
+ id mockRequest = [OCMockObject mockForClass:[NSURLRequest class]];
+ [[[mockRequest stub] andReturn:dictionary] allHTTPHeaderFields];
+ [[[mockRequest stub] andReturn:url] URL];
+ EXPECT_FALSE([CRWStaticFileWebView isStaticFileRequest:mockRequest]);
+}
+
+// Tests that the user agent of a CRWStaticFileWebView includes a request group
+// ID.
+TEST_F(CRWStaticFileWebViewTest, TestExtractRequestGroupIDStaticFile) {
+ base::scoped_nsobject<UIWebView> webView(
+ [[CRWStaticFileWebView alloc] initWithFrame:CGRectZero
+ browserState:&browser_state_]);
+ EXPECT_TRUE(webView);
+ NSString* userAgentString = GetWebViewUserAgent(webView);
+ EXPECT_TRUE(web::ExtractRequestGroupIDFromUserAgent(userAgentString));
+}
« no previous file with comments | « ios/web/web_state/ui/crw_static_file_web_view.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698