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

Side by Side Diff: ios/chrome/browser/ui/static_content/static_html_view_controller_unittest.mm

Issue 2691573002: [ObjC ARC] Converts ios/chrome/browser/ui/static_content:unit_tests to ARC. (Closed)
Patch Set: format 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 unified diff | Download patch
« no previous file with comments | « ios/chrome/browser/ui/static_content/static_html_native_content_unittest.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/chrome/browser/ui/static_content/static_html_view_controller.h" 5 #import "ios/chrome/browser/ui/static_content/static_html_view_controller.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #import "base/mac/foundation_util.h" 9 #import "base/mac/foundation_util.h"
10 #include "base/mac/scoped_nsautorelease_pool.h"
11 #include "base/mac/scoped_nsobject.h"
12 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
13 #import "base/test/ios/wait_util.h" 11 #import "base/test/ios/wait_util.h"
14 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" 12 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
15 #import "ios/chrome/browser/ui/url_loader.h" 13 #import "ios/chrome/browser/ui/url_loader.h"
16 #include "ios/chrome/grit/ios_strings.h" 14 #include "ios/chrome/grit/ios_strings.h"
17 #import "ios/testing/ocmock_complex_type_helper.h" 15 #import "ios/testing/ocmock_complex_type_helper.h"
18 #include "ios/web/public/referrer.h" 16 #include "ios/web/public/referrer.h"
19 #import "ios/web/public/test/fakes/test_web_client.h" 17 #import "ios/web/public/test/fakes/test_web_client.h"
20 #import "ios/web/public/test/js_test_util.h" 18 #import "ios/web/public/test/js_test_util.h"
21 #include "ios/web/public/test/scoped_testing_web_client.h" 19 #include "ios/web/public/test/scoped_testing_web_client.h"
22 #include "ios/web/public/test/test_web_thread_bundle.h" 20 #include "ios/web/public/test/test_web_thread_bundle.h"
23 #import "ios/web/public/web_state/ui/crw_native_content.h" 21 #import "ios/web/public/web_state/ui/crw_native_content.h"
24 #import "net/base/mac/url_conversions.h" 22 #import "net/base/mac/url_conversions.h"
25 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
26 #include "testing/gtest_mac.h" 24 #include "testing/gtest_mac.h"
27 #include "testing/platform_test.h" 25 #include "testing/platform_test.h"
28 #import "third_party/ocmock/OCMock/OCMock.h" 26 #import "third_party/ocmock/OCMock/OCMock.h"
29 #include "third_party/ocmock/gtest_support.h" 27 #include "third_party/ocmock/gtest_support.h"
30 #include "ui/base/l10n/l10n_util_mac.h" 28 #include "ui/base/l10n/l10n_util_mac.h"
31 29
30 #if !defined(__has_feature) || !__has_feature(objc_arc)
31 #error "This file requires ARC support."
32 #endif
33
32 // Generator that returns the value of a localized identifier. 34 // Generator that returns the value of a localized identifier.
33 @interface L10nHtmlGenerator : NSObject<HtmlGenerator> { 35 @interface L10nHtmlGenerator : NSObject<HtmlGenerator> {
34 @private 36 @private
35 int messageId_; 37 int messageId_;
36 } 38 }
37 - (id)initWithMessageId:(int)messageId; 39 - (id)initWithMessageId:(int)messageId;
38 @end 40 @end
39 41
40 @implementation L10nHtmlGenerator 42 @implementation L10nHtmlGenerator
41 - (id)initWithMessageId:(int)messageId { 43 - (id)initWithMessageId:(int)messageId {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 : web_client_(base::MakeUnique<web::TestWebClient>()) {} 102 : web_client_(base::MakeUnique<web::TestWebClient>()) {}
101 103
102 protected: 104 protected:
103 void SetUp() override { 105 void SetUp() override {
104 PlatformTest::SetUp(); 106 PlatformTest::SetUp();
105 chrome_browser_state_ = TestChromeBrowserState::Builder().Build(); 107 chrome_browser_state_ = TestChromeBrowserState::Builder().Build();
106 } 108 }
107 109
108 web::TestWebThreadBundle thread_bundle_; 110 web::TestWebThreadBundle thread_bundle_;
109 std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; 111 std::unique_ptr<TestChromeBrowserState> chrome_browser_state_;
110 // Private autorelease pool so objects are released as soon as possible.
111 base::mac::ScopedNSAutoreleasePool pool_;
112 web::ScopedTestingWebClient web_client_; 112 web::ScopedTestingWebClient web_client_;
113 }; 113 };
114 114
115 // Tests the creation of a StaticHtmlViewController displaying a resource file. 115 // Tests the creation of a StaticHtmlViewController displaying a resource file.
116 TEST_F(StaticHtmlViewControllerTest, LoadResourceTest) { 116 TEST_F(StaticHtmlViewControllerTest, LoadResourceTest) {
117 base::scoped_nsobject<id> loader; 117 id loader = [[LoadTestMockLoader alloc]
118 loader.reset([[LoadTestMockLoader alloc]
119 initWithRepresentedObject:[OCMockObject 118 initWithRepresentedObject:[OCMockObject
120 mockForProtocol:@protocol(UrlLoader)]]); 119 mockForProtocol:@protocol(UrlLoader)]];
121 120
122 id<CRWNativeContentDelegate> delegate = 121 id<CRWNativeContentDelegate> delegate =
123 [OCMockObject mockForProtocol:@protocol(CRWNativeContentDelegate)]; 122 [OCMockObject mockForProtocol:@protocol(CRWNativeContentDelegate)];
124 GURL referrer_url("chrome://foo"); 123 GURL referrer_url("chrome://foo");
125 web::Referrer referrer(referrer_url, web::ReferrerPolicyDefault); 124 web::Referrer referrer(referrer_url, web::ReferrerPolicyDefault);
126 base::scoped_nsobject<StaticHtmlViewController> content( 125 StaticHtmlViewController* content = [[StaticHtmlViewController alloc]
127 [[StaticHtmlViewController alloc] 126 initWithResource:@"terms_en.html"
128 initWithResource:@"terms_en.html" 127 browserState:chrome_browser_state_.get()];
129 browserState:chrome_browser_state_.get()]);
130 [content setLoader:loader referrer:referrer]; 128 [content setLoader:loader referrer:referrer];
131 [content setDelegate:delegate]; 129 [content setDelegate:delegate];
132 [[(OCMockObject*)delegate expect] 130 [[(OCMockObject*)delegate expect]
133 nativeContent:content.get() 131 nativeContent:content
134 titleDidChange:[OCMArg checkWithBlock:^BOOL(id value) { 132 titleDidChange:[OCMArg checkWithBlock:^BOOL(id value) {
135 isRunLoopDry = true; 133 isRunLoopDry = true;
136 return [@"Google Chrome Terms of Service" 134 return [@"Google Chrome Terms of Service"
137 isEqualToString:(NSString*)value]; 135 isEqualToString:(NSString*)value];
138 }]]; 136 }]];
139 [content triggerPendingLoad]; 137 [content triggerPendingLoad];
140 DryRunLoop(false); 138 DryRunLoop(false);
141 ASSERT_OCMOCK_VERIFY(loader.get()); 139 ASSERT_OCMOCK_VERIFY(loader);
142 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate); 140 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate);
143 base::scoped_nsobject<id> block( 141 id block = [(id) ^ (const GURL& url, const web::Referrer& referrer,
144 [(id) ^ (const GURL& url, const web::Referrer& referrer, 142 ui::PageTransition transition, BOOL rendererInitiated) {
145 ui::PageTransition transition, BOOL rendererInitiated) { 143 EXPECT_EQ(url, GURL());
146 EXPECT_EQ(url, GURL()); 144 EXPECT_EQ(referrer.url, referrer_url);
147 EXPECT_EQ(referrer.url, referrer_url); 145 EXPECT_EQ(referrer.policy, web::ReferrerPolicyDefault);
148 EXPECT_EQ(referrer.policy, web::ReferrerPolicyDefault); 146 EXPECT_TRUE(PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_LINK));
149 EXPECT_TRUE( 147 EXPECT_TRUE(rendererInitiated);
150 PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_LINK)); 148 } copy];
151 EXPECT_TRUE(rendererInitiated);
152 } copy]);
153 149
154 [loader onSelector:@selector(loadURL:referrer:transition:rendererInitiated:) 150 [loader onSelector:@selector(loadURL:referrer:transition:rendererInitiated:)
155 callBlockExpectation:block]; 151 callBlockExpectation:block];
156 152
157 DryRunLoop(true); 153 DryRunLoop(true);
158 ASSERT_OCMOCK_VERIFY(loader.get()); 154 ASSERT_OCMOCK_VERIFY(loader);
159 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate); 155 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate);
160 } 156 }
161 157
162 // Tests the creation of a StaticHtmlViewController displaying a local file. 158 // Tests the creation of a StaticHtmlViewController displaying a local file.
163 TEST_F(StaticHtmlViewControllerTest, LoadFileURLTest) { 159 TEST_F(StaticHtmlViewControllerTest, LoadFileURLTest) {
164 base::scoped_nsobject<id> loader; 160 id loader = [[LoadTestMockLoader alloc]
165 loader.reset([[LoadTestMockLoader alloc]
166 initWithRepresentedObject:[OCMockObject 161 initWithRepresentedObject:[OCMockObject
167 mockForProtocol:@protocol(UrlLoader)]]); 162 mockForProtocol:@protocol(UrlLoader)]];
168 163
169 id<CRWNativeContentDelegate> delegate = 164 id<CRWNativeContentDelegate> delegate =
170 [OCMockObject mockForProtocol:@protocol(CRWNativeContentDelegate)]; 165 [OCMockObject mockForProtocol:@protocol(CRWNativeContentDelegate)];
171 GURL referrer_url("chrome://foo"); 166 GURL referrer_url("chrome://foo");
172 web::Referrer referrer(referrer_url, web::ReferrerPolicyDefault); 167 web::Referrer referrer(referrer_url, web::ReferrerPolicyDefault);
173 NSURL* fileURL = [NSURL 168 NSURL* fileURL = [NSURL
174 fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"terms_en.html" 169 fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"terms_en.html"
175 ofType:nil 170 ofType:nil
176 inDirectory:nil]]; 171 inDirectory:nil]];
177 base::scoped_nsobject<StaticHtmlViewController> content( 172 StaticHtmlViewController* content = [[StaticHtmlViewController alloc]
178 [[StaticHtmlViewController alloc] 173 initWithFileURL:net::GURLWithNSURL(fileURL)
179 initWithFileURL:net::GURLWithNSURL(fileURL) 174 allowingReadAccessToURL:net::GURLWithNSURL(
180 allowingReadAccessToURL:net::GURLWithNSURL( 175 [fileURL URLByDeletingLastPathComponent])
181 [fileURL URLByDeletingLastPathComponent]) 176 browserState:chrome_browser_state_.get()];
182 browserState:chrome_browser_state_.get()]);
183 [content setLoader:loader referrer:referrer]; 177 [content setLoader:loader referrer:referrer];
184 [content setDelegate:delegate]; 178 [content setDelegate:delegate];
185 [[(OCMockObject*)delegate expect] 179 [[(OCMockObject*)delegate expect]
186 nativeContent:content.get() 180 nativeContent:content
187 titleDidChange:[OCMArg checkWithBlock:^BOOL(id value) { 181 titleDidChange:[OCMArg checkWithBlock:^BOOL(id value) {
188 isRunLoopDry = true; 182 isRunLoopDry = true;
189 return [@"Google Chrome Terms of Service" 183 return [@"Google Chrome Terms of Service"
190 isEqualToString:(NSString*)value]; 184 isEqualToString:(NSString*)value];
191 }]]; 185 }]];
192 [content triggerPendingLoad]; 186 [content triggerPendingLoad];
193 DryRunLoop(false); 187 DryRunLoop(false);
194 ASSERT_OCMOCK_VERIFY(loader.get()); 188 ASSERT_OCMOCK_VERIFY(loader);
195 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate); 189 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate);
196 base::scoped_nsobject<id> block( 190 id block = [(id) ^ (const GURL& url, const web::Referrer& referrer,
197 [(id) ^ (const GURL& url, const web::Referrer& referrer, 191 ui::PageTransition transition, BOOL rendererInitiated) {
198 ui::PageTransition transition, BOOL rendererInitiated) { 192 EXPECT_EQ(url, GURL());
199 EXPECT_EQ(url, GURL()); 193 EXPECT_EQ(referrer.url, referrer_url);
200 EXPECT_EQ(referrer.url, referrer_url); 194 EXPECT_EQ(referrer.policy, web::ReferrerPolicyDefault);
201 EXPECT_EQ(referrer.policy, web::ReferrerPolicyDefault); 195 EXPECT_TRUE(PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_LINK));
202 EXPECT_TRUE( 196 EXPECT_TRUE(rendererInitiated);
203 PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_LINK)); 197 } copy];
204 EXPECT_TRUE(rendererInitiated);
205 } copy]);
206 198
207 [loader onSelector:@selector(loadURL:referrer:transition:rendererInitiated:) 199 [loader onSelector:@selector(loadURL:referrer:transition:rendererInitiated:)
208 callBlockExpectation:block]; 200 callBlockExpectation:block];
209 201
210 DryRunLoop(true); 202 DryRunLoop(true);
211 ASSERT_OCMOCK_VERIFY(loader.get()); 203 ASSERT_OCMOCK_VERIFY(loader);
212 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate); 204 ASSERT_OCMOCK_VERIFY((OCMockObject*)delegate);
213 } 205 }
214 206
215 // Tests that -[StaticHtmlViewController webView] returns a non-nil view. 207 // Tests that -[StaticHtmlViewController webView] returns a non-nil view.
216 TEST_F(StaticHtmlViewControllerTest, WebViewNonNil) { 208 TEST_F(StaticHtmlViewControllerTest, WebViewNonNil) {
217 base::scoped_nsobject<L10nHtmlGenerator> generator( 209 L10nHtmlGenerator* generator =
218 [[L10nHtmlGenerator alloc] initWithMessageId:IDS_IOS_TOOLS_MENU]); 210 [[L10nHtmlGenerator alloc] initWithMessageId:IDS_IOS_TOOLS_MENU];
219 base::scoped_nsobject<StaticHtmlViewController> staticHtmlViewController( 211 StaticHtmlViewController* staticHtmlViewController =
220 [[StaticHtmlViewController alloc] 212 [[StaticHtmlViewController alloc]
221 initWithGenerator:generator 213 initWithGenerator:generator
222 browserState:chrome_browser_state_.get()]); 214 browserState:chrome_browser_state_.get()];
223 EXPECT_TRUE([staticHtmlViewController webView]); 215 EXPECT_TRUE([staticHtmlViewController webView]);
224 } 216 }
225 217
226 // Tests the generated HTML is localized. 218 // Tests the generated HTML is localized.
227 TEST_F(StaticHtmlViewControllerTest, L10NTest) { 219 TEST_F(StaticHtmlViewControllerTest, L10NTest) {
228 base::scoped_nsobject<L10nHtmlGenerator> generator( 220 L10nHtmlGenerator* generator =
229 [[L10nHtmlGenerator alloc] initWithMessageId:IDS_IOS_TOOLS_MENU]); 221 [[L10nHtmlGenerator alloc] initWithMessageId:IDS_IOS_TOOLS_MENU];
230 base::scoped_nsobject<StaticHtmlViewController> content( 222 StaticHtmlViewController* content = [[StaticHtmlViewController alloc]
231 [[StaticHtmlViewController alloc] 223 initWithGenerator:generator
232 initWithGenerator:generator 224 browserState:chrome_browser_state_.get()];
233 browserState:chrome_browser_state_.get()]);
234 id<UrlLoader> loader = [OCMockObject mockForProtocol:@protocol(UrlLoader)]; 225 id<UrlLoader> loader = [OCMockObject mockForProtocol:@protocol(UrlLoader)];
235 [content setLoader:loader 226 [content setLoader:loader
236 referrer:web::Referrer(GURL("chrome://foo"), 227 referrer:web::Referrer(GURL("chrome://foo"),
237 web::ReferrerPolicyDefault)]; 228 web::ReferrerPolicyDefault)];
238 [content triggerPendingLoad]; 229 [content triggerPendingLoad];
239 ASSERT_OCMOCK_VERIFY((OCMockObject*)loader); 230 ASSERT_OCMOCK_VERIFY((OCMockObject*)loader);
240 __block id string_in_page = nil; 231 __block id string_in_page = nil;
241 base::test::ios::WaitUntilCondition(^bool { 232 base::test::ios::WaitUntilCondition(^bool {
242 string_in_page = 233 string_in_page =
243 web::ExecuteJavaScript([content webView], @"document.body.innerHTML"); 234 web::ExecuteJavaScript([content webView], @"document.body.innerHTML");
244 return ![string_in_page isEqual:@""]; 235 return ![string_in_page isEqual:@""];
245 }); 236 });
246 EXPECT_TRUE([string_in_page isKindOfClass:[NSString class]]); 237 EXPECT_TRUE([string_in_page isKindOfClass:[NSString class]]);
247 NSString* to_find = l10n_util::GetNSString(IDS_IOS_TOOLS_MENU); 238 NSString* to_find = l10n_util::GetNSString(IDS_IOS_TOOLS_MENU);
248 EXPECT_TRUE([string_in_page rangeOfString:to_find].length); 239 EXPECT_TRUE([string_in_page rangeOfString:to_find].length);
249 } 240 }
250 241
251 } // namespace 242 } // namespace
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/static_content/static_html_native_content_unittest.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698