Changeset 205295 in webkit


Ignore:
Timestamp:
Sep 1, 2016 10:32:32 AM (8 years ago)
Author:
jer.noble@apple.com
Message:

Refactor MobileMiniBrowser into an application framework to allow external XCTesting
https://bugs.webkit.org/show_bug.cgi?id=161462

Reviewed by Eric Carlson.

XCTest targets need to be in the same project as the application which they're testing. To facilitate
having external projects with XCTest targets, move the application's implementation into a framework
that can be included with a bare-bones application shell for testing.

Simultaneously, add the ability to load files from within the new framework's bundle by using a
'bundle:/' URL scheme. Update the tests to use this new bundle URL and remove the dependency on
an external server for testing.

  • MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
  • MobileMiniBrowser/MobileMiniBrowser/Base.lproj/LaunchScreen.storyboard:
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist:
  • MobileMiniBrowser/MobileMiniBrowser/main.m:
  • MobileMiniBrowser/MobileMiniBrowserFramework/AppDelegate.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.h.
  • MobileMiniBrowser/MobileMiniBrowserFramework/AppDelegate.m: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.m.

(-[AppDelegate application:didFinishLaunchingWithOptions:]): Manually instantiate the main view

controller from the framework's bundle.

  • MobileMiniBrowser/MobileMiniBrowserFramework/Assets.xcassets/AppIcon.appiconset/Contents.json: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/Assets.xcassets/AppIcon.appiconset/Contents.json.
  • MobileMiniBrowser/MobileMiniBrowserFramework/Base.lproj/Main.storyboard: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/Main.storyboard.
  • MobileMiniBrowser/MobileMiniBrowserFramework/Info.plist: Added.
  • MobileMiniBrowser/MobileMiniBrowserFramework/MobileMiniBrowser.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.h.
  • MobileMiniBrowser/MobileMiniBrowserFramework/TabViewController.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.h.
  • MobileMiniBrowser/MobileMiniBrowserFramework/TabViewController.m: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.m.
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.h.
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.m.

(+[NSURL bundleURLForFileURL:bundle:]): Add utility method.
(+[NSURL
fileURLForBundleURL:bundle:]): Ditto.
(-[WebViewController navigateTo:]): Support loading "bundle:/" URLs which are really just "file:" URLs

pointing to the framework's resources directory.

(-[WebViewController observeValueForKeyPath:ofObject:change:context:]): Ditto.

  • MobileMiniBrowser/MobileMiniBrowserUITests/MobileMiniBrowserUITests.m:

(-[MobileMiniBrowserUITests testBasicVideoPlayback]):

Location:
trunk/Tools
Files:
9 added
1 deleted
6 edited
2 copied
7 moved

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r205281 r205295  
     12016-08-31  Jer Noble  <jer.noble@apple.com>
     2
     3        Refactor MobileMiniBrowser into an application framework to allow external XCTesting
     4        https://bugs.webkit.org/show_bug.cgi?id=161462
     5
     6        Reviewed by Eric Carlson.
     7
     8        XCTest targets need to be in the same project as the application which they're testing. To facilitate
     9        having external projects with XCTest targets, move the application's implementation into a framework
     10        that can be included with a bare-bones application shell for testing.
     11
     12        Simultaneously, add the ability to load files from within the new framework's bundle by using a
     13        'bundle:/' URL scheme. Update the tests to use this new bundle URL and remove the dependency on
     14        an external server for testing.
     15
     16        * MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
     17        * MobileMiniBrowser/MobileMiniBrowser/Base.lproj/LaunchScreen.storyboard:
     18        * MobileMiniBrowser/MobileMiniBrowser/Info.plist:
     19        * MobileMiniBrowser/MobileMiniBrowser/main.m:
     20        * MobileMiniBrowser/MobileMiniBrowserFramework/AppDelegate.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.h.
     21        * MobileMiniBrowser/MobileMiniBrowserFramework/AppDelegate.m: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.m.
     22        (-[AppDelegate application:didFinishLaunchingWithOptions:]): Manually instantiate the main view
     23            controller from the framework's bundle.
     24        * MobileMiniBrowser/MobileMiniBrowserFramework/Assets.xcassets/AppIcon.appiconset/Contents.json: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/Assets.xcassets/AppIcon.appiconset/Contents.json.
     25        * MobileMiniBrowser/MobileMiniBrowserFramework/Base.lproj/Main.storyboard: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/Main.storyboard.
     26        * MobileMiniBrowser/MobileMiniBrowserFramework/Info.plist: Added.
     27        * MobileMiniBrowser/MobileMiniBrowserFramework/MobileMiniBrowser.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/AppDelegate.h.
     28        * MobileMiniBrowser/MobileMiniBrowserFramework/TabViewController.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.h.
     29        * MobileMiniBrowser/MobileMiniBrowserFramework/TabViewController.m: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/TabViewController.m.
     30        * MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.h: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.h.
     31        * MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m: Renamed from Tools/MobileMiniBrowser/MobileMiniBrowser/WebViewController.m.
     32        (+[NSURL __bundleURLForFileURL:bundle:]): Add utility method.
     33        (+[NSURL __fileURLForBundleURL:bundle:]): Ditto.
     34        (-[WebViewController navigateTo:]): Support loading "bundle:/" URLs which are really just "file:" URLs
     35            pointing to the framework's resources directory.
     36        (-[WebViewController observeValueForKeyPath:ofObject:change:context:]): Ditto.
     37        * MobileMiniBrowser/MobileMiniBrowserUITests/MobileMiniBrowserUITests.m:
     38        (-[MobileMiniBrowserUITests testBasicVideoPlayback]):
     39
    1402016-09-01  Carlos Garcia Campos  <cgarcia@igalia.com>
    241
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj

    r205074 r205295  
    99/* Begin PBXBuildFile section */
    1010                CD1DAF971D709E3600017CF0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAF961D709E3600017CF0 /* main.m */; };
    11                 CD1DAF9A1D709E3600017CF0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAF991D709E3600017CF0 /* AppDelegate.m */; };
    12                 CD1DAFA01D709E3600017CF0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAF9E1D709E3600017CF0 /* Main.storyboard */; };
    13                 CD1DAFA21D709E3600017CF0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAFA11D709E3600017CF0 /* Assets.xcassets */; };
    1411                CD1DAFA51D709E3600017CF0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAFA31D709E3600017CF0 /* LaunchScreen.storyboard */; };
    1512                CD1DAFB01D709E3600017CF0 /* MobileMiniBrowserUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFAF1D709E3600017CF0 /* MobileMiniBrowserUITests.m */; };
    16                 CD1DAFBE1D709EF200017CF0 /* TabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBB1D709EF200017CF0 /* TabViewController.m */; };
    17                 CD1DAFBF1D709EF200017CF0 /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBD1D709EF200017CF0 /* WebViewController.m */; };
    1813                CD1DAFC21D70E12D00017CF0 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD1DAFC11D70E12D00017CF0 /* WebKit.framework */; };
     14                CD498B421D76348000681FA7 /* MobileMiniBrowser.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */; };
     15                CD498B431D76348000681FA7 /* MobileMiniBrowser.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
     16                CD498B4A1D763D4800681FA7 /* MobileMiniBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = CD498B481D7634C700681FA7 /* MobileMiniBrowser.h */; settings = {ATTRIBUTES = (Public, ); }; };
     17                CD498B4B1D763D7100681FA7 /* TabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBB1D709EF200017CF0 /* TabViewController.m */; };
     18                CD498B4C1D763D7100681FA7 /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAFBD1D709EF200017CF0 /* WebViewController.m */; };
     19                CD498B4D1D763D7100681FA7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CD1DAF991D709E3600017CF0 /* AppDelegate.m */; };
     20                CD498B4E1D763D7600681FA7 /* TabViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1DAFBA1D709EF200017CF0 /* TabViewController.h */; };
     21                CD498B4F1D763D7600681FA7 /* WebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1DAFBC1D709EF200017CF0 /* WebViewController.h */; };
     22                CD498B501D763D7600681FA7 /* AppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1DAF981D709E3600017CF0 /* AppDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
     23                CD498B511D763D7F00681FA7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAF9E1D709E3600017CF0 /* Main.storyboard */; };
     24                CD498B521D763D8800681FA7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD1DAFA11D709E3600017CF0 /* Assets.xcassets */; };
     25                CD498B531D763D9300681FA7 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = CD498B471D7634C700681FA7 /* Info.plist */; };
     26                CDA985191D76483400EBC399 /* test.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = CDA985151D76477900EBC399 /* test.mp4 */; };
     27                CDA9851A1D76483400EBC399 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = CDA985131D76474100EBC399 /* index.html */; };
     28                CDA9851B1D76483400EBC399 /* looping.html in Resources */ = {isa = PBXBuildFile; fileRef = CDA985171D7647CD00EBC399 /* looping.html */; };
    1929/* End PBXBuildFile section */
    2030
     
    2737                        remoteInfo = MobileMiniBrowser;
    2838                };
     39                CD498B401D76348000681FA7 /* PBXContainerItemProxy */ = {
     40                        isa = PBXContainerItemProxy;
     41                        containerPortal = CD1DAF8A1D709E3600017CF0 /* Project object */;
     42                        proxyType = 1;
     43                        remoteGlobalIDString = CD498B3A1D76348000681FA7;
     44                        remoteInfo = MobileMiniBrowser;
     45                };
    2946/* End PBXContainerItemProxy section */
     47
     48/* Begin PBXCopyFilesBuildPhase section */
     49                CD498B231D76341700681FA7 /* Embed Frameworks */ = {
     50                        isa = PBXCopyFilesBuildPhase;
     51                        buildActionMask = 2147483647;
     52                        dstPath = "";
     53                        dstSubfolderSpec = 10;
     54                        files = (
     55                                CD498B431D76348000681FA7 /* MobileMiniBrowser.framework in Embed Frameworks */,
     56                        );
     57                        name = "Embed Frameworks";
     58                        runOnlyForDeploymentPostprocessing = 0;
     59                };
     60/* End PBXCopyFilesBuildPhase section */
    3061
    3162/* Begin PBXFileReference section */
     
    4677                CD1DAFBD1D709EF200017CF0 /* WebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewController.m; sourceTree = "<group>"; };
    4778                CD1DAFC11D70E12D00017CF0 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = "../../WebKitBuild/Debug-iphonesimulator/WebKit.framework"; sourceTree = "<group>"; };
     79                CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MobileMiniBrowser.framework; sourceTree = BUILT_PRODUCTS_DIR; };
     80                CD498B471D7634C700681FA7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
     81                CD498B481D7634C700681FA7 /* MobileMiniBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobileMiniBrowser.h; sourceTree = "<group>"; };
     82                CDA985131D76474100EBC399 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = index.html; path = Resources/index.html; sourceTree = "<group>"; };
     83                CDA985151D76477900EBC399 /* test.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; name = test.mp4; path = Resources/test.mp4; sourceTree = "<group>"; };
     84                CDA985171D7647CD00EBC399 /* looping.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = looping.html; path = Resources/looping.html; sourceTree = "<group>"; };
    4885/* End PBXFileReference section */
    4986
     
    5390                        buildActionMask = 2147483647;
    5491                        files = (
     92                                CD498B421D76348000681FA7 /* MobileMiniBrowser.framework in Frameworks */,
    5593                                CD1DAFC21D70E12D00017CF0 /* WebKit.framework in Frameworks */,
    5694                        );
     
    5896                };
    5997                CD1DAFA81D709E3600017CF0 /* Frameworks */ = {
     98                        isa = PBXFrameworksBuildPhase;
     99                        buildActionMask = 2147483647;
     100                        files = (
     101                        );
     102                        runOnlyForDeploymentPostprocessing = 0;
     103                };
     104                CD498B371D76348000681FA7 /* Frameworks */ = {
    60105                        isa = PBXFrameworksBuildPhase;
    61106                        buildActionMask = 2147483647;
     
    70115                        isa = PBXGroup;
    71116                        children = (
    72                                 CD1DAF941D709E3600017CF0 /* MobileMiniBrowser */,
     117                                CD1DAF941D709E3600017CF0 /* MobileMiniBrowser App */,
     118                                CD498B3C1D76348000681FA7 /* MobileMiniBrowser Framework */,
    73119                                CD1DAFAE1D709E3600017CF0 /* MobileMiniBrowserUITests */,
    74120                                CD1DAF931D709E3600017CF0 /* Products */,
     
    82128                                CD1DAF921D709E3600017CF0 /* MobileMiniBrowser.app */,
    83129                                CD1DAFAB1D709E3600017CF0 /* MobileMiniBrowserUITests.xctest */,
     130                                CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */,
    84131                        );
    85132                        name = Products;
    86133                        sourceTree = "<group>";
    87134                };
    88                 CD1DAF941D709E3600017CF0 /* MobileMiniBrowser */ = {
     135                CD1DAF941D709E3600017CF0 /* MobileMiniBrowser App */ = {
    89136                        isa = PBXGroup;
    90137                        children = (
     138                                CD1DAFA61D709E3600017CF0 /* Info.plist */,
     139                                CD1DAFA31D709E3600017CF0 /* LaunchScreen.storyboard */,
     140                                CD1DAF961D709E3600017CF0 /* main.m */,
     141                        );
     142                        name = "MobileMiniBrowser App";
     143                        path = MobileMiniBrowser;
     144                        sourceTree = "<group>";
     145                };
     146                CD1DAFAE1D709E3600017CF0 /* MobileMiniBrowserUITests */ = {
     147                        isa = PBXGroup;
     148                        children = (
     149                                CD1DAFAF1D709E3600017CF0 /* MobileMiniBrowserUITests.m */,
     150                                CD1DAFB11D709E3600017CF0 /* Info.plist */,
     151                        );
     152                        path = MobileMiniBrowserUITests;
     153                        sourceTree = "<group>";
     154                };
     155                CD1DAFC01D70E12D00017CF0 /* Frameworks */ = {
     156                        isa = PBXGroup;
     157                        children = (
     158                                CD1DAFC11D70E12D00017CF0 /* WebKit.framework */,
     159                        );
     160                        name = Frameworks;
     161                        sourceTree = "<group>";
     162                };
     163                CD498B3C1D76348000681FA7 /* MobileMiniBrowser Framework */ = {
     164                        isa = PBXGroup;
     165                        children = (
     166                                CDA985121D76471700EBC399 /* Resources */,
     167                                CD1DAF981D709E3600017CF0 /* AppDelegate.h */,
     168                                CD1DAF991D709E3600017CF0 /* AppDelegate.m */,
     169                                CD1DAFA11D709E3600017CF0 /* Assets.xcassets */,
     170                                CD498B471D7634C700681FA7 /* Info.plist */,
     171                                CD1DAF9E1D709E3600017CF0 /* Main.storyboard */,
     172                                CD498B481D7634C700681FA7 /* MobileMiniBrowser.h */,
    91173                                CD1DAFBA1D709EF200017CF0 /* TabViewController.h */,
    92174                                CD1DAFBB1D709EF200017CF0 /* TabViewController.m */,
    93175                                CD1DAFBC1D709EF200017CF0 /* WebViewController.h */,
    94176                                CD1DAFBD1D709EF200017CF0 /* WebViewController.m */,
    95                                 CD1DAF981D709E3600017CF0 /* AppDelegate.h */,
    96                                 CD1DAF991D709E3600017CF0 /* AppDelegate.m */,
    97                                 CD1DAF9E1D709E3600017CF0 /* Main.storyboard */,
    98                                 CD1DAFA11D709E3600017CF0 /* Assets.xcassets */,
    99                                 CD1DAFA31D709E3600017CF0 /* LaunchScreen.storyboard */,
    100                                 CD1DAFA61D709E3600017CF0 /* Info.plist */,
    101                                 CD1DAF951D709E3600017CF0 /* Supporting Files */,
    102                         );
    103                         path = MobileMiniBrowser;
    104                         sourceTree = "<group>";
    105                 };
    106                 CD1DAF951D709E3600017CF0 /* Supporting Files */ = {
     177                        );
     178                        name = "MobileMiniBrowser Framework";
     179                        path = MobileMiniBrowserFramework;
     180                        sourceTree = SOURCE_ROOT;
     181                };
     182                CDA985121D76471700EBC399 /* Resources */ = {
    107183                        isa = PBXGroup;
    108184                        children = (
    109                                 CD1DAF961D709E3600017CF0 /* main.m */,
    110                         );
    111                         name = "Supporting Files";
    112                         sourceTree = "<group>";
    113                 };
    114                 CD1DAFAE1D709E3600017CF0 /* MobileMiniBrowserUITests */ = {
    115                         isa = PBXGroup;
    116                         children = (
    117                                 CD1DAFAF1D709E3600017CF0 /* MobileMiniBrowserUITests.m */,
    118                                 CD1DAFB11D709E3600017CF0 /* Info.plist */,
    119                         );
    120                         path = MobileMiniBrowserUITests;
    121                         sourceTree = "<group>";
    122                 };
    123                 CD1DAFC01D70E12D00017CF0 /* Frameworks */ = {
    124                         isa = PBXGroup;
    125                         children = (
    126                                 CD1DAFC11D70E12D00017CF0 /* WebKit.framework */,
    127                         );
    128                         name = Frameworks;
     185                                CDA985151D76477900EBC399 /* test.mp4 */,
     186                                CDA985131D76474100EBC399 /* index.html */,
     187                                CDA985171D7647CD00EBC399 /* looping.html */,
     188                        );
     189                        name = Resources;
    129190                        sourceTree = "<group>";
    130191                };
    131192/* End PBXGroup section */
     193
     194/* Begin PBXHeadersBuildPhase section */
     195                CD498B381D76348000681FA7 /* Headers */ = {
     196                        isa = PBXHeadersBuildPhase;
     197                        buildActionMask = 2147483647;
     198                        files = (
     199                                CD498B4A1D763D4800681FA7 /* MobileMiniBrowser.h in Headers */,
     200                                CD498B4F1D763D7600681FA7 /* WebViewController.h in Headers */,
     201                                CD498B4E1D763D7600681FA7 /* TabViewController.h in Headers */,
     202                                CD498B501D763D7600681FA7 /* AppDelegate.h in Headers */,
     203                        );
     204                        runOnlyForDeploymentPostprocessing = 0;
     205                };
     206/* End PBXHeadersBuildPhase section */
    132207
    133208/* Begin PBXNativeTarget section */
     
    139214                                CD1DAF8F1D709E3600017CF0 /* Frameworks */,
    140215                                CD1DAF901D709E3600017CF0 /* Resources */,
     216                                CD498B231D76341700681FA7 /* Embed Frameworks */,
    141217                        );
    142218                        buildRules = (
    143219                        );
    144220                        dependencies = (
     221                                CD498B411D76348000681FA7 /* PBXTargetDependency */,
    145222                        );
    146223                        name = MobileMiniBrowser;
     
    166243                        productReference = CD1DAFAB1D709E3600017CF0 /* MobileMiniBrowserUITests.xctest */;
    167244                        productType = "com.apple.product-type.bundle.ui-testing";
     245                };
     246                CD498B3A1D76348000681FA7 /* MobileMiniBrowser.framework */ = {
     247                        isa = PBXNativeTarget;
     248                        buildConfigurationList = CD498B441D76348000681FA7 /* Build configuration list for PBXNativeTarget "MobileMiniBrowser.framework" */;
     249                        buildPhases = (
     250                                CD498B361D76348000681FA7 /* Sources */,
     251                                CD498B371D76348000681FA7 /* Frameworks */,
     252                                CD498B381D76348000681FA7 /* Headers */,
     253                                CD498B391D76348000681FA7 /* Resources */,
     254                        );
     255                        buildRules = (
     256                        );
     257                        dependencies = (
     258                        );
     259                        name = MobileMiniBrowser.framework;
     260                        productName = MobileMiniBrowser;
     261                        productReference = CD498B3B1D76348000681FA7 /* MobileMiniBrowser.framework */;
     262                        productType = "com.apple.product-type.framework";
    168263                };
    169264/* End PBXNativeTarget section */
     
    183278                                                TestTargetID = CD1DAF911D709E3600017CF0;
    184279                                        };
     280                                        CD498B3A1D76348000681FA7 = {
     281                                                CreatedOnToolsVersion = 8.0;
     282                                                ProvisioningStyle = Automatic;
     283                                        };
    185284                                };
    186285                        };
     
    200299                                CD1DAF911D709E3600017CF0 /* MobileMiniBrowser */,
    201300                                CD1DAFAA1D709E3600017CF0 /* MobileMiniBrowserUITests */,
     301                                CD498B3A1D76348000681FA7 /* MobileMiniBrowser.framework */,
    202302                        );
    203303                };
     
    210310                        files = (
    211311                                CD1DAFA51D709E3600017CF0 /* LaunchScreen.storyboard in Resources */,
    212                                 CD1DAFA21D709E3600017CF0 /* Assets.xcassets in Resources */,
    213                                 CD1DAFA01D709E3600017CF0 /* Main.storyboard in Resources */,
    214312                        );
    215313                        runOnlyForDeploymentPostprocessing = 0;
     
    219317                        buildActionMask = 2147483647;
    220318                        files = (
     319                        );
     320                        runOnlyForDeploymentPostprocessing = 0;
     321                };
     322                CD498B391D76348000681FA7 /* Resources */ = {
     323                        isa = PBXResourcesBuildPhase;
     324                        buildActionMask = 2147483647;
     325                        files = (
     326                                CDA9851A1D76483400EBC399 /* index.html in Resources */,
     327                                CD498B521D763D8800681FA7 /* Assets.xcassets in Resources */,
     328                                CD498B511D763D7F00681FA7 /* Main.storyboard in Resources */,
     329                                CDA9851B1D76483400EBC399 /* looping.html in Resources */,
     330                                CD498B531D763D9300681FA7 /* Info.plist in Resources */,
     331                                CDA985191D76483400EBC399 /* test.mp4 in Resources */,
    221332                        );
    222333                        runOnlyForDeploymentPostprocessing = 0;
     
    229340                        buildActionMask = 2147483647;
    230341                        files = (
    231                                 CD1DAFBE1D709EF200017CF0 /* TabViewController.m in Sources */,
    232                                 CD1DAF9A1D709E3600017CF0 /* AppDelegate.m in Sources */,
    233342                                CD1DAF971D709E3600017CF0 /* main.m in Sources */,
    234                                 CD1DAFBF1D709EF200017CF0 /* WebViewController.m in Sources */,
    235343                        );
    236344                        runOnlyForDeploymentPostprocessing = 0;
     
    241349                        files = (
    242350                                CD1DAFB01D709E3600017CF0 /* MobileMiniBrowserUITests.m in Sources */,
     351                        );
     352                        runOnlyForDeploymentPostprocessing = 0;
     353                };
     354                CD498B361D76348000681FA7 /* Sources */ = {
     355                        isa = PBXSourcesBuildPhase;
     356                        buildActionMask = 2147483647;
     357                        files = (
     358                                CD498B4B1D763D7100681FA7 /* TabViewController.m in Sources */,
     359                                CD498B4C1D763D7100681FA7 /* WebViewController.m in Sources */,
     360                                CD498B4D1D763D7100681FA7 /* AppDelegate.m in Sources */,
    243361                        );
    244362                        runOnlyForDeploymentPostprocessing = 0;
     
    251369                        target = CD1DAF911D709E3600017CF0 /* MobileMiniBrowser */;
    252370                        targetProxy = CD1DAFAC1D709E3600017CF0 /* PBXContainerItemProxy */;
     371                };
     372                CD498B411D76348000681FA7 /* PBXTargetDependency */ = {
     373                        isa = PBXTargetDependency;
     374                        target = CD498B3A1D76348000681FA7 /* MobileMiniBrowser.framework */;
     375                        targetProxy = CD498B401D76348000681FA7 /* PBXContainerItemProxy */;
    253376                };
    254377/* End PBXTargetDependency section */
     
    367490                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
    368491                                PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowser;
    369                                 PRODUCT_NAME = "$(TARGET_NAME)";
     492                                PRODUCT_NAME = MobileMiniBrowser;
    370493                        };
    371494                        name = Debug;
     
    378501                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
    379502                                PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowser;
    380                                 PRODUCT_NAME = "$(TARGET_NAME)";
     503                                PRODUCT_NAME = MobileMiniBrowser;
    381504                        };
    382505                        name = Release;
     
    401524                                PRODUCT_NAME = "$(TARGET_NAME)";
    402525                                TEST_TARGET_NAME = MobileMiniBrowser;
     526                        };
     527                        name = Release;
     528                };
     529                CD498B451D76348000681FA7 /* Debug */ = {
     530                        isa = XCBuildConfiguration;
     531                        buildSettings = {
     532                                CODE_SIGN_IDENTITY = "";
     533                                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
     534                                CURRENT_PROJECT_VERSION = 1;
     535                                DEFINES_MODULE = YES;
     536                                DYLIB_COMPATIBILITY_VERSION = 1;
     537                                DYLIB_CURRENT_VERSION = 1;
     538                                DYLIB_INSTALL_NAME_BASE = "@rpath";
     539                                INFOPLIST_FILE = MobileMiniBrowser/Info.plist;
     540                                INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
     541                                IPHONEOS_DEPLOYMENT_TARGET = 10.1;
     542                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
     543                                PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowserFramework;
     544                                PRODUCT_NAME = MobileMiniBrowser;
     545                                SKIP_INSTALL = YES;
     546                                VERSIONING_SYSTEM = "apple-generic";
     547                                VERSION_INFO_PREFIX = "";
     548                        };
     549                        name = Debug;
     550                };
     551                CD498B461D76348000681FA7 /* Release */ = {
     552                        isa = XCBuildConfiguration;
     553                        buildSettings = {
     554                                CODE_SIGN_IDENTITY = "";
     555                                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
     556                                CURRENT_PROJECT_VERSION = 1;
     557                                DEFINES_MODULE = YES;
     558                                DYLIB_COMPATIBILITY_VERSION = 1;
     559                                DYLIB_CURRENT_VERSION = 1;
     560                                DYLIB_INSTALL_NAME_BASE = "@rpath";
     561                                INFOPLIST_FILE = MobileMiniBrowser/Info.plist;
     562                                INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
     563                                IPHONEOS_DEPLOYMENT_TARGET = 10.1;
     564                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
     565                                PRODUCT_BUNDLE_IDENTIFIER = org.webkit.MobileMiniBrowserFramework;
     566                                PRODUCT_NAME = MobileMiniBrowser;
     567                                SKIP_INSTALL = YES;
     568                                VERSIONING_SYSTEM = "apple-generic";
     569                                VERSION_INFO_PREFIX = "";
    403570                        };
    404571                        name = Release;
     
    434601                        defaultConfigurationName = Release;
    435602                };
     603                CD498B441D76348000681FA7 /* Build configuration list for PBXNativeTarget "MobileMiniBrowser.framework" */ = {
     604                        isa = XCConfigurationList;
     605                        buildConfigurations = (
     606                                CD498B451D76348000681FA7 /* Debug */,
     607                                CD498B461D76348000681FA7 /* Release */,
     608                        );
     609                        defaultConfigurationIsVisible = 0;
     610                        defaultConfigurationName = Release;
     611                };
    436612/* End XCConfigurationList section */
    437613        };
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Base.lproj/LaunchScreen.storyboard

    r205073 r205295  
    1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    2 <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">
     1<?xml version="1.0" encoding="UTF-8"?>
     2<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">
    33    <dependencies>
    44        <deployment version="2304" identifier="iOS"/>
    5         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
     5        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11156"/>
    66        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
     7        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    78    </dependencies>
    89    <scenes>
     
    1011        <scene sceneID="EHf-IW-A2E">
    1112            <objects>
    12                 <viewController id="01J-lp-oVM" sceneMemberID="viewController">
     13                <viewController storyboardIdentifier="idViewController" id="01J-lp-oVM" sceneMemberID="viewController">
    1314                    <layoutGuides>
    1415                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
     
    1617                    </layoutGuides>
    1718                    <view key="view" contentMode="scaleToFill" id="9qo-7e-hd1">
    18                         <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
     19                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
    1920                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
    2021                        <subviews>
    21                             <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="F7I-Hn-oUR">
    22                                 <rect key="frame" x="0.0" y="0.0" width="0.0" height="44"/>
     22                            <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F7I-Hn-oUR">
    2323                                <constraints>
    2424                                    <constraint firstAttribute="height" constant="44" id="h95-xh-m8y"/>
     
    3434                                </items>
    3535                            </toolbar>
    36                             <view clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7Vg-6f-OBr" userLabel="URL Field Container">
     36                            <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Vg-6f-OBr" userLabel="URL Field Container">
    3737                                <subviews>
    38                                     <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nX4-D6-AXV">
    39                                         <rect key="frame" x="0.0" y="0.0" width="0.0" height="45"/>
     38                                    <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nX4-D6-AXV">
    4039                                        <items/>
    4140                                    </toolbar>
    42                                     <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">
    43                                         <rect key="frame" x="0.0" y="0.0" width="0.0" height="30"/>
     41                                    <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">
    4442                                        <nil key="textColor"/>
    4543                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
    4644                                        <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="URL" returnKeyType="go" enablesReturnKeyAutomatically="YES"/>
    4745                                    </textField>
    48                                     <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1CE-0G-4aC">
     46                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1CE-0G-4aC">
    4947                                        <constraints>
    5048                                            <constraint firstAttribute="width" constant="45.999999999999886" id="Az8-yd-X45"/>
     
    5250                                        <state key="normal" title="Go"/>
    5351                                    </button>
    54                                     <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vYP-Mc-B8q">
    55                                         <rect key="frame" x="0.0" y="0.0" width="0.0" height="2"/>
    56                                     </progressView>
     52                                    <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vYP-Mc-B8q"/>
    5753                                </subviews>
    5854                                <constraints>
     
    7369                            </view>
    7470                        </subviews>
    75                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
     71                        <color key="backgroundColor" red="1" green="0.99997437000274658" blue="0.99999129772186279" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
    7672                        <constraints>
    7773                            <constraint firstItem="F7I-Hn-oUR" firstAttribute="top" secondItem="Llm-lL-Icb" secondAttribute="bottom" id="Dbb-TN-26g"/>
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/Info.plist

    r205057 r205295  
    2323        <key>UILaunchStoryboardName</key>
    2424        <string>LaunchScreen</string>
    25         <key>UIMainStoryboardFile</key>
    26         <string>Main</string>
    2725        <key>UIRequiredDeviceCapabilities</key>
    2826        <array>
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowser/main.m

    r205057 r205295  
    2424 */
    2525
    26 #import "AppDelegate.h"
    27 #import <UIKit/UIKit.h>
     26#import <MobileMiniBrowser/MobileMiniBrowser.h>
    2827
    2928int main(int argc, char * argv[])
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/AppDelegate.m

    r205293 r205295  
    2424 */
    2525
     26#import "config.h"
    2627#import "AppDelegate.h"
    2728
     29#import "WebViewController.h"
     30
    2831@interface AppDelegate ()
    29 
    3032@end
    3133
    3234@implementation AppDelegate
    3335
    34 
    3536- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    3637{
    37     // Override point for customization after application launch.
     38    UIStoryboard *frameworkMainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle bundleForClass:[AppDelegate class]]];
     39    WebViewController *viewController = [frameworkMainStoryboard instantiateInitialViewController];
     40    if (!viewController)
     41        return NO;
     42
     43    if (!self.window)
     44        self.window = [[UIWindow alloc] init];
     45    self.window.rootViewController = viewController;
     46    [self.window makeKeyAndVisible];
     47
    3848    return YES;
    3949}
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/Base.lproj/Main.storyboard

    r205293 r205295  
    1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    2 <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">
     1<?xml version="1.0" encoding="UTF-8"?>
     2<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11191" systemVersion="16B2314" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Ohh-6U-lsQ">
    33    <dependencies>
    44        <deployment version="2304" identifier="iOS"/>
    5         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
     5        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11156"/>
     6        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    67    </dependencies>
    78    <scenes>
     
    1516                    </layoutGuides>
    1617                    <view key="view" contentMode="scaleToFill" id="1WJ-am-PnB">
    17                         <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
     18                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
    1819                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
    1920                        <subviews>
    20                             <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SYm-x3-D12">
    21                                 <rect key="frame" x="0.0" y="0.0" width="0.0" height="44"/>
     21                            <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SYm-x3-D12">
    2222                                <constraints>
    2323                                    <constraint firstAttribute="height" constant="44" id="0IC-RY-cRv"/>
     
    4949                                </items>
    5050                            </toolbar>
    51                             <view clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Wkd-K8-BC1" userLabel="URL Field Container">
     51                            <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wkd-K8-BC1" userLabel="URL Field Container">
    5252                                <subviews>
    53                                     <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SSg-5u-loI">
    54                                         <rect key="frame" x="0.0" y="0.0" width="0.0" height="46"/>
     53                                    <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SSg-5u-loI">
    5554                                        <items/>
    5655                                    </toolbar>
    57                                     <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">
    58                                         <rect key="frame" x="0.0" y="0.0" width="0.0" height="30"/>
     56                                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="n4f-v4-gO4">
    5957                                        <accessibility key="accessibilityConfiguration" identifier="idURLField" label="URL Field"/>
    6058                                        <nil key="textColor"/>
     
    6664                                        </connections>
    6765                                    </textField>
    68                                     <button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qSw-Ym-IBE">
     66                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qSw-Ym-IBE">
    6967                                        <accessibility key="accessibilityConfiguration" identifier="idGoToURL" label="Go To URL"/>
    7068                                        <constraints>
     
    7674                                        </connections>
    7775                                    </button>
    78                                     <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" misplaced="YES" progress="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="2bJ-bG-4SW">
    79                                         <rect key="frame" x="0.0" y="0.0" width="0.0" height="2"/>
    80                                     </progressView>
     76                                    <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" progress="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="2bJ-bG-4SW"/>
    8177                                </subviews>
    8278                                <constraints>
     
    9692                                </constraints>
    9793                            </view>
    98                             <view contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="719-Zt-fvZ" userLabel="Web View Container">
    99                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
     94                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="719-Zt-fvZ" userLabel="Web View Container">
     95                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
    10096                                <accessibility key="accessibilityConfiguration" label="Web View Container"/>
    10197                            </view>
    10298                        </subviews>
    103                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
     99                        <color key="backgroundColor" red="1" green="0.99997437000274658" blue="0.99999129772186279" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
    104100                        <constraints>
    105101                            <constraint firstItem="Wkd-K8-BC1" firstAttribute="leading" secondItem="1WJ-am-PnB" secondAttribute="leading" id="2cZ-lB-Wel"/>
     
    136132                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
    137133                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
    138                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
     134                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
    139135                        <prototypes>
    140136                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="idTabViewCustomCell" selectionStyle="default" indentationWidth="10" id="Bxf-dM-uYf">
     
    142138                                <autoresizingMask key="autoresizingMask"/>
    143139                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Bxf-dM-uYf" id="lpb-yc-EJ5">
    144                                     <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
     140                                    <frame key="frameInset" width="375" height="44"/>
    145141                                    <autoresizingMask key="autoresizingMask"/>
    146142                                </tableViewCellContentView>
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/MobileMiniBrowser.h

    r205293 r205295  
    2424 */
    2525
    26 #import <UIKit/UIKit.h>
    27 
    28 @interface AppDelegate : UIResponder <UIApplicationDelegate>
    29 
    30 @property (strong, nonatomic) UIWindow *window;
    31 
    32 @end
    33 
     26#import <MobileMiniBrowser/AppDelegate.h>
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/TabViewController.m

    r205293 r205295  
    2424 */
    2525
     26#import "config.h"
    2627#import "TabViewController.h"
    2728
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m

    r205293 r205295  
    2424 */
    2525
     26#import "config.h"
    2627#import "WebViewController.h"
    2728
     
    3233#import <WebKit/WKWebViewConfiguration.h>
    3334
     35@implementation NSURL (BundleURLMethods)
     36+ (NSURL *)__bundleURLForFileURL:(NSURL *)url bundle:(NSBundle *)bundle
     37{
     38    if (![url.scheme isEqualToString:@"file"])
     39        return nil;
     40    NSString *resourcePath = [bundle.resourcePath stringByAppendingString:@"/"];
     41    if (![url.path hasPrefix:resourcePath])
     42        return nil;
     43    NSURLComponents *bundleComponents = [[NSURLComponents alloc] init];
     44    bundleComponents.scheme = @"bundle";
     45    bundleComponents.path = [url.path substringFromIndex:resourcePath.length];
     46    return [bundleComponents.URL copy];
     47}
     48
     49+ (NSURL *)__fileURLForBundleURL:(NSURL *)url bundle:(NSBundle *)bundle
     50{
     51    if (![url.scheme isEqualToString:@"bundle"])
     52        return nil;
     53    return [bundle.resourceURL URLByAppendingPathComponent:url.path];
     54}
     55@end
     56
    3457@interface WebViewController () <WKNavigationDelegate> {
    3558    WKWebView *_currentWebView;
     
    91114    if ([requestedDestination rangeOfString:@"^[\\p{Alphabetic}]+:" options:(NSRegularExpressionSearch | NSCaseInsensitiveSearch | NSAnchoredSearch)].location == NSNotFound)
    92115        requestedDestination = [@"http://" stringByAppendingString:requestedDestination];
    93     [self.currentWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:requestedDestination]]];
     116    NSURL* requestedURL = [NSURL URLWithString:requestedDestination];
     117    if ([requestedURL.scheme isEqualToString:@"bundle"]) {
     118        NSBundle *frameworkBundle = [NSBundle bundleForClass:[WebViewController class]];
     119        requestedURL = [NSURL __fileURLForBundleURL:requestedURL bundle:frameworkBundle];
     120        [self.currentWebView loadFileURL:requestedURL allowingReadAccessToURL:frameworkBundle.resourceURL];
     121    }
     122    [self.currentWebView loadRequest:[NSURLRequest requestWithURL:requestedURL]];
    94123}
    95124
    96125- (IBAction)showTabs:(id)sender
    97126{
    98     [self presentViewController:self.tabViewController animated:YES completion:^{ }];
     127    [self presentViewController:self.tabViewController animated:YES completion:nil];
    99128    self.tabViewController.popoverPresentationController.barButtonItem = self.tabButton;
    100129}
     
    187216        [self.progressView setProgress:value animated:YES];
    188217    } else if (context == URLContext) {
    189         id newURLValue = [change valueForKey:NSKeyValueChangeNewKey];
    190         if ([newURLValue isKindOfClass:[NSURL class]])
     218        NSURL *newURLValue = [change valueForKey:NSKeyValueChangeNewKey];
     219        if ([newURLValue isKindOfClass:[NSURL class]]) {
     220            if ([newURLValue.scheme isEqualToString:@"file"])
     221                newURLValue = [NSURL __bundleURLForFileURL:newURLValue bundle:[NSBundle bundleForClass:[WebViewController class]]];
    191222            self.urlField.text = [newURLValue absoluteString];
    192         else if ([newURLValue isKindOfClass:[NSNull class]])
     223        } else if ([newURLValue isKindOfClass:[NSNull class]])
    193224            self.urlField.text = @"";
    194225    } else if (context == TitleContext)
  • trunk/Tools/MobileMiniBrowser/MobileMiniBrowserUITests/MobileMiniBrowserUITests.m

    r205057 r205295  
    6161    if (clearButton.exists)
    6262        [clearButton tap];
    63     [urlField typeText:@"http://test-safari.apple.com/"];
     63    [urlField typeText:@"bundle:/looping.html"];
    6464    [app.buttons[@"Go To URL"] tap];
    65 
    66     XCUIElement *captions = app.links[@"Captions"];
    67     [self expectationForPredicate:exists evaluatedWithObject:captions handler:nil];
    68     [self waitForExpectationsWithTimeout:5.0 handler:nil];
    69     [captions tap];
    70 
    71     XCUIElement *viewInPage = app.links[@"Video in page"];
    72     [self expectationForPredicate:exists evaluatedWithObject:viewInPage handler:nil];
    73     [self waitForExpectationsWithTimeout:5.0 handler:nil];
    74     [viewInPage tap];
    7565
    7666    XCUIElement *startPlayback = app.buttons[@"Start Playback"];
Note: See TracChangeset for help on using the changeset viewer.