Changeset 249648 in webkit


Ignore:
Timestamp:
Sep 9, 2019 10:18:25 AM (5 years ago)
Author:
Chris Dumez
Message:

Stop using testRunner.setPrivateBrowsingEnabled_DEPRECATED() in http/tests/workers/service/basic-register.html
https://bugs.webkit.org/show_bug.cgi?id=201590

Reviewed by Youenn Fablet.

Tools:

Add a new API test to check that if the default session registers a service worker, the
hasServiceWorkerRegistration flag is still false in an ephemeral session.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

LayoutTests:

Split the layout test in 2 to test both the default and the ephemeral session without relying on the
testRunner.setPrivateBrowsingEnabled_DEPRECATED() hack.

  • http/tests/workers/service/basic-register-expected.txt:
  • http/tests/workers/service/basic-register-private-expected.txt: Copied from LayoutTests/http/tests/workers/service/basic-register-expected.txt.
  • http/tests/workers/service/basic-register-private.html: Added.
  • http/tests/workers/service/resources/basic-register.js:

(async.test):

Location:
trunk
Files:
1 added
5 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r249645 r249648  
     12019-09-09  Chris Dumez  <cdumez@apple.com>
     2
     3        Stop using testRunner.setPrivateBrowsingEnabled_DEPRECATED() in http/tests/workers/service/basic-register.html
     4        https://bugs.webkit.org/show_bug.cgi?id=201590
     5
     6        Reviewed by Youenn Fablet.
     7
     8        Split the layout test in 2 to test both the default and the ephemeral session without relying on the
     9        testRunner.setPrivateBrowsingEnabled_DEPRECATED() hack.
     10
     11        * http/tests/workers/service/basic-register-expected.txt:
     12        * http/tests/workers/service/basic-register-private-expected.txt: Copied from LayoutTests/http/tests/workers/service/basic-register-expected.txt.
     13        * http/tests/workers/service/basic-register-private.html: Added.
     14        * http/tests/workers/service/resources/basic-register.js:
     15        (async.test):
     16
    1172019-09-09  Rob Buis  <rbuis@igalia.com>
    218
  • trunk/LayoutTests/http/tests/workers/service/basic-register-expected.txt

    r225975 r249648  
    11PASS: No service worker is initially registered for this origin
    2 PASS: No service worker is initially registered for this origin in private session
    32Registered!
    43PASS: registration object's scope is valid
    54PASS: registration object's updateViaCache is valid
    65PASS: A service worker is now registered for this origin
    7 PASS: No service worker is registered for this origin in private session
    86PASS: registering a script which does not exist rejected the promise
    97
  • trunk/LayoutTests/http/tests/workers/service/basic-register-private-expected.txt

    r249647 r249648  
    11PASS: No service worker is initially registered for this origin
    2 PASS: No service worker is initially registered for this origin in private session
    32Registered!
    43PASS: registration object's scope is valid
    54PASS: registration object's updateViaCache is valid
    65PASS: A service worker is now registered for this origin
    7 PASS: No service worker is registered for this origin in private session
    86PASS: registering a script which does not exist rejected the promise
    97
  • trunk/LayoutTests/http/tests/workers/service/resources/basic-register.js

    r249542 r249648  
    1111        log("FAIL: A service worker is initially registered for this origin");
    1212
    13     testRunner.setPrivateBrowsingEnabled_DEPRECATED(true);
    14 
    15     if (!await internals.hasServiceWorkerRegistration(self.origin))
    16         log("PASS: No service worker is initially registered for this origin in private session");
    17     else
    18         log("FAIL: A service worker is initially registered for this origin in private session");
    19 
    20     testRunner.setPrivateBrowsingEnabled_DEPRECATED(false);
    2113    try {
    2214        r = await navigator.serviceWorker.register("resources/empty-worker.js", { scope: "/workers/service/resources/test", updateViaCache: "none" })
     
    3729        else
    3830            log("FAIL: No service worker is registered for this origin");
    39 
    40         testRunner.setPrivateBrowsingEnabled_DEPRECATED(true);
    41 
    42         if (!await internals.hasServiceWorkerRegistration("/test"))
    43             log("PASS: No service worker is registered for this origin in private session");
    44         else
    45             log("FAIL: A service worker is registered for this origin in private session");
    46 
    47         testRunner.setPrivateBrowsingEnabled_DEPRECATED(false);
    4831    } catch (e) {
    4932        log("Exception registering: " + e);
  • trunk/Tools/ChangeLog

    r249646 r249648  
     12019-09-09  Chris Dumez  <cdumez@apple.com>
     2
     3        Stop using testRunner.setPrivateBrowsingEnabled_DEPRECATED() in http/tests/workers/service/basic-register.html
     4        https://bugs.webkit.org/show_bug.cgi?id=201590
     5
     6        Reviewed by Youenn Fablet.
     7
     8        Add a new API test to check that if the default session registers a service worker, the
     9        hasServiceWorkerRegistration flag is still false in an ephemeral session.
     10
     11        * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
     12
    1132019-09-09  Jonathan Bedard  <jbedard@apple.com>
    214
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm

    r249626 r249648  
    14311431}
    14321432
     1433static const char* differentSessionsUseDifferentRegistrationsMainBytes = R"SWRESOURCE(
     1434<script>
     1435try {
     1436    navigator.serviceWorker.register("empty-worker.js", { scope : "/test" }).then((registration) => {
     1437        activeWorker = registration.installing;
     1438        activeWorker.addEventListener('statechange', () => {
     1439            if (activeWorker.state === "activated")
     1440                webkit.messageHandlers.sw.postMessage("PASS");
     1441        });
     1442    });
     1443} catch (e) {
     1444    webkit.messageHandlers.sw.postMessage("" + e);
     1445}
     1446</script>
     1447)SWRESOURCE";
     1448
     1449static const char* defaultPageMainBytes = R"SWRESOURCE(
     1450<script>
     1451async function getResult()
     1452{
     1453    var result = await internals.hasServiceWorkerRegistration("/test");
     1454    window.webkit.messageHandlers.sw.postMessage(result ? "PASS" : "FAIL");
     1455}
     1456getResult();
     1457</script>
     1458)SWRESOURCE";
     1459
     1460static const char* privatePageMainBytes = R"SWRESOURCE(
     1461<script>
     1462async function getResult()
     1463{
     1464    var result = await internals.hasServiceWorkerRegistration("/test");
     1465    window.webkit.messageHandlers.sw.postMessage(result ? "FAIL" : "PASS");
     1466}
     1467getResult();
     1468</script>
     1469)SWRESOURCE";
     1470
     1471TEST(ServiceWorkers, DifferentSessionsUseDifferentRegistrations)
     1472{
     1473    [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins];
     1474
     1475    // Start with a clean slate data store
     1476    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {
     1477        done = true;
     1478    }];
     1479    TestWebKitAPI::Util::run(&done);
     1480    done = false;
     1481   
     1482    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
     1483    setConfigurationInjectedBundlePath(configuration.get());
     1484   
     1485    auto messageHandler = adoptNS([[SWMessageHandlerForCacheStorage alloc] init]);
     1486    [[configuration userContentController] addScriptMessageHandler:messageHandler.get() name:@"sw"];
     1487   
     1488    auto handler = adoptNS([[SWSchemes alloc] init]);
     1489    handler->resources.set("sw://host/main.html", ResourceInfo { @"text/html", differentSessionsUseDifferentRegistrationsMainBytes });
     1490    handler->resources.set("sw://host/main2.html", ResourceInfo { @"text/html", defaultPageMainBytes });
     1491    handler->resources.set("sw://host/empty-worker.js", ResourceInfo { @"application/javascript", "" });
     1492    handler->resources.set("sw://host/private.html", ResourceInfo { @"text/html", privatePageMainBytes });
     1493    [configuration setURLSchemeHandler:handler.get() forURLScheme:@"SW"];
     1494
     1495    auto defaultWebView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     1496    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main.html"]];
     1497    [defaultWebView synchronouslyLoadRequest:request];
     1498   
     1499    TestWebKitAPI::Util::run(&done);
     1500    done = false;
     1501   
     1502    request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/main2.html"]];
     1503    [defaultWebView synchronouslyLoadRequest:request];
     1504   
     1505    TestWebKitAPI::Util::run(&done);
     1506    done = false;
     1507   
     1508    configuration.get().websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
     1509    auto ephemeralWebView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     1510    request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"sw://host/private.html"]];
     1511    [ephemeralWebView synchronouslyLoadRequest:request];
     1512
     1513    TestWebKitAPI::Util::run(&done);
     1514    done = false;
     1515}
     1516
    14331517static const char* regularPageGrabbingCacheStorageDirectory = R"SWRESOURCE(
    14341518<script>
Note: See TracChangeset for help on using the changeset viewer.