1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file. 4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UTILS_H_ 6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UTILS_H_ 7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/macros.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "content/common/content_export.h" 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/common/service_worker/service_worker_status_code.h" 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/public/common/resource_type.h" 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "url/gurl.h" 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace content { 15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class ServiceWorkerUtils { 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public: 18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static bool IsMainResourceType(ResourceType type) { 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return IsResourceTypeFrame(type) || type == RESOURCE_TYPE_SHARED_WORKER; 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // A helper for creating a do-nothing status callback. 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static void NoOpStatusCallback(ServiceWorkerStatusCode status) {} 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns true if |scope| matches |url|. 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) CONTENT_EXPORT static bool ScopeMatches(const GURL& scope, const GURL& url); 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}; 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class CONTENT_EXPORT LongestScopeMatcher { 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public: 31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) explicit LongestScopeMatcher(const GURL& url) : url_(url) {} 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual ~LongestScopeMatcher() {} 33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns true if |scope| matches |url_| longer than |match_|. 35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool MatchLongest(const GURL& scope); 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) private: 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const GURL url_; 39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) GURL match_; 40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(LongestScopeMatcher); 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}; 43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace content 45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UTILS_H_ 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)