Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(455)

Side by Side Diff: Source/core/loader/ManifestLoader.cpp

Issue 295063002: [NotLanded] Implement the fetching algorithm of the Web Manifest. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "ManifestLoader.h"
7
8 #include "core/dom/Document.h"
9 #include "core/fetch/FetchRequest.h"
10 #include "core/fetch/ResourceFetcher.h"
11 #include "core/html/HTMLLinkElement.h"
12 #include "platform/network/ResourceRequest.h"
13 #include "public/platform/WebManifest.h"
14 #include "public/platform/WebManifestRequest.h"
15
16 using namespace WebCore;
17
18 void ManifestLoader::loadManifest(
19 blink::WebManifestRequest* request,
20 Document* document)
21 {
22 // The object will self-destruct when done.
23 ManifestLoader* manifestLoader = new ManifestLoader(request);
Nate Chapin 2014/06/03 18:32:42 Should this be an OwnPtr<> that gets leaked if we
mlamouri (slow - plz ping) 2014/06/03 20:53:10 I did something slightly different with OwnPtr<>(t
24 manifestLoader->startLoading(document);
25 }
26
27 ManifestLoader::ManifestLoader(blink::WebManifestRequest* request)
28 : m_request(request)
29 {
30 ASSERT(m_request);
31 }
32
33 ManifestLoader::~ManifestLoader()
34 {
35 }
36
37 void ManifestLoader::startLoading(Document* document)
38 {
39 ASSERT(document);
40
41 HTMLLinkElement* linkElement = document->linkManifest();
42 if (!linkElement) {
43 m_request->requestFailed(blink::WebManifestRequest::NoLinkManifest);
44 delete this;
45 return;
46 }
47
48 KURL url(document->baseURL(), linkElement->href(), document->encoding());
49 FetchRequest request = FetchRequest(ResourceRequest(url), FetchInitiatorInfo ());
50 AtomicString crossOriginMode = linkElement->fastGetAttribute(HTMLNames::cros soriginAttr);
51 if (!crossOriginMode.isNull()) {
Nate Chapin 2014/06/03 18:32:42 Nit: { } unnecessary.
mlamouri (slow - plz ping) 2014/06/03 20:53:10 Done.
52 request.setCrossOriginAccessControl(document->securityOrigin(), crossOri ginMode);
53 }
54
55 ResourcePtr<Resource> resource = document->fetcher()->fetchManifest(request) ;
56 if (!resource) {
57 m_request->requestFailed(blink::WebManifestRequest::NetworkError);
58 delete this;
59 return;
60 }
61
62 setResource(resource);
63 }
64
65 void ManifestLoader::notifyFinished(Resource* resource)
66 {
67 ASSERT(resource == this->resource());
68
69 if (resource->loadFailedOrCanceled() || resource->errorOccurred()) {
70 m_request->requestFailed(blink::WebManifestRequest::NetworkError);
71 } else {
72 // FIXME: parse the received data.
73 blink::WebManifest manifest;
74 m_request->requestSucceeded(manifest);
75 }
76
77 clearResource();
78 delete this;
79 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698