Diff
Modified: trunk/Tools/ChangeLog (205310 => 205311)
--- trunk/Tools/ChangeLog 2016-09-01 20:14:14 UTC (rev 205310)
+++ trunk/Tools/ChangeLog 2016-09-01 20:17:02 UTC (rev 205311)
@@ -1,3 +1,21 @@
+2016-09-01 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r205295 and r205303.
+ https://bugs.webkit.org/show_bug.cgi?id=161505
+
+ Broke the iOS build (Requested by ryanhaddad on #webkit).
+
+ Reverted changesets:
+
+ "Refactor MobileMiniBrowser into an application framework to
+ allow external XCTesting"
+ https://bugs.webkit.org/show_bug.cgi?id=161462
+ http://trac.webkit.org/changeset/205295
+
+ "Unreviewed build-fix; don't specify an explicit deployment
+ target."
+ http://trac.webkit.org/changeset/205303
+
2016-09-01 Ricky Mondello <[email protected]>
YouTube Flash plug-in replacement facility should more gracefully handle malformed queries
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.h (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/AppDelegate.h) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.h (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.h 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
+
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.m (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/AppDelegate.m) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.m (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.m 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "AppDelegate.h"
+
+@interface AppDelegate ()
+
+@end
+
+@implementation AppDelegate
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ // Override point for customization after application launch.
+ return YES;
+}
+
+
+- (void)applicationWillResignActive:(UIApplication *)application
+{
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
+}
+
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+
+- (void)applicationWillEnterForeground:(UIApplication *)application
+{
+ // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
+}
+
+
+- (void)applicationDidBecomeActive:(UIApplication *)application
+{
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+
+@end
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Assets.xcassets/AppIcon.appiconset/Contents.json (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/Assets.xcassets/AppIcon.appiconset/Contents.json) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Assets.xcassets/AppIcon.appiconset/Contents.json (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Assets.xcassets/AppIcon.appiconset/Contents.json 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,93 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
Modified: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/LaunchScreen.storyboard (205310 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/LaunchScreen.storyboard 2016-09-01 20:14:14 UTC (rev 205310)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/LaunchScreen.storyboard 2016-09-01 20:17:02 UTC (rev 205311)
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11191" systemVersion="16B2314" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment version="2304" identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11156"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
- <viewController storyboardIdentifier="idViewController" id="01J-lp-oVM" sceneMemberID="viewController">
+ <viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="9qo-7e-hd1">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
- <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F7I-Hn-oUR">
+ <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="F7I-Hn-oUR">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="h95-xh-m8y"/>
</constraints>
@@ -33,23 +33,27 @@
<barButtonItem title="Tabs" id="dXJ-Pm-BgJ"/>
</items>
</toolbar>
- <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Vg-6f-OBr" userLabel="URL Field Container">
+ <view clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7Vg-6f-OBr" userLabel="URL Field Container">
<subviews>
- <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nX4-D6-AXV">
+ <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nX4-D6-AXV">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="45"/>
<items/>
</toolbar>
- <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="L4i-oL-VFG">
+ <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="249" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="L4i-oL-VFG">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="30"/>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="URL" returnKeyType="go" enablesReturnKeyAutomatically="YES"/>
</textField>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1CE-0G-4aC">
+ <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1CE-0G-4aC">
<constraints>
<constraint firstAttribute="width" constant="45.999999999999886" id="Az8-yd-X45"/>
</constraints>
<state key="normal" title="Go"/>
</button>
- <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vYP-Mc-B8q"/>
+ <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vYP-Mc-B8q">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="2"/>
+ </progressView>
</subviews>
<constraints>
<constraint firstItem="nX4-D6-AXV" firstAttribute="top" secondItem="7Vg-6f-OBr" secondAttribute="top" constant="-1" id="2rs-N5-Hdo"/>
@@ -68,7 +72,7 @@
</constraints>
</view>
</subviews>
- <color key="backgroundColor" red="1" green="0.99997437000274658" blue="0.99999129772186279" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+ <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="F7I-Hn-oUR" firstAttribute="top" secondItem="Llm-lL-Icb" secondAttribute="bottom" id="Dbb-TN-26g"/>
<constraint firstItem="7Vg-6f-OBr" firstAttribute="leading" secondItem="9qo-7e-hd1" secondAttribute="leading" id="Qu5-yy-1EE"/>
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/Main.storyboard (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/Base.lproj/Main.storyboard) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/Main.storyboard (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/Main.storyboard 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Ohh-6U-lsQ">
+ <dependencies>
+ <deployment version="2304" identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+ </dependencies>
+ <scenes>
+ <!--Web View-->
+ <scene sceneID="hmw-yB-imE">
+ <objects>
+ <viewController storyboardIdentifier="idWebViewController" title="Web View" id="Ohh-6U-lsQ" customClass="WebViewController" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="O1S-Wg-hSL"/>
+ <viewControllerLayoutGuide type="bottom" id="mUo-dB-Gut"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="1WJ-am-PnB">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SYm-x3-D12">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="44"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="44" id="0IC-RY-cRv"/>
+ </constraints>
+ <items>
+ <barButtonItem systemItem="rewind" id="EEz-Eu-Llp">
+ <connections>
+ <action selector="goBack:" destination="Ohh-6U-lsQ" id="yCS-m7-CSu"/>
+ </connections>
+ </barButtonItem>
+ <barButtonItem style="plain" systemItem="flexibleSpace" id="2hV-ik-Nst"/>
+ <barButtonItem systemItem="refresh" id="Qwd-Pc-zRG">
+ <connections>
+ <action selector="reload:" destination="Ohh-6U-lsQ" id="7fs-2o-7Vh"/>
+ </connections>
+ </barButtonItem>
+ <barButtonItem style="plain" systemItem="flexibleSpace" id="x6B-dk-wot"/>
+ <barButtonItem systemItem="fastForward" id="gRl-g5-HxZ">
+ <connections>
+ <action selector="goForward:" destination="Ohh-6U-lsQ" id="wXA-qv-wKE"/>
+ </connections>
+ </barButtonItem>
+ <barButtonItem style="plain" systemItem="flexibleSpace" id="Plg-UW-RO1"/>
+ <barButtonItem title="Tabs" id="riZ-ip-Qee">
+ <connections>
+ <action selector="showTabs:" destination="Ohh-6U-lsQ" id="ZZT-Jw-TR7"/>
+ </connections>
+ </barButtonItem>
+ </items>
+ </toolbar>
+ <view clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Wkd-K8-BC1" userLabel="URL Field Container">
+ <subviews>
+ <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SSg-5u-loI">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="46"/>
+ <items/>
+ </toolbar>
+ <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="249" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="n4f-v4-gO4">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="30"/>
+ <accessibility key="accessibilityConfiguration" identifier="idURLField" label="URL Field"/>
+ <nil key="textColor"/>
+ <fontDescription key="fontDescription" type="system" pointSize="14"/>
+ <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="URL" returnKeyType="go" enablesReturnKeyAutomatically="YES"/>
+ <connections>
+ <action selector="navigateTo:" destination="Ohh-6U-lsQ" eventType="primaryActionTriggered" id="rsS-Hh-pgq"/>
+ <action selector="urlFieldEditingBegan:" destination="Ohh-6U-lsQ" eventType="editingDidBegin" id="VDr-b6-Z9E"/>
+ </connections>
+ </textField>
+ <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qSw-Ym-IBE">
+ <accessibility key="accessibilityConfiguration" identifier="idGoToURL" label="Go To URL"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="45.999999999999886" id="hr8-Tf-lDT"/>
+ </constraints>
+ <state key="normal" title="Go"/>
+ <connections>
+ <action selector="navigateTo:" destination="Ohh-6U-lsQ" eventType="touchUpInside" id="va2-3J-Gmh"/>
+ </connections>
+ </button>
+ <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" misplaced="YES" progress="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="2bJ-bG-4SW">
+ <rect key="frame" x="0.0" y="0.0" width="0.0" height="2"/>
+ </progressView>
+ </subviews>
+ <constraints>
+ <constraint firstItem="SSg-5u-loI" firstAttribute="trailing" secondItem="Wkd-K8-BC1" secondAttribute="trailing" id="6KS-dw-2cN"/>
+ <constraint firstItem="qSw-Ym-IBE" firstAttribute="top" secondItem="Wkd-K8-BC1" secondAttribute="top" constant="8" id="88d-RS-Chq"/>
+ <constraint firstItem="2bJ-bG-4SW" firstAttribute="bottom" secondItem="Wkd-K8-BC1" secondAttribute="bottom" id="DWe-kg-fd1"/>
+ <constraint firstItem="SSg-5u-loI" firstAttribute="bottom" secondItem="Wkd-K8-BC1" secondAttribute="bottom" id="H4E-pp-5hZ"/>
+ <constraint firstItem="qSw-Ym-IBE" firstAttribute="trailing" secondItem="Wkd-K8-BC1" secondAttribute="trailing" constant="-8.0000000000001137" id="I98-9l-yBo"/>
+ <constraint firstItem="n4f-v4-gO4" firstAttribute="trailing" secondItem="qSw-Ym-IBE" secondAttribute="leading" constant="-8" id="JVc-2x-zpB"/>
+ <constraint firstItem="2bJ-bG-4SW" firstAttribute="trailing" secondItem="Wkd-K8-BC1" secondAttribute="trailing" id="Ptf-aW-hFM"/>
+ <constraint firstItem="2bJ-bG-4SW" firstAttribute="leading" secondItem="Wkd-K8-BC1" secondAttribute="leading" id="Udl-4T-2r0"/>
+ <constraint firstItem="n4f-v4-gO4" firstAttribute="top" secondItem="Wkd-K8-BC1" secondAttribute="top" constant="7" id="ckp-l2-5Gm"/>
+ <constraint firstItem="n4f-v4-gO4" firstAttribute="leading" secondItem="Wkd-K8-BC1" secondAttribute="leading" constant="8" id="rdB-oq-lII"/>
+ <constraint firstItem="SSg-5u-loI" firstAttribute="leading" secondItem="Wkd-K8-BC1" secondAttribute="leading" id="t7A-Ip-cIN"/>
+ <constraint firstItem="SSg-5u-loI" firstAttribute="top" secondItem="Wkd-K8-BC1" secondAttribute="top" constant="-2" id="vxD-DZ-LSP"/>
+ <constraint firstAttribute="height" constant="44" id="zaj-6L-uzc"/>
+ </constraints>
+ </view>
+ <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="719-Zt-fvZ" userLabel="Web View Container">
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <accessibility key="accessibilityConfiguration" label="Web View Container"/>
+ </view>
+ </subviews>
+ <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+ <constraints>
+ <constraint firstItem="Wkd-K8-BC1" firstAttribute="leading" secondItem="1WJ-am-PnB" secondAttribute="leading" id="2cZ-lB-Wel"/>
+ <constraint firstItem="Wkd-K8-BC1" firstAttribute="trailing" secondItem="1WJ-am-PnB" secondAttribute="trailing" id="9PH-Z4-jms"/>
+ <constraint firstItem="SYm-x3-D12" firstAttribute="leading" secondItem="719-Zt-fvZ" secondAttribute="leading" id="CVd-rC-DLK"/>
+ <constraint firstItem="719-Zt-fvZ" firstAttribute="bottom" secondItem="mUo-dB-Gut" secondAttribute="top" id="TSf-qw-BSO"/>
+ <constraint firstItem="719-Zt-fvZ" firstAttribute="trailing" secondItem="1WJ-am-PnB" secondAttribute="trailing" id="dli-wp-mIQ"/>
+ <constraint firstItem="719-Zt-fvZ" firstAttribute="leading" secondItem="1WJ-am-PnB" secondAttribute="leading" id="drb-1d-e3b"/>
+ <constraint firstItem="719-Zt-fvZ" firstAttribute="top" secondItem="Wkd-K8-BC1" secondAttribute="bottom" id="gTD-az-Bxc"/>
+ <constraint firstItem="SYm-x3-D12" firstAttribute="trailing" secondItem="719-Zt-fvZ" secondAttribute="trailing" id="jnE-rM-ZkM"/>
+ <constraint firstItem="Wkd-K8-BC1" firstAttribute="top" secondItem="SYm-x3-D12" secondAttribute="bottom" id="n1b-Z6-LbB"/>
+ <constraint firstItem="SYm-x3-D12" firstAttribute="top" secondItem="O1S-Wg-hSL" secondAttribute="bottom" id="sSX-9p-jiJ"/>
+ </constraints>
+ </view>
+ <connections>
+ <outlet property="progressView" destination="2bJ-bG-4SW" id="epj-Uv-45U"/>
+ <outlet property="tabButton" destination="riZ-ip-Qee" id="c25-vk-MxM"/>
+ <outlet property="urlField" destination="n4f-v4-gO4" id="6y7-b7-P81"/>
+ <outlet property="webViewContainer" destination="719-Zt-fvZ" id="UaF-fa-bAe"/>
+ <segue destination="KyF-2k-9Cc" kind="popoverPresentation" identifier="TabPicker" popoverAnchorBarButtonItem="riZ-ip-Qee" id="XMx-lV-WXX">
+ <popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/>
+ </segue>
+ </connections>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="BYM-VV-HDr" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="748" y="-336.88155922038982"/>
+ </scene>
+ <!--Tab View Controller-->
+ <scene sceneID="aHE-jJ-oKr">
+ <objects>
+ <tableViewController storyboardIdentifier="idTabViewController" id="KyF-2k-9Cc" customClass="TabViewController" sceneMemberID="viewController">
+ <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="Pid-8n-Ixq">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <prototypes>
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="idTabViewCustomCell" selectionStyle="default" indentationWidth="10" id="Bxf-dM-uYf">
+ <rect key="frame" x="0.0" y="28" width="375" height="44"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Bxf-dM-uYf" id="lpb-yc-EJ5">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </tableViewCellContentView>
+ </tableViewCell>
+ </prototypes>
+ <connections>
+ <outlet property="dataSource" destination="KyF-2k-9Cc" id="sCL-gS-Div"/>
+ <outlet property="delegate" destination="KyF-2k-9Cc" id="nxb-Xb-9bW"/>
+ </connections>
+ </tableView>
+ </tableViewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="ZVi-NC-K5T" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="1480.8" y="-337.78110944527737"/>
+ </scene>
+ </scenes>
+</document>
Modified: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Info.plist (205310 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Info.plist 2016-09-01 20:14:14 UTC (rev 205310)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Info.plist 2016-09-01 20:17:02 UTC (rev 205311)
@@ -22,6 +22,8 @@
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
+ <key>UIMainStoryboardFile</key>
+ <string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.h (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/TabViewController.h) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.h (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.h 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <UIKit/UIKit.h>
+
+@class WKWebView;
+@class WebViewController;
+
+@interface TabViewController : UITableViewController
+
+@property (weak, nonatomic) WebViewController *parent;
+
+@end
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.m (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/TabViewController.m) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.m (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.m 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "TabViewController.h"
+
+#import "WebViewController.h"
+#import <WebKit/WKWebView.h>
+
+void *ContentSizeContext = &ContentSizeContext;
+
+@implementation TabViewController
+
+- (void)dealloc
+{
+ [self.tableView removeObserver:self forKeyPath:@"contentSize" context:ContentSizeContext];
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ [self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:ContentSizeContext];
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+ if (context == ContentSizeContext)
+ self.preferredContentSize = CGSizeMake(self.preferredContentSize.width, self.tableView.contentSize.height);
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *MyIdentifier = @"MyReuseIdentifier";
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
+ if (!cell)
+ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
+
+ if (indexPath.section == 1) {
+ cell.textLabel.text = @"New...";
+ return cell;
+ }
+
+ WKWebView *webView = [self.parent.webViews objectAtIndex:indexPath.row];
+ cell.textLabel.text = webView.title;
+ return cell;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ if (section == 1)
+ return 1;
+ return self.parent.webViews.count;
+}
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return 2;
+}
+
+- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ return indexPath.section != 1;
+}
+
+- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ return NO;
+}
+
+- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ if (indexPath.section == 2)
+ return;
+
+ [self.parent removeWebViewAtIndex:indexPath.row];
+ [tableView reloadData];
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ if (indexPath.section == 1)
+ [self.parent addWebView];
+ else
+ [self.parent selectWebViewAtIndex:indexPath.row];
+ [self.parent dismissViewControllerAnimated:YES completion:nil];
+}
+
+@end
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.h (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.h) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.h (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.h 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <UIKit/UIKit.h>
+
+@class WKWebView;
+@class TabViewController;
+
+@interface WebViewController : UIViewController
+
+@property (strong, nonatomic) IBOutlet UIView *webViewContainer;
+@property (strong, nonatomic) IBOutlet UITextField *urlField;
+@property (strong, nonatomic) IBOutlet UIProgressView *progressView;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *tabButton;
+@property (strong, nonatomic) IBOutlet TabViewController *tabViewController;
+@property (strong, nonatomic) WKWebView *currentWebView;
+@property (strong, nonatomic) NSMutableArray<WKWebView *> *webViews;
+
+
+- (IBAction)reload:(id)sender;
+- (IBAction)goBack:(id)sender;
+- (IBAction)goForward:(id)sender;
+- (IBAction)urlFieldEditingBegan:(id)sender;
+- (IBAction)navigateTo:(id)sender;
+- (IBAction)showTabs:(id)sender;
+
+- (void)selectWebViewAtIndex:(NSUInteger)index;
+- (void)removeWebViewAtIndex:(NSUInteger)index;
+- (void)addWebView;
+
+@end
+
Copied: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.m (from rev 205310, trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m) (0 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.m (rev 0)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.m 2016-09-01 20:17:02 UTC (rev 205311)
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "WebViewController.h"
+
+#import "TabViewController.h"
+#import <WebKit/WKNavigation.h>
+#import <WebKit/WKNavigationDelegate.h>
+#import <WebKit/WKWebView.h>
+#import <WebKit/WKWebViewConfiguration.h>
+
+@interface WebViewController () <WKNavigationDelegate> {
+ WKWebView *_currentWebView;
+}
+- (WKWebView *)createWebView;
+- (void)removeWebView:(WKWebView *)webView;
+- (void)setCurrentWebView:(WKWebView *)webView;
+@end
+
+void* EstimatedProgressContext = &EstimatedProgressContext;
+void* TitleContext = &TitleContext;
+void* URLContext = &URLContext;
+
+@implementation WebViewController
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ self.webViews = [[NSMutableArray alloc] initWithCapacity:1];
+ self.tabViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"idTabViewController"];
+ self.tabViewController.parent = self;
+ self.tabViewController.modalPresentationStyle = UIModalPresentationPopover;
+
+ [self setCurrentWebView:[self createWebView]];
+}
+
+
+- (void)didReceiveMemoryWarning
+{
+ [super didReceiveMemoryWarning];
+}
+
+#pragma mark Actions
+
+- (IBAction)reload:(id)sender
+{
+ [self.currentWebView reload];
+}
+
+- (IBAction)goBack:(id)sender
+{
+ [self.currentWebView goBack];
+}
+
+- (IBAction)goForward:(id)sender
+{
+ [self.currentWebView goForward];
+}
+
+- (IBAction)urlFieldEditingBegan:(id)sender
+{
+ self.urlField.selectedTextRange = [self.urlField textRangeFromPosition:self.urlField.beginningOfDocument toPosition:self.urlField.endOfDocument];
+}
+
+- (IBAction)navigateTo:(id)sender
+{
+ [self.urlField resignFirstResponder];
+ NSString* requestedDestination = self.urlField.text;
+ if ([requestedDestination rangeOfString:@"^[\\p{Alphabetic}]+:" options:(NSRegularExpressionSearch | NSCaseInsensitiveSearch | NSAnchoredSearch)].location == NSNotFound)
+ requestedDestination = [@"http://" stringByAppendingString:requestedDestination];
+ [self.currentWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:requestedDestination]]];
+}
+
+- (IBAction)showTabs:(id)sender
+{
+ [self presentViewController:self.tabViewController animated:YES completion:^{ }];
+ self.tabViewController.popoverPresentationController.barButtonItem = self.tabButton;
+}
+
+#pragma mark Public methods
+
+@dynamic currentWebView;
+
+- (WKWebView *)currentWebView
+{
+ return _currentWebView;
+}
+
+- (void)setCurrentWebView:(WKWebView *)webView
+{
+ [_currentWebView removeObserver:self forKeyPath:@"estimatedProgress" context:EstimatedProgressContext];
+ [_currentWebView removeObserver:self forKeyPath:@"URL" context:URLContext];
+ [_currentWebView removeFromSuperview];
+
+ _currentWebView = webView;
+
+ [_currentWebView addObserver:self forKeyPath:@"estimatedProgress" options:(NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew) context:EstimatedProgressContext];
+ [_currentWebView addObserver:self forKeyPath:@"URL" options:(NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew) context:URLContext];
+ [self.webViewContainer addSubview:_currentWebView];
+}
+
+- (void)selectWebViewAtIndex:(NSUInteger)index
+{
+ if (index >= self.webViews.count)
+ return;
+ self.currentWebView = self.webViews[index];
+}
+
+- (void)removeWebViewAtIndex:(NSUInteger)index
+{
+ if (index >= self.webViews.count)
+ return;
+ [self removeWebView:self.webViews[index]];
+}
+
+- (void)addWebView
+{
+ self.currentWebView = [self createWebView];
+}
+
+#pragma mark Internal methods
+
+- (WKWebView *)createWebView
+{
+ WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
+ WKWebView *webView = [[WKWebView alloc] initWithFrame:self.webViewContainer.bounds configuration:configuration];
+ webView.navigationDelegate = self;
+ webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+ [webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:TitleContext];
+ [self.webViews addObject:webView];
+
+ [self.tabViewController.tableView reloadData];
+
+ return webView;
+}
+
+- (void)removeWebView:(WKWebView *)webView
+{
+ NSUInteger index = [self.webViews indexOfObject:webView];
+ if (index != NSNotFound) {
+ [self.webViews[index] removeObserver:self forKeyPath:@"title" context:TitleContext];
+ [self.webViews removeObjectAtIndex:index];
+ } if (!self.webViews.count)
+ [self createWebView];
+ if (index >= self.webViews.count)
+ index = self.webViews.count - 1;
+ [self setCurrentWebView:self.webViews[index]];
+
+ [self.tabViewController.tableView reloadData];
+}
+
+#pragma mark Navigation Delegate
+
+- (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error;
+{
+ [webView loadHTMLString:[error description] baseURL:nil];
+}
+
+#pragma mark KVO
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+ if (context == EstimatedProgressContext) {
+ float value = [[change valueForKey:NSKeyValueChangeNewKey] floatValue];
+ [self.progressView setProgress:value animated:YES];
+ } else if (context == URLContext) {
+ id newURLValue = [change valueForKey:NSKeyValueChangeNewKey];
+ if ([newURLValue isKindOfClass:[NSURL class]])
+ self.urlField.text = [newURLValue absoluteString];
+ else if ([newURLValue isKindOfClass:[NSNull class]])
+ self.urlField.text = @"";
+ } else if (context == TitleContext)
+ [self.tabViewController.tableView reloadData];
+ else
+ [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
+}
+
+@end
Modified: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/main.m (205310 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/main.m 2016-09-01 20:14:14 UTC (rev 205310)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/main.m 2016-09-01 20:17:02 UTC (rev 205311)
@@ -23,7 +23,8 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#import <MobileMiniBrowser/MobileMiniBrowser.h>
+#import "AppDelegate.h"
+#import <UIKit/UIKit.h>
int main(int argc, char * argv[])
{
Modified: trunk/Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj (205310 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj 2016-09-01 20:14:14 UTC (rev 205310)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj 2016-09-01 20:17:02 UTC (rev 205311)
@@ -8,24 +8,14 @@
/* Begin PBXBuildFile section */
CD1DAF971D709E3600017CF0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAF961D709E3600017CF0 /* main.m */; };
+ CD1DAF9A1D709E3600017CF0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAF991D709E3600017CF0 /* AppDelegate.m */; };
+ CD1DAFA01D709E3600017CF0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAF9E1D709E3600017CF0 /* Main.storyboard */; };
+ CD1DAFA21D709E3600017CF0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAFA11D709E3600017CF0 /* Assets.xcassets */; };
CD1DAFA51D709E3600017CF0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAFA31D709E3600017CF0 /* LaunchScreen.storyboard */; };
CD1DAFB01D709E3600017CF0 /* MobileMiniBrowserUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFAF1D709E3600017CF0 /* MobileMiniBrowserUITests.m */; };
+ CD1DAFBE1D709EF200017CF0 /* TabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBB1D709EF200017CF0 /* TabViewController.m */; };
+ CD1DAFBF1D709EF200017CF0 /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBD1D709EF200017CF0 /* WebViewController.m */; };
CD1DAFC21D70E12D00017CF0 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD1DAFC11D70E12D00017CF0 /* WebKit.framework */; };
- CD498B421D76348000681FA7 /* MobileMiniBrowser.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */; };
- CD498B431D76348000681FA7 /* MobileMiniBrowser.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- CD498B4A1D763D4800681FA7 /* MobileMiniBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = CD498B481D7634C700681FA7 /* MobileMiniBrowser.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CD498B4B1D763D7100681FA7 /* TabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBB1D709EF200017CF0 /* TabViewController.m */; };
- CD498B4C1D763D7100681FA7 /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBD1D709EF200017CF0 /* WebViewController.m */; };
- CD498B4D1D763D7100681FA7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAF991D709E3600017CF0 /* AppDelegate.m */; };
- CD498B4E1D763D7600681FA7 /* TabViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1DAFBA1D709EF200017CF0 /* TabViewController.h */; };
- CD498B4F1D763D7600681FA7 /* WebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1DAFBC1D709EF200017CF0 /* WebViewController.h */; };
- CD498B501D763D7600681FA7 /* AppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1DAF981D709E3600017CF0 /* AppDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CD498B511D763D7F00681FA7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAF9E1D709E3600017CF0 /* Main.storyboard */; };
- CD498B521D763D8800681FA7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAFA11D709E3600017CF0 /* Assets.xcassets */; };
- CD498B531D763D9300681FA7 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = CD498B471D7634C700681FA7 /* Info.plist */; };
- CDA985191D76483400EBC399 /* test.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = CDA985151D76477900EBC399 /* test.mp4 */; };
- CDA9851A1D76483400EBC399 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = CDA985131D76474100EBC399 /* index.html */; };
- CDA9851B1D76483400EBC399 /* looping.html in Resources */ = {isa = PBXBuildFile; fileRef = CDA985171D7647CD00EBC399 /* looping.html */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -36,29 +26,8 @@
remoteGlobalIDString = CD1DAF911D709E3600017CF0;
remoteInfo = MobileMiniBrowser;
};
- CD498B401D76348000681FA7 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = CD1DAF8A1D709E3600017CF0 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = CD498B3A1D76348000681FA7;
- remoteInfo = MobileMiniBrowser;
- };
/* End PBXContainerItemProxy section */
-/* Begin PBXCopyFilesBuildPhase section */
- CD498B231D76341700681FA7 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- CD498B431D76348000681FA7 /* MobileMiniBrowser.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
/* Begin PBXFileReference section */
CD1DAF921D709E3600017CF0 /* MobileMiniBrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MobileMiniBrowser.app; sourceTree = BUILT_PRODUCTS_DIR; };
CD1DAF961D709E3600017CF0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
@@ -76,12 +45,6 @@
CD1DAFBC1D709EF200017CF0 /* WebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewController.h; sourceTree = "<group>"; };
CD1DAFBD1D709EF200017CF0 /* WebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewController.m; sourceTree = "<group>"; };
CD1DAFC11D70E12D00017CF0 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = "../../WebKitBuild/Debug-iphonesimulator/WebKit.framework"; sourceTree = "<group>"; };
- CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MobileMiniBrowser.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- CD498B471D7634C700681FA7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- CD498B481D7634C700681FA7 /* MobileMiniBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobileMiniBrowser.h; sourceTree = "<group>"; };
- CDA985131D76474100EBC399 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = index.html; path = Resources/index.html; sourceTree = "<group>"; };
- CDA985151D76477900EBC399 /* test.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; name = test.mp4; path = Resources/test.mp4; sourceTree = "<group>"; };
- CDA985171D7647CD00EBC399 /* looping.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = looping.html; path = Resources/looping.html; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -89,7 +52,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- CD498B421D76348000681FA7 /* MobileMiniBrowser.framework in Frameworks */,
CD1DAFC21D70E12D00017CF0 /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -101,13 +63,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- CD498B371D76348000681FA7 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -114,8 +69,7 @@
CD1DAF891D709E3600017CF0 = {
isa = PBXGroup;
children = (
- CD1DAF941D709E3600017CF0 /* MobileMiniBrowser App */,
- CD498B3C1D76348000681FA7 /* MobileMiniBrowser Framework */,
+ CD1DAF941D709E3600017CF0 /* MobileMiniBrowser */,
CD1DAFAE1D709E3600017CF0 /* MobileMiniBrowserUITests */,
CD1DAF931D709E3600017CF0 /* Products */,
CD1DAFC01D70E12D00017CF0 /* Frameworks */,
@@ -127,22 +81,36 @@
children = (
CD1DAF921D709E3600017CF0 /* MobileMiniBrowser.app */,
CD1DAFAB1D709E3600017CF0 /* MobileMiniBrowserUITests.xctest */,
- CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */,
);
name = Products;
sourceTree = "<group>";
};
- CD1DAF941D709E3600017CF0 /* MobileMiniBrowser App */ = {
+ CD1DAF941D709E3600017CF0 /* MobileMiniBrowser */ = {
isa = PBXGroup;
children = (
+ CD1DAFBA1D709EF200017CF0 /* TabViewController.h */,
+ CD1DAFBB1D709EF200017CF0 /* TabViewController.m */,
+ CD1DAFBC1D709EF200017CF0 /* WebViewController.h */,
+ CD1DAFBD1D709EF200017CF0 /* WebViewController.m */,
+ CD1DAF981D709E3600017CF0 /* AppDelegate.h */,
+ CD1DAF991D709E3600017CF0 /* AppDelegate.m */,
+ CD1DAF9E1D709E3600017CF0 /* Main.storyboard */,
+ CD1DAFA11D709E3600017CF0 /* Assets.xcassets */,
+ CD1DAFA31D709E3600017CF0 /* LaunchScreen.storyboard */,
CD1DAFA61D709E3600017CF0 /* Info.plist */,
- CD1DAFA31D709E3600017CF0 /* LaunchScreen.storyboard */,
- CD1DAF961D709E3600017CF0 /* main.m */,
+ CD1DAF951D709E3600017CF0 /* Supporting Files */,
);
- name = "MobileMiniBrowser App";
path = MobileMiniBrowser;
sourceTree = "<group>";
};
+ CD1DAF951D709E3600017CF0 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ CD1DAF961D709E3600017CF0 /* main.m */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
CD1DAFAE1D709E3600017CF0 /* MobileMiniBrowserUITests */ = {
isa = PBXGroup;
children = (
@@ -160,51 +128,8 @@
name = Frameworks;
sourceTree = "<group>";
};
- CD498B3C1D76348000681FA7 /* MobileMiniBrowser Framework */ = {
- isa = PBXGroup;
- children = (
- CDA985121D76471700EBC399 /* Resources */,
- CD1DAF981D709E3600017CF0 /* AppDelegate.h */,
- CD1DAF991D709E3600017CF0 /* AppDelegate.m */,
- CD1DAFA11D709E3600017CF0 /* Assets.xcassets */,
- CD498B471D7634C700681FA7 /* Info.plist */,
- CD1DAF9E1D709E3600017CF0 /* Main.storyboard */,
- CD498B481D7634C700681FA7 /* MobileMiniBrowser.h */,
- CD1DAFBA1D709EF200017CF0 /* TabViewController.h */,
- CD1DAFBB1D709EF200017CF0 /* TabViewController.m */,
- CD1DAFBC1D709EF200017CF0 /* WebViewController.h */,
- CD1DAFBD1D709EF200017CF0 /* WebViewController.m */,
- );
- name = "MobileMiniBrowser Framework";
- path = MobileMiniBrowserFramework;
- sourceTree = SOURCE_ROOT;
- };
- CDA985121D76471700EBC399 /* Resources */ = {
- isa = PBXGroup;
- children = (
- CDA985151D76477900EBC399 /* test.mp4 */,
- CDA985131D76474100EBC399 /* index.html */,
- CDA985171D7647CD00EBC399 /* looping.html */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
/* End PBXGroup section */
-/* Begin PBXHeadersBuildPhase section */
- CD498B381D76348000681FA7 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CD498B4A1D763D4800681FA7 /* MobileMiniBrowser.h in Headers */,
- CD498B4F1D763D7600681FA7 /* WebViewController.h in Headers */,
- CD498B4E1D763D7600681FA7 /* TabViewController.h in Headers */,
- CD498B501D763D7600681FA7 /* AppDelegate.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
/* Begin PBXNativeTarget section */
CD1DAF911D709E3600017CF0 /* MobileMiniBrowser */ = {
isa = PBXNativeTarget;
@@ -213,12 +138,10 @@
CD1DAF8E1D709E3600017CF0 /* Sources */,
CD1DAF8F1D709E3600017CF0 /* Frameworks */,
CD1DAF901D709E3600017CF0 /* Resources */,
- CD498B231D76341700681FA7 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
- CD498B411D76348000681FA7 /* PBXTargetDependency */,
);
name = MobileMiniBrowser;
productName = MobileMiniBrowser;
@@ -243,24 +166,6 @@
productReference = CD1DAFAB1D709E3600017CF0 /* MobileMiniBrowserUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
- CD498B3A1D76348000681FA7 /* MobileMiniBrowser.framework */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = CD498B441D76348000681FA7 /* Build configuration list for PBXNativeTarget "MobileMiniBrowser.framework" */;
- buildPhases = (
- CD498B361D76348000681FA7 /* Sources */,
- CD498B371D76348000681FA7 /* Frameworks */,
- CD498B381D76348000681FA7 /* Headers */,
- CD498B391D76348000681FA7 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = MobileMiniBrowser.framework;
- productName = MobileMiniBrowser;
- productReference = CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */;
- productType = "com.apple.product-type.framework";
- };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -277,10 +182,6 @@
CreatedOnToolsVersion = 8.0;
TestTargetID = CD1DAF911D709E3600017CF0;
};
- CD498B3A1D76348000681FA7 = {
- CreatedOnToolsVersion = 8.0;
- ProvisioningStyle = Automatic;
- };
};
};
buildConfigurationList = CD1DAF8D1D709E3600017CF0 /* Build configuration list for PBXProject "MobileMiniBrowser" */;
@@ -298,7 +199,6 @@
targets = (
CD1DAF911D709E3600017CF0 /* MobileMiniBrowser */,
CD1DAFAA1D709E3600017CF0 /* MobileMiniBrowserUITests */,
- CD498B3A1D76348000681FA7 /* MobileMiniBrowser.framework */,
);
};
/* End PBXProject section */
@@ -309,6 +209,8 @@
buildActionMask = 2147483647;
files = (
CD1DAFA51D709E3600017CF0 /* LaunchScreen.storyboard in Resources */,
+ CD1DAFA21D709E3600017CF0 /* Assets.xcassets in Resources */,
+ CD1DAFA01D709E3600017CF0 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -319,19 +221,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- CD498B391D76348000681FA7 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CDA9851A1D76483400EBC399 /* index.html in Resources */,
- CD498B521D763D8800681FA7 /* Assets.xcassets in Resources */,
- CD498B511D763D7F00681FA7 /* Main.storyboard in Resources */,
- CDA9851B1D76483400EBC399 /* looping.html in Resources */,
- CD498B531D763D9300681FA7 /* Info.plist in Resources */,
- CDA985191D76483400EBC399 /* test.mp4 in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -339,7 +228,10 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ CD1DAFBE1D709EF200017CF0 /* TabViewController.m in Sources */,
+ CD1DAF9A1D709E3600017CF0 /* AppDelegate.m in Sources */,
CD1DAF971D709E3600017CF0 /* main.m in Sources */,
+ CD1DAFBF1D709EF200017CF0 /* WebViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -351,16 +243,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- CD498B361D76348000681FA7 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CD498B4B1D763D7100681FA7 /* TabViewController.m in Sources */,
- CD498B4C1D763D7100681FA7 /* WebViewController.m in Sources */,
- CD498B4D1D763D7100681FA7 /* AppDelegate.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -369,11 +251,6 @@
target = CD1DAF911D709E3600017CF0 /* MobileMiniBrowser */;
targetProxy = CD1DAFAC1D709E3600017CF0 /* PBXContainerItemProxy */;
};
- CD498B411D76348000681FA7 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = CD498B3A1D76348000681FA7 /* MobileMiniBrowser.framework */;
- targetProxy = CD498B401D76348000681FA7 /* PBXContainerItemProxy */;
- };
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
@@ -489,7 +366,7 @@
INFOPLIST_FILE = MobileMiniBrowser/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowser;
- PRODUCT_NAME = MobileMiniBrowser;
+ PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
@@ -500,7 +377,7 @@
INFOPLIST_FILE = MobileMiniBrowser/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowser;
- PRODUCT_NAME = MobileMiniBrowser;
+ PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
@@ -526,48 +403,6 @@
};
name = Release;
};
- CD498B451D76348000681FA7 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = MobileMiniBrowser/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowserFramework;
- PRODUCT_NAME = MobileMiniBrowser;
- SKIP_INSTALL = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
- CD498B461D76348000681FA7 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_IDENTITY = "";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = MobileMiniBrowser/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowserFramework;
- PRODUCT_NAME = MobileMiniBrowser;
- SKIP_INSTALL = YES;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -598,15 +433,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- CD498B441D76348000681FA7 /* Build configuration list for PBXNativeTarget "MobileMiniBrowser.framework" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- CD498B451D76348000681FA7 /* Debug */,
- CD498B461D76348000681FA7 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
/* End XCConfigurationList section */
};
rootObject = CD1DAF8A1D709E3600017CF0 /* Project object */;
Modified: trunk/Tools/MobileMiniBrowser/MobileMiniBrowserUITests/MobileMiniBrowserUITests.m (205310 => 205311)
--- trunk/Tools/MobileMiniBrowser/MobileMiniBrowserUITests/MobileMiniBrowserUITests.m 2016-09-01 20:14:14 UTC (rev 205310)
+++ trunk/Tools/MobileMiniBrowser/MobileMiniBrowserUITests/MobileMiniBrowserUITests.m 2016-09-01 20:17:02 UTC (rev 205311)
@@ -60,9 +60,19 @@
XCUIElement *clearButton = urlField.buttons[@"Clear text"];
if (clearButton.exists)
[clearButton tap];
- [urlField typeText:@"bundle:/looping.html"];
+ [urlField typeText:@"http://test-safari.apple.com/"];
[app.buttons[@"Go To URL"] tap];
+ XCUIElement *captions = app.links[@"Captions"];
+ [self expectationForPredicate:exists evaluatedWithObject:captions handler:nil];
+ [self waitForExpectationsWithTimeout:5.0 handler:nil];
+ [captions tap];
+
+ XCUIElement *viewInPage = app.links[@"Video in page"];
+ [self expectationForPredicate:exists evaluatedWithObject:viewInPage handler:nil];
+ [self waitForExpectationsWithTimeout:5.0 handler:nil];
+ [viewInPage tap];
+
XCUIElement *startPlayback = app.buttons[@"Start Playback"];
[self expectationForPredicate:exists evaluatedWithObject:startPlayback handler:nil];
[self waitForExpectationsWithTimeout:5.0 handler:nil];