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

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, 7 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 ManifestLoader* leakedManifestLoader ALLOW_UNUSED = new ManifestLoader(reque st);
dcheng 2014/05/20 22:40:51 Is the ALLOW_UNUSED attribute required? It's proba
mlamouri (slow - plz ping) 2014/05/21 09:51:12 Done.
23 leakedManifestLoader->startLoading(document);
24 }
25
26 ManifestLoader::ManifestLoader(blink::WebManifestRequest* request)
27 : m_request(request)
28 {
29 ASSERT(m_request);
30 }
31
32 ManifestLoader::~ManifestLoader()
33 {
34 }
35
36 void ManifestLoader::startLoading(Document* document)
37 {
38 ASSERT(document);
39
40 HTMLLinkElement* linkElement = document->linkManifest();
41 if (!linkElement) {
42 m_request->requestFailed(blink::WebManifestRequest::NoLinkManifest);
43 delete this;
44 return;
45 }
46
47 KURL url(document->baseURL(), linkElement->href(), document->encoding());
48 FetchRequest request = FetchRequest(ResourceRequest(url), FetchInitiatorInfo ());
49 AtomicString crossOriginMode = linkElement->fastGetAttribute(HTMLNames::cros soriginAttr);
50 if (!crossOriginMode.isNull()) {
51 request.setCrossOriginAccessControl(document->securityOrigin(), crossOri ginMode);
52 }
53
54 ResourcePtr<Resource> resource = document->fetcher()->fetchManifest(request) ;
55 if (!resource) {
56 m_request->requestFailed(blink::WebManifestRequest::NetworkError);
57 delete this;
58 return;
59 }
60
61 setResource(resource);
62 }
63
64 void ManifestLoader::notifyFinished(Resource* resource)
65 {
66 ASSERT(resource == this->resource());
67
68 if (resource->loadFailedOrCanceled() || resource->errorOccurred()) {
69 m_request->requestFailed(blink::WebManifestRequest::NetworkError);
70 } else {
71 // FIXME: parse the received data.
72 blink::WebManifest manifest;
73 m_request->requestSucceeded(manifest);
74 }
75
76 clearResource();
77 delete this;
78 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698