Title: [226218] trunk/Source
Revision
226218
Author
commit-qu...@webkit.org
Date
2017-12-21 02:56:58 -0800 (Thu, 21 Dec 2017)

Log Message

Element fullscreen interface should display the location
https://bugs.webkit.org/show_bug.cgi?id=181006
rdar://problem/36143176

Patch by Jeremy Jones <jere...@apple.com> on 2017-12-21
Reviewed by Simon Fraser.

Source/WebCore/PAL:

Add iOS availability check.

* pal/spi/cocoa/LinkPresentationSPI.h:

Source/WebKit:

Show a short user visible location string with a lock if secure and green when trusted.

Includes other interface cleanup and tweaks.

* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[_WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
(-[_WKFullScreenViewController visualEffectViewWithFrame:]):
(mirrorEdgeInsets):
(-[_WKFullScreenViewController _updateLayoutMargins]):
(-[_WKFullScreenViewController viewDidLayoutSubviews]):
(-[_WKFullScreenViewController setLocation:secure:trustedName:trustedSite:]):
(-[_WKFullScreenViewController createSubviews]):
(-[_WKFullScreenViewController loadView]):
(-[_WKFullScreenViewController viewDidAppear:]):
(-[_WKFullScreenViewController hideCancelButton]):
(-[_WKFullScreenViewController showCancelButton:]):
(-[_WKFullscreenRootViewController setShowsStatusBar:]):
(-[_WKFullscreenRootViewController prefersStatusBarHidden]):
(-[WKFullScreenWindowController _invalidateEVOrganizationName]):
(-[WKFullScreenWindowController isSecure]):
(-[WKFullScreenWindowController _serverTrust]):
(-[WKFullScreenWindowController _EVOrganizationName]):
(-[WKFullScreenWindowController updateLocationInfo]):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
(-[_WKFullScreenViewController prefersStatusBarHidden]): Deleted.
* WebKit.xcassets/Done.imageset/Contents.json: Removed.
* WebKit.xcassets/LockMini.imageset/Contents.json: Added.
* WebKit.xcassets/LockMini.imageset/navigationbarlockm...@2x.pdf: Copied from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.
* WebKit.xcassets/LockMini.imageset/navigationbarlockm...@3x.pdf: Renamed from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.

Source/WTF:

Add SecTrustCopyInfo SPI.

* wtf/spi/cocoa/SecuritySPI.h:

Modified Paths

Added Paths

Removed Paths

  • trunk/Source/WebKit/WebKit.xcassets/Done.imageset/

Diff

Modified: trunk/Source/WTF/ChangeLog (226217 => 226218)


--- trunk/Source/WTF/ChangeLog	2017-12-21 10:08:14 UTC (rev 226217)
+++ trunk/Source/WTF/ChangeLog	2017-12-21 10:56:58 UTC (rev 226218)
@@ -1,3 +1,15 @@
+2017-12-21  Jeremy Jones  <jere...@apple.com>
+
+        Element fullscreen interface should display the location
+        https://bugs.webkit.org/show_bug.cgi?id=181006
+        rdar://problem/36143176
+
+        Reviewed by Simon Fraser.
+
+        Add SecTrustCopyInfo SPI.
+
+        * wtf/spi/cocoa/SecuritySPI.h:
+
 2017-12-20  Fujii Hironori  <hironori.fu...@sony.com>
 
         [CMake][WTF] Lowercase ForwardingHeaders directory name of WTF

Modified: trunk/Source/WTF/wtf/spi/cocoa/SecuritySPI.h (226217 => 226218)


--- trunk/Source/WTF/wtf/spi/cocoa/SecuritySPI.h	2017-12-21 10:08:14 UTC (rev 226217)
+++ trunk/Source/WTF/wtf/spi/cocoa/SecuritySPI.h	2017-12-21 10:56:58 UTC (rev 226218)
@@ -81,4 +81,10 @@
 CF_RETURNS_RETAINED SecTrustRef SecTrustDeserialize(CFDataRef serializedTrust, CFErrorRef *);
 #endif
 
+CF_RETURNS_RETAINED CFDictionaryRef SecTrustCopyInfo(SecTrustRef);
+
+extern const CFStringRef kSecTrustInfoExtendedValidationKey;
+extern const CFStringRef kSecTrustInfoCompanyNameKey;
+extern const CFStringRef kSecTrustInfoRevocationKey;
+
 WTF_EXTERN_C_END

Modified: trunk/Source/WebCore/English.lproj/Localizable.strings (226217 => 226218)


--- trunk/Source/WebCore/English.lproj/Localizable.strings	2017-12-21 10:08:14 UTC (rev 226217)
+++ trunk/Source/WebCore/English.lproj/Localizable.strings	2017-12-21 10:56:58 UTC (rev 226218)
@@ -1254,3 +1254,6 @@
 
 /* Label for the auto fill strong confirmation password button inside a text field. */
 "strong confirmation password auto fill" = "strong confirmation password auto fill";
+
+/* Text of button that exits element fullscreen. */
+"Done" = "Done";

Modified: trunk/Source/WebCore/PAL/ChangeLog (226217 => 226218)


--- trunk/Source/WebCore/PAL/ChangeLog	2017-12-21 10:08:14 UTC (rev 226217)
+++ trunk/Source/WebCore/PAL/ChangeLog	2017-12-21 10:56:58 UTC (rev 226218)
@@ -1,3 +1,15 @@
+2017-12-21  Jeremy Jones  <jere...@apple.com>
+
+        Element fullscreen interface should display the location
+        https://bugs.webkit.org/show_bug.cgi?id=181006
+        rdar://problem/36143176
+
+        Reviewed by Simon Fraser.
+
+        Add iOS availability check.
+
+        * pal/spi/cocoa/LinkPresentationSPI.h:
+
 2017-12-20  Daniel Bates  <daba...@apple.com>
 
         Remove Alternative Presentation Button

Modified: trunk/Source/WebCore/PAL/pal/spi/cocoa/LinkPresentationSPI.h (226217 => 226218)


--- trunk/Source/WebCore/PAL/pal/spi/cocoa/LinkPresentationSPI.h	2017-12-21 10:08:14 UTC (rev 226217)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/LinkPresentationSPI.h	2017-12-21 10:56:58 UTC (rev 226218)
@@ -23,7 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300
+#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300) || PLATFORM(IOS)
 
 #if USE(APPLE_INTERNAL_SDK)
 
@@ -37,4 +37,4 @@
 
 #endif
 
-#endif // __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300
+#endif // (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300) || PLATFORM(IOS)

Modified: trunk/Source/WebKit/ChangeLog (226217 => 226218)


--- trunk/Source/WebKit/ChangeLog	2017-12-21 10:08:14 UTC (rev 226217)
+++ trunk/Source/WebKit/ChangeLog	2017-12-21 10:56:58 UTC (rev 226218)
@@ -1,5 +1,45 @@
 2017-12-21  Jeremy Jones  <jere...@apple.com>
 
+        Element fullscreen interface should display the location
+        https://bugs.webkit.org/show_bug.cgi?id=181006
+        rdar://problem/36143176
+
+        Reviewed by Simon Fraser.
+
+        Show a short user visible location string with a lock if secure and green when trusted.
+
+        Includes other interface cleanup and tweaks.
+
+        * UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
+        (-[_WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
+        (-[_WKFullScreenViewController visualEffectViewWithFrame:]):
+        (mirrorEdgeInsets):
+        (-[_WKFullScreenViewController _updateLayoutMargins]):
+        (-[_WKFullScreenViewController viewDidLayoutSubviews]):
+        (-[_WKFullScreenViewController setLocation:secure:trustedName:trustedSite:]):
+        (-[_WKFullScreenViewController createSubviews]):
+        (-[_WKFullScreenViewController loadView]):
+        (-[_WKFullScreenViewController viewDidAppear:]):
+        (-[_WKFullScreenViewController hideCancelButton]):
+        (-[_WKFullScreenViewController showCancelButton:]):
+        (-[_WKFullscreenRootViewController setShowsStatusBar:]):
+        (-[_WKFullscreenRootViewController prefersStatusBarHidden]):
+        (-[WKFullScreenWindowController _invalidateEVOrganizationName]):
+        (-[WKFullScreenWindowController isSecure]):
+        (-[WKFullScreenWindowController _serverTrust]):
+        (-[WKFullScreenWindowController _EVOrganizationName]):
+        (-[WKFullScreenWindowController updateLocationInfo]):
+        (-[WKFullScreenWindowController enterFullScreen]):
+        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
+        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
+        (-[_WKFullScreenViewController prefersStatusBarHidden]): Deleted.
+        * WebKit.xcassets/Done.imageset/Contents.json: Removed.
+        * WebKit.xcassets/LockMini.imageset/Contents.json: Added.
+        * WebKit.xcassets/LockMini.imageset/navigationbarlockm...@2x.pdf: Copied from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.
+        * WebKit.xcassets/LockMini.imageset/navigationbarlockm...@3x.pdf: Renamed from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.
+
+2017-12-21  Jeremy Jones  <jere...@apple.com>
+
         Enable picture-in-picture from inline element on suspend.
         https://bugs.webkit.org/show_bug.cgi?id=180942
         rdar://problem/34745234

Modified: trunk/Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.mm (226217 => 226218)


--- trunk/Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.mm	2017-12-21 10:08:14 UTC (rev 226217)
+++ trunk/Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.mm	2017-12-21 10:56:58 UTC (rev 226218)
@@ -35,17 +35,31 @@
 #import "WebFullScreenManagerProxy.h"
 #import "WebPageProxy.h"
 #import <Foundation/Foundation.h>
+#import <Security/SecCertificate.h>
+#import <Security/SecTrust.h>
 #import <UIKit/UIVisualEffectView.h>
 #import <WebCore/FloatRect.h>
 #import <WebCore/GeometryUtilities.h>
 #import <WebCore/IntRect.h>
+#import <WebCore/LocalizedStrings.h>
+#import <WebCore/WebCoreNSURLExtras.h>
+#import <pal/spi/cf/CFNetworkSPI.h>
+#import <pal/spi/cocoa/LinkPresentationSPI.h>
+#import <pal/spi/cocoa/NSStringSPI.h>
 #import <pal/spi/cocoa/QuartzCoreSPI.h>
+#import <wtf/SoftLinking.h>
+#import <wtf/spi/cocoa/SecuritySPI.h>
 
 using namespace WebKit;
 using namespace WebCore;
 
+SOFT_LINK_PRIVATE_FRAMEWORK_OPTIONAL(LinkPresentation)
+
 namespace WebKit {
 
+static const NSTimeInterval showHideAnimationDuration = 0.1;
+static const NSTimeInterval autoHideDelay = 4.0;
+
 static void replaceViewWithView(UIView *view, UIView *otherView)
 {
     [CATransaction begin];
@@ -115,6 +129,7 @@
     RetainPtr<UIView> _backgroundView;
     RetainPtr<UILongPressGestureRecognizer> _touchGestureRecognizer;
     RetainPtr<UIButton> _cancelButton;
+    RetainPtr<UIButton> _locationButton;
     RetainPtr<UIVisualEffectView> _visualEffectView;
 }
 
@@ -129,8 +144,17 @@
 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
 {
     [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
-    [self contentView].frame = self.view.bounds;
-    [(WKWebView *)[self contentView] _overrideLayoutParametersWithMinimumLayoutSize:size maximumUnobscuredSizeOverride:size];
+    [coordinator animateAlongsideTransition: ^(id<UIViewControllerTransitionCoordinatorContext> context) {
+
+        void (^webViewUpdateBlock)() = ^{
+            [(WKWebView *)[self contentView] _overrideLayoutParametersWithMinimumLayoutSize:size maximumUnobscuredSizeOverride:size];
+        };
+
+        [(WKWebView *)[self contentView] _beginAnimatedResizeWithUpdates:webViewUpdateBlock];
+        [(WKWebView *)[self contentView] _setInterfaceOrientationOverride:[UIApp statusBarOrientation]];
+    } completion:^(id <UIViewControllerTransitionCoordinatorContext>context) {
+        [(WKWebView *)[self contentView] _endAnimatedResize];
+    }];
 }
 
 + (void)configureView:(UIView *)view withBackgroundFillOfColor:(UIColor *)fillColor opacity:(CGFloat)opacity filter:(NSString *)filter
@@ -160,9 +184,6 @@
 - (UIVisualEffectView *)visualEffectViewWithFrame:(CGRect)frame
 {
     RetainPtr<UIVisualEffectView> visualEffectView = adoptNS([[UIVisualEffectView alloc] initWithEffect:[UIVisualEffect emptyEffect]]);
-    [visualEffectView setFrame:frame];
-    [visualEffectView _setContinuousCornerRadius:((CGRectGetHeight([visualEffectView bounds]) > 40.0) ? 16.0 : 8.0)];
-    [visualEffectView setAutoresizingMask:(UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin)];
     [self _updateTransparencyOfVisualEffectView:visualEffectView.get()];
 
     RetainPtr<UIView> backLayerTintView = adoptNS([[UIView alloc] initWithFrame:[visualEffectView bounds]]);
@@ -182,39 +203,131 @@
     return visualEffectView.autorelease();
 }
 
-- (void)loadView
+static UIEdgeInsets mirrorEdgeInsets(UIEdgeInsets insets)
 {
-    [self setView:adoptNS([[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]).get()];
-    [[self view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
+    return UIEdgeInsetsMake(insets.top, insets.right, insets.bottom, insets.left);
+}
 
-    CGRect doneButtonRect = CGRectMake(10, 20, 60, 47);
-    
-    _visualEffectView = [self visualEffectViewWithFrame:doneButtonRect];
-    [_visualEffectView setAlpha:0];
+- (void)_updateLayoutMargins
+{
+    UIView *view = [self view];
+    [view setPreservesSuperviewLayoutMargins:NO];
+
+    UIEdgeInsets targetInsets = [view safeAreaInsets];
+    targetInsets.top = std::max(targetInsets.top, 20.0);
+    [view setLayoutMargins:targetInsets];
+}
+
+- (void)viewDidLayoutSubviews
+{
+    [self _updateLayoutMargins];
+}
+
+-  (void)setLocation:(NSString *)locationName secure:(BOOL)secure trustedName:(BOOL)trustedName trustedSite:(BOOL)trustedSite
+{
+    UIColor *greenTint = [UIColor colorWithRed:100 / 255.0 green:175 / 255.0 blue:99 / 255.0 alpha:1.0];
+    UIColor *whiteTint = [UIColor whiteColor];
+
+    float hPadding = 14;
+    NSString *lockImageName = @"LockMini";
+
+    float lockSpacing = secure ? 10 : 0;
+
+    UIEdgeInsets locationContentEdgeInsets = UIEdgeInsetsMake(0, hPadding+lockSpacing, 0, hPadding);
+    UIEdgeInsets locationImageEdgeInsets = UIEdgeInsetsMake(0, -lockSpacing, 0, 0);
+
+    if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:[[self view] semanticContentAttribute]] == UIUserInterfaceLayoutDirectionRightToLeft) {
+        locationContentEdgeInsets = mirrorEdgeInsets(locationContentEdgeInsets);
+        locationImageEdgeInsets = mirrorEdgeInsets(locationImageEdgeInsets);
+        [_locationButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];
+    }
+
+    [_locationButton setTitleColor:(trustedName ? greenTint : whiteTint) forState:UIControlStateNormal];
+
+    if (secure) {
+        NSBundle *bundle = [NSBundle bundleForClass:[WKFullScreenWindowController class]];
+        UIImage *lockImage = [UIImage imageNamed:lockImageName inBundle:bundle compatibleWithTraitCollection:nil];
+        [_locationButton setImage:[lockImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
+        [[_locationButton imageView] setTintColor:trustedSite ? greenTint : whiteTint];
+        [_locationButton setTintColor:trustedSite ? greenTint : whiteTint];
+    } else
+        [_locationButton setImage:nil forState:UIControlStateNormal];
+
+    [_locationButton setContentEdgeInsets:locationContentEdgeInsets];
+    [_locationButton setImageEdgeInsets:locationImageEdgeInsets];
+    [_locationButton setTitle:locationName forState:UIControlStateNormal];
+    [[_locationButton titleLabel] setLineBreakMode:NSLineBreakByTruncatingTail];
+    [[_locationButton titleLabel] setAdjustsFontSizeToFitWidth:NO];
+}
+
+- (void)createSubviews
+{
+    _visualEffectView = [self visualEffectViewWithFrame:CGRectMake(0, 0, 20, 20)];
+
+    [_visualEffectView setTranslatesAutoresizingMaskIntoConstraints:NO];
     [[self view] addSubview:_visualEffectView.get()];
 
     _cancelButton = [UIButton buttonWithType:UIButtonTypeSystem];
-    [_cancelButton setAutoresizingMask:(UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin)];
-    [_cancelButton setFrame:doneButtonRect];
-    [_cancelButton addTarget:self action:@selector(cancelAction:) forControlEvents:UIControlEventTouchUpInside];
+    [_cancelButton setTranslatesAutoresizingMaskIntoConstraints:NO];
     [_cancelButton setAdjustsImageWhenHighlighted:NO];
     [_cancelButton setBackgroundColor: [UIColor blackColor]];
-    [[_cancelButton layer] setCornerRadius:6];
-    [_cancelButton setAlpha:0];
-    NSBundle *bundle = [NSBundle bundleForClass:[WKFullScreenWindowController class]];
-    RetainPtr<UIImage> image = [UIImage imageNamed:@"Done" inBundle:bundle compatibleWithTraitCollection:nil];
-    [_cancelButton setImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
-
-    [_cancelButton setTintColor:[UIColor colorWithWhite:1.0 alpha:0.55]];
     [[_cancelButton layer] setCompositingFilter:[CAFilter filterWithType:kCAFilterPlusL]];
+    [_cancelButton setTitle:WEB_UI_STRING("Done", "Text of button that exits element fullscreen.") forState:UIControlStateNormal];
+    [_cancelButton setTintColor:[UIColor whiteColor]];
+    [_cancelButton addTarget:self action:@selector(cancelAction:) forControlEvents:UIControlEventTouchUpInside];
 
     [[self view] addSubview:_cancelButton.get()];
 
+    _locationButton = [UIButton buttonWithType:UIButtonTypeSystem];
+    [_locationButton setTranslatesAutoresizingMaskIntoConstraints:NO];
+    [_locationButton setAdjustsImageWhenHighlighted:NO];
+    [_locationButton setBackgroundColor:[UIColor blackColor]];
+    [[_locationButton layer] setCompositingFilter:[CAFilter filterWithType:kCAFilterPlusL]];
+    [[self view] addSubview:_locationButton.get()];
+
+    UILayoutGuide* containerGuide = [[self view] layoutMarginsGuide];
+
+    [[[_visualEffectView leftAnchor] constraintEqualToAnchor:[[self view] leftAnchor]] setActive:YES];
+    [[[_visualEffectView rightAnchor] constraintEqualToAnchor:[[self view] rightAnchor]] setActive:YES];
+    [[[_visualEffectView topAnchor] constraintEqualToAnchor:[[self view] topAnchor]] setActive:YES];
+    [[[_visualEffectView heightAnchor] constraintGreaterThanOrEqualToConstant:20] setActive:YES];
+
+    NSLayoutConstraint *bottom = [[_visualEffectView bottomAnchor] constraintEqualToAnchor:[containerGuide topAnchor]];
+    [bottom setPriority:UILayoutPriorityRequired - 1];
+    [bottom setActive:YES];
+
+    [[[_cancelButton leadingAnchor] constraintEqualToAnchor:[containerGuide leadingAnchor]] setActive:YES];
+    [[[_cancelButton topAnchor] constraintEqualToAnchor:[[self view] topAnchor]] setActive:YES];
+    [[[_cancelButton bottomAnchor] constraintEqualToAnchor:[_visualEffectView bottomAnchor]] setActive:YES];
+
+    [[[_locationButton heightAnchor] constraintEqualToConstant:20] setActive:YES];
+    [[[_locationButton bottomAnchor] constraintEqualToAnchor:[_visualEffectView bottomAnchor]] setActive:YES];
+    [[[_locationButton leadingAnchor] constraintGreaterThanOrEqualToAnchor:[_cancelButton trailingAnchor]] setActive:YES];
+    [[[_locationButton trailingAnchor] constraintLessThanOrEqualToAnchor:[[self view] trailingAnchor]] setActive:YES];
+    NSLayoutConstraint *centeringConstraint = [[_locationButton centerXAnchor] constraintEqualToAnchor:[[self view] centerXAnchor]];
+    [centeringConstraint setPriority:UILayoutPriorityDefaultLow];
+    [centeringConstraint setActive:YES];
+
+    [_visualEffectView setAlpha:0];
+    [_cancelButton setAlpha:0];
+    [_locationButton setAlpha:0];
+
+    [_visualEffectView setHidden:YES];
+    [_cancelButton setHidden:YES];
+    [_locationButton setHidden:YES];
+}
+
+- (void)loadView
+{
+    [self setView:adoptNS([[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]).get()];
+    [[self view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
+
     _touchGestureRecognizer = adoptNS([[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(showCancelButton:)]);
     [_touchGestureRecognizer setDelegate:self];
     [_touchGestureRecognizer setCancelsTouchesInView:NO];
     [_touchGestureRecognizer setMinimumPressDuration:0];
     [[self view] addGestureRecognizer:_touchGestureRecognizer.get()];
+    [self createSubviews];
 }
 
 - (void)viewWillAppear:(BOOL)animated
@@ -224,6 +337,11 @@
     [[self view] insertSubview:[self contentView] atIndex:0];
 }
 
+- (void)viewDidAppear:(BOOL)animated
+{
+    [self _updateLayoutMargins];
+}
+
 - (void)cancelAction:(id)sender
 {
     [[self target] performSelector:[self action]];
@@ -232,12 +350,14 @@
 - (void)hideCancelButton
 {
     [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideCancelButton) object:nil];
-    [UIView animateWithDuration:0.2 animations:^{
+    [UIView animateWithDuration:showHideAnimationDuration animations:^{
         [_visualEffectView setAlpha:0];
         [_cancelButton setAlpha:0];
+        [_locationButton setAlpha:0];
     } completion:^(BOOL finished){
         if (finished) {
             [_cancelButton setHidden:YES];
+            [_locationButton setHidden:YES];
             [_visualEffectView setHidden:YES];
         }
     }];
@@ -246,12 +366,14 @@
 - (void)showCancelButton:(id)sender
 {
     [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideCancelButton) object:nil];
-    [self performSelector:@selector(hideCancelButton) withObject:nil afterDelay:3.0];
-    [UIView animateWithDuration:0.2 animations: ^{
+    [self performSelector:@selector(hideCancelButton) withObject:nil afterDelay:autoHideDelay];
+    [UIView animateWithDuration:showHideAnimationDuration animations: ^{
         [_visualEffectView setHidden:NO];
         [_cancelButton setHidden:NO];
+        [_locationButton setHidden:NO];
         [_visualEffectView setAlpha:1];
         [_cancelButton setAlpha:1];
+        [_locationButton setAlpha:1];
     }];
 }
 
@@ -261,11 +383,6 @@
     [self setAction:action];
 }
 
-- (BOOL)prefersStatusBarHidden
-{
-    return YES;
-}
-
 // MARK - UIGestureRecognizerDelegate
 
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
@@ -278,11 +395,19 @@
 @interface _WKFullscreenRootViewController : UIViewController
 @end
 
-@implementation _WKFullscreenRootViewController : UIViewController
+@implementation _WKFullscreenRootViewController {
+    BOOL _showsStatusBar;
+}
 
+- (void)setShowsStatusBar:(BOOL)value
+{
+    _showsStatusBar = value;
+    [self setNeedsStatusBarAppearanceUpdate];
+}
+
 - (BOOL)prefersStatusBarHidden
 {
-    return YES;
+    return !_showsStatusBar;
 }
 
 @end
@@ -359,6 +484,7 @@
     WKWebViewState _viewState;
 
     RetainPtr<UIWindow> _window;
+    RetainPtr<_WKFullscreenRootViewController> _rootViewController;
 
     RefPtr<WebKit::VoidCallback> _repaintCallback;
     RetainPtr<UIViewController> _viewControllerForPresentation;
@@ -366,6 +492,10 @@
 
     CGRect _initialFrame;
     CGRect _finalFrame;
+
+    RetainPtr<NSString> _EVOrganizationName;
+    BOOL _EVOrganizationNameIsValid;
+
 }
 
 #pragma mark -
@@ -405,16 +535,100 @@
 #pragma mark -
 #pragma mark Exposed Interface
 
+- (void)_invalidateEVOrganizationName
+{
+    _EVOrganizationName = nil;
+    _EVOrganizationNameIsValid = NO;
+}
+
+- (BOOL)isSecure
+{
+    return _webView.hasOnlySecureContent;
+}
+
+- (SecTrustRef)_serverTrust
+{
+    return _webView.serverTrust;
+}
+
+- (NSString *)_EVOrganizationName
+{
+    if (!self.isSecure)
+        return nil;
+
+    if (_EVOrganizationNameIsValid)
+        return _EVOrganizationName.get();
+
+    ASSERT(!_EVOrganizationName.get());
+    _EVOrganizationNameIsValid = YES;
+
+    SecTrustRef trust = [self _serverTrust];
+    if (!trust)
+        return nil;
+
+    NSDictionary *infoDictionary = [(__bridge NSDictionary *)SecTrustCopyInfo(trust) autorelease];
+    // If SecTrustCopyInfo returned NULL then it's likely that the SecTrustRef has not been evaluated
+    // and the only way to get the information we need is to call SecTrustEvaluate ourselves.
+    if (!infoDictionary) {
+        OSStatus err = SecTrustEvaluate(trust, NULL);
+        if (err == noErr)
+            infoDictionary = [(__bridge NSDictionary *)SecTrustCopyInfo(trust) autorelease];
+        if (!infoDictionary)
+            return nil;
+    }
+
+    // Make sure that the EV certificate is valid against our certificate chain.
+    id hasEV = [infoDictionary objectForKey:(__bridge NSString *)kSecTrustInfoExtendedValidationKey];
+    if (![hasEV isKindOfClass:[NSValue class]] || ![hasEV boolValue])
+        return nil;
+
+    // Make sure that we could contact revocation server and it is still valid.
+    id isNotRevoked = [infoDictionary objectForKey:(__bridge NSString *)kSecTrustInfoRevocationKey];
+    if (![isNotRevoked isKindOfClass:[NSValue class]] || ![isNotRevoked boolValue])
+        return nil;
+
+    _EVOrganizationName = [infoDictionary objectForKey:(__bridge NSString *)kSecTrustInfoCompanyNameKey];
+    return _EVOrganizationName.get();
+}
+
+- (void)updateLocationInfo
+{
+    NSURL* url = ""
+
+    NSString *EVOrganizationName = [self _EVOrganizationName];
+    BOOL showsEVOrganizationName = [EVOrganizationName length] > 0;
+
+    NSString *domain = nil;
+
+    if (LinkPresentationLibrary())
+        domain = [url _lp_simplifiedDisplayString];
+    else
+        domain = userVisibleString(url);
+
+    NSString *text = nil;
+    if ([[url scheme] caseInsensitiveCompare:@"data"] == NSOrderedSame)
+        text = @"data:";
+    else if (showsEVOrganizationName)
+        text = EVOrganizationName;
+    else
+        text = domain;
+
+    [_fullscreenViewController setLocation:text secure:self.isSecure trustedName:showsEVOrganizationName trustedSite:!!EVOrganizationName];
+}
+
 - (void)enterFullScreen
 {
     if ([self isFullScreen])
         return;
 
+    [self _invalidateEVOrganizationName];
+
     _fullScreenState = WaitingToEnterFullScreen;
 
     _window = adoptNS([[UIWindow alloc] init]);
     [_window setBackgroundColor:[UIColor clearColor]];
-    [_window setRootViewController:adoptNS([[_WKFullscreenRootViewController alloc] init]).get()];
+    _rootViewController = adoptNS([[_WKFullscreenRootViewController alloc] init]);
+    [_window setRootViewController:_rootViewController.get()];
     [[_window rootViewController] setView:adoptNS([[UIView alloc] initWithFrame:[_window bounds]]).get()];
     [[[_window rootViewController] view] setBackgroundColor:[UIColor clearColor]];
     [[[_window rootViewController] view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
@@ -427,6 +641,7 @@
     [_fullscreenViewController setModalPresentationStyle:UIModalPresentationCustom];
     [_fullscreenViewController setTarget:self action:@selector(requestExitFullScreen)];
     [[_fullscreenViewController view] setFrame:[[_viewControllerForPresentation view] bounds]];
+    [self updateLocationInfo];
 
     [self _manager]->saveScrollPosition();
 
@@ -461,6 +676,7 @@
         [self _manager]->setAnimatingFullScreen(true);
 
         _repaintCallback = VoidCallback::create([protectedSelf = retainPtr(self), self](WebKit::CallbackBase::Error) {
+            _repaintCallback = nullptr;
             if (![_webView _page])
                 return;
 
@@ -489,11 +705,13 @@
 
     [_window setWindowLevel:UIWindowLevelNormal];
     [_window makeKeyAndVisible];
+    [_rootViewController setShowsStatusBar:YES];
 
     [CATransaction commit];
 
     [_viewControllerForPresentation presentViewController:_fullscreenViewController.get() animated:YES completion:^{
         [self completedEnterFullScreen];
+        [_rootViewController setShowsStatusBar:NO];
     }];
 }
 
@@ -536,11 +754,13 @@
     
     [_webView _page]->setSuppressVisibilityUpdates(true);
 
+    [_rootViewController setShowsStatusBar:YES];
     [_fullscreenViewController dismissViewControllerAnimated:YES completion:^{
         if (![_webView _page])
             return;
 
         [self completedExitFullScreen];
+        [_rootViewController setShowsStatusBar:NO];
     }];
 }
 

Added: trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/Contents.json (0 => 226218)


--- trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/Contents.json	                        (rev 0)
+++ trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/Contents.json	2017-12-21 10:56:58 UTC (rev 226218)
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "navigationbarlockm...@2x.pdf",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "navigationbarlockm...@3x.pdf",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

Copied: trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/navigationbarlockm...@2x.pdf (from rev 226217, trunk/Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf) (0 => 226218)


--- trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/navigationbarlockm...@2x.pdf	                        (rev 0)
+++ trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/navigationbarlockm...@2x.pdf	2017-12-21 10:56:58 UTC (rev 226218)
@@ -0,0 +1,121 @@
+%PDF-1.3
+%\xC4\xE5\xF2\xE5\xEB\xA7\xF3\xA0\xD0\xC4\xC6
+4 0 obj
+<< /Length 5 0 R /Filter /FlateDecode >>
+stream
+xmR\xCBN1\xBC\xE7+|F\xAAk\xE7\x9D3\x88{O\xFD\x80\xA4mQ\xE9\xFFKL\xB2\x9B\xA4\xAA\xD8\xF6\x8F_\xE3\xB1ot\xA2E\x8E\xDE\xE6\x90H#\xA7@
+\xECBR\xEFv`%Ƕ!;\xA0H\x8B\x86\x84\xA4jX\xCE%j0K3q\xD9GZ7/\xA7쭛U\x84\xC5|\xD6\xCFV\xD82\x99t\xA5̩\x8D\xF4\x80\xAA\xD4\xF6{\x83f\x8C\xE6\xE0Ҝ\x9D\xC84\xBB嶱\x9FT\x98$\xEA\xA8\xD6K\xC8P&qq\xB1\xD8b\x96\xB9\xE4RI\xA9g\xCDE-hvd\xEFL\xCB\xC4\xBB:\xCEg,G\x95\x9CG\xF1*Z(\xDEڡ\xC3D\x96\xA9؈ZɳD'I\xCD\xC0\xB6\xC0S/>\x80\xC1`\xC1B\xF6\xA0\xBE?,\xACcf\xCCӋO\xE6}te\xFESk\xA5\xF3]I\xF0\x83*\x9A\xCC\xEF\x9D+\xC0\x91\xBE\xE9\xF8zWZ\xEE\xCD-t_\xE8\xE0\xB0Ƀ\xE7DDIY\x9C#!\xE9\xB3])J6 \xF5\xD2\x9EB\x85U|\x8C	\xCF\x8D\x85,\xF8Á\x88\xE0\xF0m\xB1+\xF8[\x8E@[Z\xCD\xADl`\xD8\x85ֻ\xB5\xB3\xFC\xC8@\x85\xED\xBF \xAF\x95\xBE\x9Ef\xACt\xCF\xE6J\xC7\xF7\x8B\xD2\xDB\x9D\xFEI]\xAB\x87
+endstream
+endobj
+5 0 obj
+366
+endobj
+2 0 obj
+<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 12 17]
+>>
+endobj
+6 0 obj
+<< /ProcSet [ /PDF ] /ColorSpace << /Cs1 7 0 R >> /XObject << /Fm1 8 0 R >>
+>>
+endobj
+8 0 obj
+<< /Length 9 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType
+1 /BBox [-10 -10 22 20] /Resources 10 0 R /Group << /S /Transparency /CS 11 0 R
+/I true /K false >> >>
+stream
+x+TT(T\xD054\xE3\##0#\xC402P\xC8\xF3\xC0\x8Cp-\x85< 44R*/JU	\xE8\x99)d*\xE8;r%\x83\xA5+\x8A\x93\x81\xBAL\xC1\xD8\xC4H\xC1\xAC6M!\xBA\xCC\xCF
+endstream
+endobj
+9 0 obj
+84
+endobj
+10 0 obj
+<< /ProcSet [ /PDF ] /ColorSpace << /Cs1 7 0 R >> >>
+endobj
+12 0 obj
+<< /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
+stream
+x\x9D\x96wTS\xD9\x87Ͻ7\xBD\xD0" %\xF4z	 \xD2;HQ\x89I\x80P\x86\x84&vDF)VdT\xC0G\x87"cE\x83\x82b\xD7	\xF2P\xC6\xC1QDE\xE5݌k	\xEF\xAD5\xF3ޚ\xFD\xC7Y\xDF\xD9\xE7\xB7\xD7\xD9g\xEF}׺P\xFC\x82\xC2tX\x804\xA1X\xEE\xEB\xC1\\xCB\xC4\xF7X\xC0\xE1ffG\xF8D\xD4\xFC\xBD=\x99\x99\xA8HƳ\xF6\xEE.\x80d\xBB\xDB,\xBFP&s\xD6\xFF\x91"7C$
+E\xD56<~&\xE5\x94S\xB3\xC52\xFF\xCA\xF4\x95)2\x8612\xA1	\xA2\xAC"\xE3įl\xF6\xA7\xE6+\xBBɘ\x97&\xE4\xA1Y\xCE\xBC4\x9E\x8C\xBBPޚ%ᣌ\xA1\\x98%\xE0g\xA3|e\xBDTI\x9A\xE5\xF7(\xD3\xD3\xF8\x9CL0\x99_\xCC\xE7&\xA1l\x892E\xEE\x89\xF2\x94\xC49\xBCr\x8B\xF99h\x9Ex\xA6g\xE4\x8A\x89Ib\xA6טi\xE5\xE8\xC8f\xFA\xF1\xB3S\xF9b1+\x94\xC3M\xE1\x88xL\xCF\xF4\xB4\x8E0\x80\xAFo\x96E%Ym\x99h\x91\xED\xAD\xED\xEDY\xD6\xE6h\xF9\xBF\xD9\xDF~S\xFD=\xC8z\xFBU\xF1&\xECϞA\x8C\x9EY\xDFl\xEC\xAC/\xBD\xF6$Z\x9B\xB3\xBE\x95U\xB4m@\xE5\xE1\xACO\xEF \xF2\xB4ޜ\xF3\x86l^\x92\xC4\xE2'\x8B\xEC\xECls\x9Fk.+\xE87\xFB\x9F\x82oʿ\x869\xF7\x99\xCB\xEE\xFBV;\xA6?\x81#I3eE妧\xA6KD\xCC\xCC\x97\xCFd\xFD\xF7\xFF\xE3\xC09i\xCD\xC9\xC3,\x9C\x9F\xC0\xF1\x85\xE8UQ\xE8\x94	\x84\x89h\xBB\x85<\x81X\x90.d
+\x84\xD5\xE16'~\x9Dkhu_}\x859P\xB8I\xC8o=C#$n?z}\xEB[1
+Ⱦ\xBCh\xAD\x91\xAFs\x8F2z\xFE\xE7\xFA\\x8An\xE1LA"S\xE6\xF6\x8Fdr%\xA2,\xA3߄l\xC1\x90t\xA0
+4\x81.0,`+\x803p\xDE \x84\x80H\x96.Hi@\xB2A>\xD8
+A1\xD8v\x83jpԁz\xD0N\x826p\W\xC0+p\x80G@
+\x86\xC1K0ށi\x82\xF0\xA2A\xAA\x90\xA4\x99B\xD6ZyCAP8\xC5C\x89\x90\x92@\xF9\xD0&\xA8*\x83\xAA\xA1CP=\xF4#t\xBA]\x83\xFA\xA0\xD0 4\xFD}\x84\x98\xD3a+\xD8\xB6\x80ٰ;G\xC2\xCB\xE0Dx\x9C\xC0\xDB\xE1J\xB8>\xB7\xC2\xE1\xF0,\x85_“@\xC8\xD1FX\xF1DB\x90X$!k\x91"\xA4\xA9E\x9A\x90\xA4\xB9\x8DH\x91q\xE4\x87\xA1a\x98\xC6\xE3\x87Y\x8C\xE1bVa\xD6bJ0՘c\x98VL\xE66f3\x81\xF9\x82\xA5bձ\xA6X'\xAC?v	6\x9B\x8D-\xC4V`\x8F`[\xB0\x97\xB1\xD8a\xEC;\xC7\xC0\xE2p~\xB8\2n5\xAE\xB7׌\xBB\x80\xEB\xC3+\xE1&\xF1x\xBC*\xDE\xEF\x82\xC1s\xF0b|!\xBE
+ߏƿ'\x90	Zk\x82!\x96 $l$T\xE7\xFD\x84\xC24Q\x81\xA8Ot"\x86y\xC4\b)\xB1\x8E\xD8A\xBCI&N\x93I\x86$R$)\x99\xB4\x81TIj"]&=&\xBD!\x93\xC9:dGrY@^O\xAE$\x9F _%\x92?P\x94(&OJEB\xD9N9J\xB9@y@yC\xA5R+\xA8n\xD4X\xAA\x98\xBA\x9DZO\xBDD}J}/G\x933\x97\xF3\x97\xE3ɭ\x93\xAB\x91k\x95\xEB\x97{%O\x94חw\x97_.\x9F'_!J\xFE\xA6\xFC\xB8Q\xC1@\xC1S\x81\xA3\xB0V\xA1F\xE1\xB4\xC2=\x85IE\x9A\xA2\x95b\x88b\x9Ab\x89b\x83\xE25\xC5Q%\xBC\x92\x81\x92\xB7O\xA9@\xE9\xB0\xD2%\xA5!BӥyҸ\xB4M\xB4:\xDAe\xDA0G7\xA4\xFBӓ\xE9\xC5\xF4\xE8\xBD\xF4	e%e[\xE5(\xE5\xE5\xE5\xB3\xCAR\xC20`\xF83R\xA5\x8C\x93\x8C\xBB\x8C\x8F\xF34\xE6\xB9\xCF\xE3\xCF\xDB6\xAFi^\xFF\xBC)\x95\xF9*n*|\x95"\x95f\x95\x95\x8F\xAALUo\xD5՝\xAAm\xAAO\xD40j&jaj\xD9j\xFB\xD5.\xAB\x8Dϧ\xCFw\x9Eϝ_4\xFF\xE4\xFC\x87갺\x89z\xB8\xFAj\xF5\xC3\xEA=\xEA\x93\x9A\xBEU\x974\xC65\x9An\x9Aɚ\xE5\x9A\xE74ǴhZ\xB5Z\xE5Z\xE7\xB5^0\x95\x99\xEE\xCCTf%\xB3\x8B9\xA1\xAD\xAE\xED\xA7-\xD1>\xA4ݫ=\
 xADc\xA8\xB3Xg\xA3N\xB3\xCE]\x92.[7A\xB7\\xB7SwBOK/X/_\xAFQ\xEF\xA1>Q\x9F\xAD\x9F\xA4\xBFG\xBF[\xCA\xC0\xD0 \xDA`\x8BA\x9B\xC1\xA8\xA1\x8A\xA1\xBFa\x9Ea\xA3\xE1c#\xAA\x91\xAB\xD1*\xA3Z\xA3;\xC68c\xB6q\x8A\xF1>\xE3[&\xB0\x89\x9DI\x92I\x8D\xC9MS\xD8\xD4\xDET`\xBAϴ\xCFk\xE6h&4\xAB5\xBBǢ\xB0\xDCYY\xACF֠9\xC3<\xC8|\xA3y\x9B\xF9+=\x8BX\x8B\x9D\xDD_,\xED,S-\xEB,Y)YXm\xB4\xEA\xB0\xFA\xC3\xDAĚk]c}džj\xE3c\xB3Φ\xDD浭\xA9-\xDFv\xBF\xED};\x9A]\xB0\xDD\xBBN\xBB\xCF\xF6\xF6"\xFB&\xFB1=\x87x\x87\xBD\xF7\xD8tv(\xBB\x84}\xD5\xEB\xE8\xE1\xB8\xCE\xF1\x8C\xE3'{'\xB1\xD3I\xA7ߝY\xCE)\xCE+Σ\xF0\xD4-r\xD1q\xE1\xB8r\x91.d.\x8C_xp\xA1\xD4Uە\xE3Z\xEB\xFA\xCCM׍\xE7v\xC4m\xC4\xDD\xD8=\xD9\xFD\xB8\xFB+K\x91G\x8Bǔ\xA7\x93\xE7\xCF^\x88\x97\xAFW\x91W\xAF\xB7\x92\xF7b\xEFj\xEF\xA7>:>\x89>\x8D>\xBEv\xBE\xAB}/\xF8a\xFD\xFDv\xFA\xDD\xF3\xD7\xF0\xE7\xFA\xD7\xFBO8\xAC	\xE8
+\xA4FV>2	u\xC3\xC1\xC1\xBB\x82/\xD2_$\\xD4B\xFCCv\x85<	5]\xFAs.,4\xAC&\xECy\xB8Ux~xw-bEDCĻH\x8F\xC8\xD2\xC8G\x8B\x8DKwF\xC9G\xC5E\xD5GME{E\x97EK\x97X,Y\xB3\xE4F\x8CZ\x8C \xA6={$vr\xA9\xF7\xD2\xDDK\x87\xE3\xEC\xE2
+\xE3\xEE.3\\x96\xB3\xEC\xDAr\xB5\xE5\xA9\xCBϮ\x90_\xC1Yq*\xDF\xFF\x89©\xE5L\xAE\xF4_\xB9w\xE5ד\xBB\x87\xFB\x92\xE7\xC6+\xE7\x8D\xF1]\xF8e\xFC\x91\x97\x84\xB2\x84\xD1D\x97\xC4]\x89cI\xAEII\xE3OA\xB5\xE0u\xB2_\xF2\x81䩔\x90\x94\xA3)3\xA9ѩ\xCDi\x84\xB4\xF8\xB4\xD3B%a\x8A\xB0+]3='\xBD/\xC34\xA30C\xBA\xCAi\xD5\xEEU\xA2@ёL(sYf\xBB\x98\x8E\xFEL\xF5H\x8C$\x9B%\x83Y\xB3j\xB2\xDEgGe\x9F\xCAQ\xCC\xE6\xF4\xE4\x9A\xE4n\xCB\xC9\xF3\xC9\xFB~5f5wug\xBEv\xFE\x86\xFC\xC15\xEEk\xAD\x85֮\۹Nw]\xC1\xBA\xE1\xF5\xBE\xEB\x8Fm mH\xD9\xF0\xCBFˍe\xDFn\x8A\xDE\xD4Q\xA0Q\xB0\xBE`h\xB3\xEF\xE6\xC6B\xB9BQ\xE1\xBD-\xCE[l\xC5ll\xED\xDDf\xB3\xADjۗ"^\xD1\xF5b\xCB\xE2\x8A\xE2O%ܒ\xEB\xDFY}W\xF9\xDD\xCC\xF6\x84\x{DF65}\xF6\xA5\xFBw\xE0vw\xDC\xDD\xE9\xBA\xF3X\x99bY^\xD9Ю\xE0]\xAD\xE5\xCC\xF2\xA2\xF2\xB7\xBBW\xEC\xBEVa[q`i\x8Fd\x8F\xB42\xA8\xB2\xBDJ\xAFjGէ\xEA\xA4\xEA\x81\x8F\x9A\xE6\xBD\xEA{\xB7\xED\x9D\xDA\xC7\xDB׿\xDFm\xD3\x8D\xC5>\xBC\xC8\xF7Pk\xADAm\xC5a\xDC\xE1\xAC\x
 C3\xCF\xEB\xA2꺿g_D\xEDH\xF1\x91\xCFG\x85G\xA5\xC7u\xD5;\xD4\xD77\xA87\x946\x92Ʊ\xE3q\xC7o\xFD\xE0\xF5C{\xAB\xE9P3\xA3\xB9\xF88!9\xF1\xE2\xC7\xF8\xEF\x9E<\xD9y\x8A}\xAA\xE9'\xFD\x9F\xF6\xB6\xD0Z\x8AZ\xA1\xD6\xDC։\xB6\xA46i{L{\xDF\xE9\x80ӝ\xCE-?\x9B\xFF|\xF4\x8C\x{1996B3}\xCAgKϑ\xCE\x9C\x9B9\x9Fw~\xF2Bƅ\xF1\x8B\x89\x87:Wt>\xBA\xB4\xE4ҝ\xAE\xB0\xAE\xDEˁ\x97\xAF^\xF1\xB9r\xA9۽\xFB\xFCU\x97\xABg\xAE9];}\x9D}\xBD\xED\x86\xFD\x8D\xD6\xBB\x9E\x96_\xEC~i\xE9\xB5\xEFm\xBD\xE9p\xB3\xFD\x96㭎\xBE}\xE7\xFA]\xFB/\xDE\xF6\xBA}\xE5\x8E\xFF\x9D\x8B\xFA\xEE.\xBE{\xFF^\xDC=\xE9}\xDE\xFD\xD1\xA9^?\xCCz8\xFDh\xFDc\xEC\xE3\xA2'
+O*\x9E\xAA?\xAD\xFD\xD5\xF8\xD7f\xA9\xBD\xF4\xEC\xA0\xD7`ϳ\x88g\x8F\x86\xB8C/\xFF\x95\xF9\xAFO\xC3ϩ\xCF+F\xB4F\xEAG\xADGό\xF9\x8C\xDDz\xB1\xF4\xC5\xF0ˌ\x97\xD3ㅿ)\xFE\xB6\xF7\x95ѫ\x9F~w\xFB\xBDgb\xC9\xC4\xF0k\xD1\xEB\x99?Jި\xBE9\xFA\xD6\xF6m\xE7d\xE8\xE4\xD3wi獵\x8Aޫ\xBE?\xF6\x81\xFD\xA1\xFBc\xF4Ǒ\xE9\xECO\xF8O\x95\x9F\x8D?w|	\xFC\xF2x&mf\xE6\xDF\xF7\x84\xF3\xFB
+endstream
+endobj
+13 0 obj
+2612
+endobj
+7 0 obj
+[ /ICCBased 12 0 R ]
+endobj
+14 0 obj
+<< /Length 15 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
+stream
+x\x85U[\x88U\xFE\x939\xC9
+\xBB\xCE\xD3\xDA\xD5-\xA4C\xBDt)\xBBK\xB6ݥ\xB4\x9A[\x93\xB4k\xB2\xD9\xD5A\xB3\x93\x93d\xCC\xEC$\xCEL\xD2}*\x82⋫\xBEIA\xBC\xBD-\x82\xD2z\xC1\xD6\xFBR\xA9PVw\xEB"(>\xB4xA(\xF4E\xB7\xF1;\x93d&Yj\x9Be\xCF|\xF3\xFD\xDF\xF9o\xE7\x9F\xA2\x81\xB5B\xBD\xAE\xFB\xA2%\xC36sɨ\xF2\xDC\xD1c\xCA\xC0:\xF9\xE9!\xA4Q,\xA8V=\x92\xCD\xCE~B+\xAE\xFD\xBF[?\x90O0W'\xEEl\xEFWo\xB9,rK%\xF2\xDD\xBEV\xB4\xD4%\xE0D\x81\xB3jݴ\x89\x86\xC1O\xB7\xEB\x8B\x86M$\xFC\xA2\xC0\xE56\x86\x8D\x86\xDB\xF85G\x93\xCFŠ9,\xAB\x95Bxx|\xB1\x87/\xF7\xE0vP\xC0O\x92\xDC\xD4TE\xF4"k\xD6J\x9A\xCEC{\xB9\x87\xB9Gy7\xB8\xA47P\xB3\xF3ہuȪ\xCE\xC6u\xB5\xBFR,\xC4\x9E^Q\x899\xE0G\x80\xAF5\xB5\x85L߮\xDB\xD1\xF0cD\xFE\x9D\x8D\xEA|x7p\xAAd\x9C\x86\xBFYi\xA4\xBA\xF8\x9DS\x95\xFC\xB3ශ\xFF\xC6X\xCC\xE9\xEC]S\xADzI;\xC1߮\xF0\xB4\xE8o\x88HR4;\x9D\x86\xE9\x80Y\xCB	=r\x90JEO\x8F\xBF^\xAD9\xC0\xA7\xF4\x99՜\xBC\xC8g\xEDT%&\xF2\xFC\xE5\x97
+\x87\xB2\xC0\xA3\xC0\xBFr=)\xF4\x88%\xFD[\xB7\xB3\x9DX\xC8\xD03".b\xB18\xB7\x9Czᇅ\xECJ>q\x99n\x9B\xF9\xCE^\xB6\\xD2\xA6;\xFAO*fJ\xF0bﵺ\xEE\xCC(r\xF8\xCDFNԎX\x81ɂ\x99H\xC3g ˍy\xD1O\x81\x9B\xB4\xE0+\xA7-bUɠMR(GI\x8A\xE2Z'\x96i\xA4\x83\xE1\xB0r0w]̈́\xB3Ϣ*x\x8D\x9A\x8E\xCDšu\x94\xED\x9D]\xADBe\xB0]w\xB4*\xC5BQ\x9E*\xF4؊\xEBS\xA1\xEE\xE0\xCA\xFF㧝ˍ\x8E\x9Faa\xB6\xFF\xFB\xD8,\xDBϦ\xD9)\xEC)\xF64;\xC0\xE2`g\xD8>\xD7w{\xBA\x89|n J\xDB\xCFˈ\xC8\xDDj\xBF\x88m*`\xFD\x8AY\xAE\x87\xBE\xAE,\x8F6\xC6<\xCB\xF3M\xBD\xF2\xC6\xDF=\xBDҰ\xB3\xEA*&\xFA:z\xE4^=\xFC\xB8Xź\xD8p}(\x81\x9F\xF8[Go\xBCZj\x9E\xBD\xD3eqRN\xB4֧\xDBz]U\x95\xEA\xCE\xCE%tACͼ\xA7\xE6\x89^\x97N\xF9\xA0m\x95\x9D{\xFE\xEAХ\xD3%cy\xD4cE\xF8\xAB\x99[:3\xEE\xB1\xE1\xC3\x86W\xC3\xEF\x85?\xFF.\xBD-}*}%\x9D\x97>\x97.\x93"]\x90.J_K\xDFJK_\xB8\xFA\xBB͐{\xF6$2s%\xF2\xD3խ\xB0\xB7טX9*o\x97\x96\xE3\xF2\xF9Qy\xD6U)\xF2\x88<%\xA7\xE4]\xB0lw\xCF͛o\x
 A5\xB7r\xF4\xE5(\xA2u\xFBs\xE7X\xE2Y\xD1\O8\xDF\xFD\x98͋\xD87\xF3\xC8X\xA3\xE3\xF0i\xA2\xDFb\xDE:	m\xEF\x93ש\x88\x85\xD8Ko\x99\xEEi1\xF3]\xDF\xC1D0\x8C\x90\xDC\x9C	N	\xDC}\x96\x83\xBB`\x9B\xC1\x9A\xE8\xCD+\xF3\xE1*\xFA*\xE56?!\xBE'\xAB\xD5O\x9AZ\xB9b+{\xC2\xE1'\x95>}\I\xEA\xE4\xB8R\xD0u\xC51Y\x8A\xC9-n6yq\x92\xC4wS\xEC#\xBA\x99s\xBE\x87\xBEmW<\xCE~\x86h\xFF_x\xF7}\xEFq\xC7D+\xD1\xC8\xE37\x86w\xE5\xEF\x9D{Bm\x98Ͷ?\xF2\xF9\xBE#\xB2J{\xF78\xF7\xBE\xA1(\xDE_?\xB7Z7\xF1x\x8Bh\xF3\xCDV\xEB\x9F\xF7[\xAD\xCD\xE0\x83\xE8\x82\xFE\xA0\x9F|U
+endstream
+endobj
+15 0 obj
+1079
+endobj
+11 0 obj
+[ /ICCBased 14 0 R ]
+endobj
+3 0 obj
+<< /Type /Pages /MediaBox [0 0 12 17] /Count 1 /Kids [ 2 0 R ] >>
+endobj
+16 0 obj
+<< /Type /Catalog /Pages 3 0 R /Version /1.4 >>
+endobj
+17 0 obj
+(Mac OS X 10.12.5 Quartz PDFContext)
+endobj
+18 0 obj
+(D:20170710230227Z00'00')
+endobj
+1 0 obj
+<< /Producer 17 0 R /CreationDate 18 0 R /ModDate 18 0 R >>
+endobj
+xref
+0 19
+0000000000 65535 f 
+0000005314 00000 n 
+0000000481 00000 n 
+0000005074 00000 n 
+0000000022 00000 n 
+0000000462 00000 n 
+0000000583 00000 n 
+0000003798 00000 n 
+0000000677 00000 n 
+0000000975 00000 n 
+0000000993 00000 n 
+0000005037 00000 n 
+0000001062 00000 n 
+0000003777 00000 n 
+0000003834 00000 n 
+0000005016 00000 n 
+0000005155 00000 n 
+0000005219 00000 n 
+0000005272 00000 n 
+trailer
+<< /Size 19 /Root 16 0 R /Info 1 0 R /ID [ <cec3d6fa08f0b75041dbcb1f3d77bad9>
+<cec3d6fa08f0b75041dbcb1f3d77bad9> ] >>
+startxref
+5389
+%%EOF

Copied: trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/navigationbarlockm...@3x.pdf (from rev 226217, trunk/Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf) (0 => 226218)


--- trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/navigationbarlockm...@3x.pdf	                        (rev 0)
+++ trunk/Source/WebKit/WebKit.xcassets/LockMini.imageset/navigationbarlockm...@3x.pdf	2017-12-21 10:56:58 UTC (rev 226218)
@@ -0,0 +1,120 @@
+%PDF-1.3
+%\xC4\xE5\xF2\xE5\xEB\xA7\xF3\xA0\xD0\xC4\xC6
+4 0 obj
+<< /Length 5 0 R /Filter /FlateDecode >>
+stream
+x]RAj\xC40\xBC\xFBs.\xACײl\xC79\xB7\xF4\xBE\xA7}@hi!۲\xCD\xFF\xA1#'q\xB6\x85@F\xF2h\xA4\x91}\xC7wH@̾D\xDCP74#\xF9a\xC3Q}\x90JB\x84\x8C\xBE\xEA(\x83\xE25\x874V\xCC.B\xBDTZe\xF0\xB9\x8C%\xD5@\xC5O\xD6\xEAg\x88z}HH\xE9*\x8E\xB8˳\xAE\x9DYV\x8E\x91\x9A\xC4:~\xF7\xD1\xFAph͹\xAA\xBBA"\xE7W\xABik[2\xA2\xF8a0Wk\xF8\xE0lM\xF4\xF6mN$\x9FDBT\xB7\xEBqZ%\xB5\xEEx\xB2\xEE\xC1\x8C\xEC\xC7\xCAE\xEE\x89\xC4	\xBA\x81f\xD7\xDBL-~\xF4\xD9\xD8}\xCCMj7\xC16;\xFC\xEBw\xC6\xF5	_\xE0\xA6!$\xFC\xBC\xE1j	_\xF0\x89\xF3\xF3"\x98\x96v\xB0L8)Nt\xA6A3/8A\xB3\x99\xCB\xDC{{
+\xDE7\xB7\xE85\xD1k6][\xE0` \xF2!(fH \xB7\xD1,x\xD6\xE8vcV\xE0\xDAD\xAD\x92\xC1\xF3j$𿊮T+\\xBF\x89<\xA2\xFF|\xB9\xCD\xD7\xF9\xF5&x\xF9\xC6\xE5\xDEʍt
+endstream
+endobj
+5 0 obj
+328
+endobj
+2 0 obj
+<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 18 26]
+>>
+endobj
+6 0 obj
+<< /ProcSet [ /PDF ] /ColorSpace << /Cs1 7 0 R >> /XObject << /Fm1 8 0 R >>
+>>
+endobj
+8 0 obj
+<< /Length 9 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType
+1 /BBox [-15 -15 33 30] /Resources 10 0 R /Group << /S /Transparency /CS 11 0 R
+/I true /K false >> >>
+stream
+x+TT(T\xD054\xE3\cc0#\xC406P\xC8\xF3\xC0\x8Cp-\x85< 4\xB4P*/JU	\xE8\x99)d*\xE8;r%\x83\xA5+\x8A\x93t\x8D\xC0\xD8\xD4B\xC1\xAC6M!\xC5\xE8\xF9
+endstream
+endobj
+9 0 obj
+85
+endobj
+10 0 obj
+<< /ProcSet [ /PDF ] /ColorSpace << /Cs1 7 0 R >> >>
+endobj
+12 0 obj
+<< /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
+stream
+x\x9D\x96wTS\xD9\x87Ͻ7\xBD\xD0" %\xF4z	 \xD2;HQ\x89I\x80P\x86\x84&vDF)VdT\xC0G\x87"cE\x83\x82b\xD7	\xF2P\xC6\xC1QDE\xE5݌k	\xEF\xAD5\xF3ޚ\xFD\xC7Y\xDF\xD9\xE7\xB7\xD7\xD9g\xEF}׺P\xFC\x82\xC2tX\x804\xA1X\xEE\xEB\xC1\\xCB\xC4\xF7X\xC0\xE1ffG\xF8D\xD4\xFC\xBD=\x99\x99\xA8HƳ\xF6\xEE.\x80d\xBB\xDB,\xBFP&s\xD6\xFF\x91"7C$
+E\xD56<~&\xE5\x94S\xB3\xC52\xFF\xCA\xF4\x95)2\x8612\xA1	\xA2\xAC"\xE3įl\xF6\xA7\xE6+\xBBɘ\x97&\xE4\xA1Y\xCE\xBC4\x9E\x8C\xBBPޚ%ᣌ\xA1\\x98%\xE0g\xA3|e\xBDTI\x9A\xE5\xF7(\xD3\xD3\xF8\x9CL0\x99_\xCC\xE7&\xA1l\x892E\xEE\x89\xF2\x94\xC49\xBCr\x8B\xF99h\x9Ex\xA6g\xE4\x8A\x89Ib\xA6טi\xE5\xE8\xC8f\xFA\xF1\xB3S\xF9b1+\x94\xC3M\xE1\x88xL\xCF\xF4\xB4\x8E0\x80\xAFo\x96E%Ym\x99h\x91\xED\xAD\xED\xEDY\xD6\xE6h\xF9\xBF\xD9\xDF~S\xFD=\xC8z\xFBU\xF1&\xECϞA\x8C\x9EY\xDFl\xEC\xAC/\xBD\xF6$Z\x9B\xB3\xBE\x95U\xB4m@\xE5\xE1\xACO\xEF \xF2\xB4ޜ\xF3\x86l^\x92\xC4\xE2'\x8B\xEC\xECls\x9Fk.+\xE87\xFB\x9F\x82oʿ\x869\xF7\x99\xCB\xEE\xFBV;\xA6?\x81#I3eE妧\xA6KD\xCC\xCC\x97\xCFd\xFD\xF7\xFF\xE3\xC09i\xCD\xC9\xC3,\x9C\x9F\xC0\xF1\x85\xE8UQ\xE8\x94	\x84\x89h\xBB\x85<\x81X\x90.d
+\x84\xD5\xE16'~\x9Dkhu_}\x859P\xB8I\xC8o=C#$n?z}\xEB[1
+Ⱦ\xBCh\xAD\x91\xAFs\x8F2z\xFE\xE7\xFA\\x8An\xE1LA"S\xE6\xF6\x8Fdr%\xA2,\xA3߄l\xC1\x90t\xA0
+4\x81.0,`+\x803p\xDE \x84\x80H\x96.Hi@\xB2A>\xD8
+A1\xD8v\x83jpԁz\xD0N\x826p\W\xC0+p\x80G@
+\x86\xC1K0ށi\x82\xF0\xA2A\xAA\x90\xA4\x99B\xD6ZyCAP8\xC5C\x89\x90\x92@\xF9\xD0&\xA8*\x83\xAA\xA1CP=\xF4#t\xBA]\x83\xFA\xA0\xD0 4\xFD}\x84\x98\xD3a+\xD8\xB6\x80ٰ;G\xC2\xCB\xE0Dx\x9C\xC0\xDB\xE1J\xB8>\xB7\xC2\xE1\xF0,\x85_“@\xC8\xD1FX\xF1DB\x90X$!k\x91"\xA4\xA9E\x9A\x90\xA4\xB9\x8DH\x91q\xE4\x87\xA1a\x98\xC6\xE3\x87Y\x8C\xE1bVa\xD6bJ0՘c\x98VL\xE66f3\x81\xF9\x82\xA5bձ\xA6X'\xAC?v	6\x9B\x8D-\xC4V`\x8F`[\xB0\x97\xB1\xD8a\xEC;\xC7\xC0\xE2p~\xB8\2n5\xAE\xB7׌\xBB\x80\xEB\xC3+\xE1&\xF1x\xBC*\xDE\xEF\x82\xC1s\xF0b|!\xBE
+ߏƿ'\x90	Zk\x82!\x96 $l$T\xE7\xFD\x84\xC24Q\x81\xA8Ot"\x86y\xC4\b)\xB1\x8E\xD8A\xBCI&N\x93I\x86$R$)\x99\xB4\x81TIj"]&=&\xBD!\x93\xC9:dGrY@^O\xAE$\x9F _%\x92?P\x94(&OJEB\xD9N9J\xB9@y@yC\xA5R+\xA8n\xD4X\xAA\x98\xBA\x9DZO\xBDD}J}/G\x933\x97\xF3\x97\xE3ɭ\x93\xAB\x91k\x95\xEB\x97{%O\x94חw\x97_.\x9F'_!J\xFE\xA6\xFC\xB8Q\xC1@\xC1S\x81\xA3\xB0V\xA1F\xE1\xB4\xC2=\x85IE\x9A\xA2\x95b\x88b\x9Ab\x89b\x83\xE25\xC5Q%\xBC\x92\x81\x92\xB7O\xA9@\xE9\xB0\xD2%\xA5!BӥyҸ\xB4M\xB4:\xDAe\xDA0G7\xA4\xFBӓ\xE9\xC5\xF4\xE8\xBD\xF4	e%e[\xE5(\xE5\xE5\xE5\xB3\xCAR\xC20`\xF83R\xA5\x8C\x93\x8C\xBB\x8C\x8F\xF34\xE6\xB9\xCF\xE3\xCF\xDB6\xAFi^\xFF\xBC)\x95\xF9*n*|\x95"\x95f\x95\x95\x8F\xAALUo\xD5՝\xAAm\xAAO\xD40j&jaj\xD9j\xFB\xD5.\xAB\x8Dϧ\xCFw\x9Eϝ_4\xFF\xE4\xFC\x87갺\x89z\xB8\xFAj\xF5\xC3\xEA=\xEA\x93\x9A\xBEU\x974\xC65\x9An\x9Aɚ\xE5\x9A\xE74ǴhZ\xB5Z\xE5Z\xE7\xB5^0\x95\x99\xEE\xCCTf%\xB3\x8B9\xA1\xAD\xAE\xED\xA7-\xD1>\xA4ݫ=\
 xADc\xA8\xB3Xg\xA3N\xB3\xCE]\x92.[7A\xB7\\xB7SwBOK/X/_\xAFQ\xEF\xA1>Q\x9F\xAD\x9F\xA4\xBFG\xBF[\xCA\xC0\xD0 \xDA`\x8BA\x9B\xC1\xA8\xA1\x8A\xA1\xBFa\x9Ea\xA3\xE1c#\xAA\x91\xAB\xD1*\xA3Z\xA3;\xC68c\xB6q\x8A\xF1>\xE3[&\xB0\x89\x9DI\x92I\x8D\xC9MS\xD8\xD4\xDET`\xBAϴ\xCFk\xE6h&4\xAB5\xBBǢ\xB0\xDCYY\xACF֠9\xC3<\xC8|\xA3y\x9B\xF9+=\x8BX\x8B\x9D\xDD_,\xED,S-\xEB,Y)YXm\xB4\xEA\xB0\xFA\xC3\xDAĚk]c}džj\xE3c\xB3Φ\xDD浭\xA9-\xDFv\xBF\xED};\x9A]\xB0\xDD\xBBN\xBB\xCF\xF6\xF6"\xFB&\xFB1=\x87x\x87\xBD\xF7\xD8tv(\xBB\x84}\xD5\xEB\xE8\xE1\xB8\xCE\xF1\x8C\xE3'{'\xB1\xD3I\xA7ߝY\xCE)\xCE+Σ\xF0\xD4-r\xD1q\xE1\xB8r\x91.d.\x8C_xp\xA1\xD4Uە\xE3Z\xEB\xFA\xCCM׍\xE7v\xC4m\xC4\xDD\xD8=\xD9\xFD\xB8\xFB+K\x91G\x8Bǔ\xA7\x93\xE7\xCF^\x88\x97\xAFW\x91W\xAF\xB7\x92\xF7b\xEFj\xEF\xA7>:>\x89>\x8D>\xBEv\xBE\xAB}/\xF8a\xFD\xFDv\xFA\xDD\xF3\xD7\xF0\xE7\xFA\xD7\xFBO8\xAC	\xE8
+\xA4FV>2	u\xC3\xC1\xC1\xBB\x82/\xD2_$\\xD4B\xFCCv\x85<	5]\xFAs.,4\xAC&\xECy\xB8Ux~xw-bEDCĻH\x8F\xC8\xD2\xC8G\x8B\x8DKwF\xC9G\xC5E\xD5GME{E\x97EK\x97X,Y\xB3\xE4F\x8CZ\x8C \xA6={$vr\xA9\xF7\xD2\xDDK\x87\xE3\xEC\xE2
+\xE3\xEE.3\\x96\xB3\xEC\xDAr\xB5\xE5\xA9\xCBϮ\x90_\xC1Yq*\xDF\xFF\x89©\xE5L\xAE\xF4_\xB9w\xE5ד\xBB\x87\xFB\x92\xE7\xC6+\xE7\x8D\xF1]\xF8e\xFC\x91\x97\x84\xB2\x84\xD1D\x97\xC4]\x89cI\xAEII\xE3OA\xB5\xE0u\xB2_\xF2\x81䩔\x90\x94\xA3)3\xA9ѩ\xCDi\x84\xB4\xF8\xB4\xD3B%a\x8A\xB0+]3='\xBD/\xC34\xA30C\xBA\xCAi\xD5\xEEU\xA2@ёL(sYf\xBB\x98\x8E\xFEL\xF5H\x8C$\x9B%\x83Y\xB3j\xB2\xDEgGe\x9F\xCAQ\xCC\xE6\xF4\xE4\x9A\xE4n\xCB\xC9\xF3\xC9\xFB~5f5wug\xBEv\xFE\x86\xFC\xC15\xEEk\xAD\x85֮\۹Nw]\xC1\xBA\xE1\xF5\xBE\xEB\x8Fm mH\xD9\xF0\xCBFˍe\xDFn\x8A\xDE\xD4Q\xA0Q\xB0\xBE`h\xB3\xEF\xE6\xC6B\xB9BQ\xE1\xBD-\xCE[l\xC5ll\xED\xDDf\xB3\xADjۗ"^\xD1\xF5b\xCB\xE2\x8A\xE2O%ܒ\xEB\xDFY}W\xF9\xDD\xCC\xF6\x84\x{DF65}\xF6\xA5\xFBw\xE0vw\xDC\xDD\xE9\xBA\xF3X\x99bY^\xD9Ю\xE0]\xAD\xE5\xCC\xF2\xA2\xF2\xB7\xBBW\xEC\xBEVa[q`i\x8Fd\x8F\xB42\xA8\xB2\xBDJ\xAFjGէ\xEA\xA4\xEA\x81\x8F\x9A\xE6\xBD\xEA{\xB7\xED\x9D\xDA\xC7\xDB׿\xDFm\xD3\x8D\xC5>\xBC\xC8\xF7Pk\xADAm\xC5a\xDC\xE1\xAC\x
 C3\xCF\xEB\xA2꺿g_D\xEDH\xF1\x91\xCFG\x85G\xA5\xC7u\xD5;\xD4\xD77\xA87\x946\x92Ʊ\xE3q\xC7o\xFD\xE0\xF5C{\xAB\xE9P3\xA3\xB9\xF88!9\xF1\xE2\xC7\xF8\xEF\x9E<\xD9y\x8A}\xAA\xE9'\xFD\x9F\xF6\xB6\xD0Z\x8AZ\xA1\xD6\xDC։\xB6\xA46i{L{\xDF\xE9\x80ӝ\xCE-?\x9B\xFF|\xF4\x8C\x{1996B3}\xCAgKϑ\xCE\x9C\x9B9\x9Fw~\xF2Bƅ\xF1\x8B\x89\x87:Wt>\xBA\xB4\xE4ҝ\xAE\xB0\xAE\xDEˁ\x97\xAF^\xF1\xB9r\xA9۽\xFB\xFCU\x97\xABg\xAE9];}\x9D}\xBD\xED\x86\xFD\x8D\xD6\xBB\x9E\x96_\xEC~i\xE9\xB5\xEFm\xBD\xE9p\xB3\xFD\x96㭎\xBE}\xE7\xFA]\xFB/\xDE\xF6\xBA}\xE5\x8E\xFF\x9D\x8B\xFA\xEE.\xBE{\xFF^\xDC=\xE9}\xDE\xFD\xD1\xA9^?\xCCz8\xFDh\xFDc\xEC\xE3\xA2'
+O*\x9E\xAA?\xAD\xFD\xD5\xF8\xD7f\xA9\xBD\xF4\xEC\xA0\xD7`ϳ\x88g\x8F\x86\xB8C/\xFF\x95\xF9\xAFO\xC3ϩ\xCF+F\xB4F\xEAG\xADGό\xF9\x8C\xDDz\xB1\xF4\xC5\xF0ˌ\x97\xD3ㅿ)\xFE\xB6\xF7\x95ѫ\x9F~w\xFB\xBDgb\xC9\xC4\xF0k\xD1\xEB\x99?Jި\xBE9\xFA\xD6\xF6m\xE7d\xE8\xE4\xD3wi獵\x8Aޫ\xBE?\xF6\x81\xFD\xA1\xFBc\xF4Ǒ\xE9\xECO\xF8O\x95\x9F\x8D?w|	\xFC\xF2x&mf\xE6\xDF\xF7\x84\xF3\xFB
+endstream
+endobj
+13 0 obj
+2612
+endobj
+7 0 obj
+[ /ICCBased 12 0 R ]
+endobj
+14 0 obj
+<< /Length 15 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
+stream
+x\x85U[\x88U\xFE\x939\xC9
+\xBB\xCE\xD3\xDA\xD5-\xA4C\xBDt)\xBBK\xB6ݥ\xB4\x9A[\x93\xB4k\xB2\xD9\xD5A\xB3\x93\x93d\xCC\xEC$\xCEL\xD2}*\x82⋫\xBEIA\xBC\xBD-\x82\xD2z\xC1\xD6\xFBR\xA9PVw\xEB"(>\xB4xA(\xF4E\xB7\xF1;\x93d&Yj\x9Be\xCF|\xF3\xFD\xDF\xF9o\xE7\x9F\xA2\x81\xB5B\xBD\xAE\xFB\xA2%\xC36sɨ\xF2\xDC\xD1c\xCA\xC0:\xF9\xE9!\xA4Q,\xA8V=\x92\xCD\xCE~B+\xAE\xFD\xBF[?\x90O0W'\xEEl\xEFWo\xB9,rK%\xF2\xDD\xBEV\xB4\xD4%\xE0D\x81\xB3jݴ\x89\x86\xC1O\xB7\xEB\x8B\x86M$\xFC\xA2\xC0\xE56\x86\x8D\x86\xDB\xF85G\x93\xCFŠ9,\xAB\x95Bxx|\xB1\x87/\xF7\xE0vP\xC0O\x92\xDC\xD4TE\xF4"k\xD6J\x9A\xCEC{\xB9\x87\xB9Gy7\xB8\xA47P\xB3\xF3ہuȪ\xCE\xC6u\xB5\xBFR,\xC4\x9E^Q\x899\xE0G\x80\xAF5\xB5\x85L߮\xDB\xD1\xF0cD\xFE\x9D\x8D\xEA|x7p\xAAd\x9C\x86\xBFYi\xA4\xBA\xF8\x9DS\x95\xFC\xB3ශ\xFF\xC6X\xCC\xE9\xEC]S\xADzI;\xC1߮\xF0\xB4\xE8o\x88HR4;\x9D\x86\xE9\x80Y\xCB	=r\x90JEO\x8F\xBF^\xAD9\xC0\xA7\xF4\x99՜\xBC\xC8g\xEDT%&\xF2\xFC\xE5\x97
+\x87\xB2\xC0\xA3\xC0\xBFr=)\xF4\x88%\xFD[\xB7\xB3\x9DX\xC8\xD03".b\xB18\xB7\x9Czᇅ\xECJ>q\x99n\x9B\xF9\xCE^\xB6\\xD2\xA6;\xFAO*fJ\xF0bﵺ\xEE\xCC(r\xF8\xCDFNԎX\x81ɂ\x99H\xC3g ˍy\xD1O\x81\x9B\xB4\xE0+\xA7-bUɠMR(GI\x8A\xE2Z'\x96i\xA4\x83\xE1\xB0r0w]̈́\xB3Ϣ*x\x8D\x9A\x8E\xCDšu\x94\xED\x9D]\xADBe\xB0]w\xB4*\xC5BQ\x9E*\xF4؊\xEBS\xA1\xEE\xE0\xCA\xFF㧝ˍ\x8E\x9Faa\xB6\xFF\xFB\xD8,\xDBϦ\xD9)\xEC)\xF64;\xC0\xE2`g\xD8>\xD7w{\xBA\x89|n J\xDB\xCFˈ\xC8\xDDj\xBF\x88m*`\xFD\x8AY\xAE\x87\xBE\xAE,\x8F6\xC6<\xCB\xF3M\xBD\xF2\xC6\xDF=\xBDҰ\xB3\xEA*&\xFA:z\xE4^=\xFC\xB8Xź\xD8p}(\x81\x9F\xF8[Go\xBCZj\x9E\xBD\xD3eqRN\xB4֧\xDBz]U\x95\xEA\xCE\xCE%tACͼ\xA7\xE6\x89^\x97N\xF9\xA0m\x95\x9D{\xFE\xEAХ\xD3%cy\xD4cE\xF8\xAB\x99[:3\xEE\xB1\xE1\xC3\x86W\xC3\xEF\x85?\xFF.\xBD-}*}%\x9D\x97>\x97.\x93"]\x90.J_K\xDFJK_\xB8\xFA\xBB͐{\xF6$2s%\xF2\xD3խ\xB0\xB7טX9*o\x97\x96\xE3\xF2\xF9Qy\xD6U)\xF2\x88<%\xA7\xE4]\xB0lw\xCF͛o\x
 A5\xB7r\xF4\xE5(\xA2u\xFBs\xE7X\xE2Y\xD1\O8\xDF\xFD\x98͋\xD87\xF3\xC8X\xA3\xE3\xF0i\xA2\xDFb\xDE:	m\xEF\x93ש\x88\x85\xD8Ko\x99\xEEi1\xF3]\xDF\xC1D0\x8C\x90\xDC\x9C	N	\xDC}\x96\x83\xBB`\x9B\xC1\x9A\xE8\xCD+\xF3\xE1*\xFA*\xE56?!\xBE'\xAB\xD5O\x9AZ\xB9b+{\xC2\xE1'\x95>}\I\xEA\xE4\xB8R\xD0u\xC51Y\x8A\xC9-n6yq\x92\xC4wS\xEC#\xBA\x99s\xBE\x87\xBEmW<\xCE~\x86h\xFF_x\xF7}\xEFq\xC7D+\xD1\xC8\xE37\x86w\xE5\xEF\x9D{Bm\x98Ͷ?\xF2\xF9\xBE#\xB2J{\xF78\xF7\xBE\xA1(\xDE_?\xB7Z7\xF1x\x8Bh\xF3\xCDV\xEB\x9F\xF7[\xAD\xCD\xE0\x83\xE8\x82\xFE\xA0\x9F|U
+endstream
+endobj
+15 0 obj
+1079
+endobj
+11 0 obj
+[ /ICCBased 14 0 R ]
+endobj
+3 0 obj
+<< /Type /Pages /MediaBox [0 0 18 26] /Count 1 /Kids [ 2 0 R ] >>
+endobj
+16 0 obj
+<< /Type /Catalog /Pages 3 0 R /Version /1.4 >>
+endobj
+17 0 obj
+(Mac OS X 10.12.5 Quartz PDFContext)
+endobj
+18 0 obj
+(D:20170710230806Z00'00')
+endobj
+1 0 obj
+<< /Producer 17 0 R /CreationDate 18 0 R /ModDate 18 0 R >>
+endobj
+xref
+0 19
+0000000000 65535 f 
+0000005277 00000 n 
+0000000443 00000 n 
+0000005037 00000 n 
+0000000022 00000 n 
+0000000424 00000 n 
+0000000545 00000 n 
+0000003761 00000 n 
+0000000639 00000 n 
+0000000938 00000 n 
+0000000956 00000 n 
+0000005000 00000 n 
+0000001025 00000 n 
+0000003740 00000 n 
+0000003797 00000 n 
+0000004979 00000 n 
+0000005118 00000 n 
+0000005182 00000 n 
+0000005235 00000 n 
+trailer
+<< /Size 19 /Root 16 0 R /Info 1 0 R /ID [ <2ada6beae13a9d4654da044325b9e908>
+<2ada6beae13a9d4654da044325b9e908> ] >>
+startxref
+5352
+%%EOF
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to