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

Unified Diff: ios/chrome/browser/ui/page_not_available_controller.mm

Issue 2589803002: Upstream Chrome on iOS source code [6/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
Index: ios/chrome/browser/ui/page_not_available_controller.mm
diff --git a/ios/chrome/browser/ui/page_not_available_controller.mm b/ios/chrome/browser/ui/page_not_available_controller.mm
new file mode 100644
index 0000000000000000000000000000000000000000..b655777baa0a726729aa3b503770e527e2d5cb01
--- /dev/null
+++ b/ios/chrome/browser/ui/page_not_available_controller.mm
@@ -0,0 +1,130 @@
+// Copyright 2012 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/chrome/browser/ui/page_not_available_controller.h"
+
+#include "base/i18n/rtl.h"
+#include "base/logging.h"
+#include "base/mac/objc_property_releaser.h"
+#include "base/mac/scoped_nsobject.h"
+#include "base/strings/sys_string_conversions.h"
+#include "base/strings/utf_string_conversions.h"
+#include "components/strings/grit/components_strings.h"
+#include "components/url_formatter/url_formatter.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/l10n/l10n_util_mac.h"
+
+namespace {
+// Top padding for |self.titleLabel|.
+const CGFloat kTitleLabelTopPadding = 20.0;
+// Height for |self.titleLabel|.
+const CGFloat kTitleLabelHeight = 38.0;
+// Top padding for |self.descriptionView|.
+const CGFloat kDescriptionViewTopPadding = 66.0;
+// Bottom padding for |self.descriptionView|.
+const CGFloat kDescriptionViewBottomPadding = 20.0;
+// Horizontal padding between subviews and |self.view|.
+const CGFloat kHorizontalPadding = 20.0;
+// Font size for |self.titleLabel|.
+const CGFloat kTitleLabelFontSize = 18.0;
+// Font size for |self.descriptionView|.
+const CGFloat kDescriptionViewFontSize = 17.0;
+}
+
+@interface PageNotAvailableController () {
+ base::mac::ObjCPropertyReleaser _propertyReleaser_PageNotAvailableController;
+}
+
+// The title label displayed centered at the top of the screen.
+@property(nonatomic, retain) UILabel* titleLabel;
+
+// TextView containing a detailed description of the problem.
+@property(nonatomic, retain) UITextView* descriptionView;
+
+@end
+
+@implementation PageNotAvailableController
+
+@synthesize titleLabel = _titleLabel;
+@synthesize descriptionView = _descriptionView;
+@synthesize descriptionText = _descriptionText;
+
+- (instancetype)initWithUrl:(const GURL&)url {
+ self = [super initWithNibName:nil url:url];
+ if (self) {
+ _propertyReleaser_PageNotAvailableController.Init(
+ self, [PageNotAvailableController class]);
+
+ // Use the host as the page title, unless the URL has a custom scheme.
+ if (self.url.SchemeIsHTTPOrHTTPS()) {
+ self.title = base::SysUTF16ToNSString(
+ url_formatter::IDNToUnicode(self.url.host()));
+ } else {
+ base::string16 formattedURL = url_formatter::FormatUrl(
+ self.url, url_formatter::kFormatUrlOmitNothing,
+ net::UnescapeRule::NORMAL, nullptr, nullptr, nullptr);
+ if (base::i18n::IsRTL()) {
+ base::i18n::WrapStringWithLTRFormatting(&formattedURL);
+ }
+ self.title = base::SysUTF16ToNSString(formattedURL);
+ }
+
+ // |self.view| setup.
+ CGRect windowBounds = [UIApplication sharedApplication].keyWindow.bounds;
+ base::scoped_nsobject<UIView> view(
+ [[UIView alloc] initWithFrame:windowBounds]);
+ [view setBackgroundColor:[UIColor whiteColor]];
+ [view setAutoresizingMask:(UIViewAutoresizingFlexibleWidth |
+ UIViewAutoresizingFlexibleHeight)];
+ self.view = view;
+
+ // |self.titleLabel| setup.
+ CGRect titleLabelFrame = windowBounds;
+ titleLabelFrame.origin.x += kHorizontalPadding;
+ titleLabelFrame.size.width -= 2.0 * kHorizontalPadding;
+ titleLabelFrame.origin.y += kTitleLabelTopPadding;
+ titleLabelFrame.size.height = kTitleLabelHeight;
+ _titleLabel = [[UILabel alloc] initWithFrame:titleLabelFrame];
+ _titleLabel.text =
+ l10n_util::GetNSString(IDS_ERRORPAGES_HEADING_NOT_AVAILABLE);
+ _titleLabel.autoresizingMask = (UIViewAutoresizingFlexibleBottomMargin |
+ UIViewAutoresizingFlexibleWidth);
+ _titleLabel.font =
+ [UIFont fontWithName:@"Helvetica-Bold" size:kTitleLabelFontSize];
+ _titleLabel.textAlignment = NSTextAlignmentCenter;
+ [self.view addSubview:_titleLabel];
+
+ // |self.descriptionView| setup.
+ CGRect descriptionViewFrame = windowBounds;
+ descriptionViewFrame.origin.x += kHorizontalPadding;
+ descriptionViewFrame.size.width -= 2 * kHorizontalPadding;
+ descriptionViewFrame.origin.y = kDescriptionViewTopPadding;
+ descriptionViewFrame.size.height = CGRectGetHeight(windowBounds) -
+ descriptionViewFrame.origin.y -
+ kDescriptionViewBottomPadding;
+ _descriptionView = [[UITextView alloc] initWithFrame:descriptionViewFrame];
+ _descriptionView.text = l10n_util::GetNSStringF(
+ IDS_ERRORPAGES_SUMMARY_NOT_AVAILABLE_NO_EMPHASIS,
+ base::UTF8ToUTF16(self.url.spec()));
+ _descriptionView.autoresizingMask =
+ UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
+ _descriptionView.font = [UIFont systemFontOfSize:kDescriptionViewFontSize];
+ _descriptionView.editable = NO;
+ [self.view addSubview:_descriptionView];
+ }
+ return self;
+}
+
+- (instancetype)initWithNibName:(NSString*)nibName
+ url:(const GURL&)url NS_UNAVAILABLE {
+ NOTREACHED();
+ return nil;
+}
+
+- (void)setDescriptionText:(NSString*)descriptionText {
+ _descriptionText = descriptionText;
+ _descriptionView.text = descriptionText;
+}
+
+@end
« no previous file with comments | « ios/chrome/browser/ui/page_not_available_controller.h ('k') | ios/chrome/browser/ui/page_not_available_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698