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)