service_worker_utils.h revision 116680a4aac90f2aa7413d9095a592090648e557
1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UTILS_H_ 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UTILS_H_ 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "content/common/content_export.h" 9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "content/common/service_worker/service_worker_status_code.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/common/resource_type.h" 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class GURL; 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace content { 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class ServiceWorkerUtils { 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static bool IsMainResourceType(ResourceType::Type type) { 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return ResourceType::IsFrame(type) || 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ResourceType::IsSharedWorker(type); 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static bool IsServiceWorkerResourceType(ResourceType::Type type) { 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return ResourceType::IsServiceWorker(type); 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // A helper for creating a do-nothing status callback. 28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static void NoOpStatusCallback(ServiceWorkerStatusCode status) {} 29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Returns true if |scope| matches |url|. 31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch CONTENT_EXPORT static bool ScopeMatches(const GURL& scope, const GURL& url); 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class CONTENT_EXPORT LongestScopeMatcher { 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public: 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) explicit LongestScopeMatcher(const GURL& url) : url_(url) {} 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual ~LongestScopeMatcher() {} 3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Returns true if |scope| matches |url_| longer than |match_|. 4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) bool MatchLongest(const GURL& scope); 4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private: 4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const GURL url_; 4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) GURL match_; 4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(LongestScopeMatcher); 4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}; 4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace content 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UTILS_H_ 52