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

Side by Side Diff: Source/core/loader/ThreadableLoader.h

Issue 1262593004: Prevent ThreadableLoaderClient methods from being called after failure notification (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Don't clear the resource in didFinishLoading Created 5 years, 4 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
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 template<> struct CrossThreadCopierBase<false, false, false, ThreadableLoade rOptions> { 108 template<> struct CrossThreadCopierBase<false, false, false, ThreadableLoade rOptions> {
109 typedef CrossThreadThreadableLoaderOptionsData Type; 109 typedef CrossThreadThreadableLoaderOptionsData Type;
110 static Type copy(const ThreadableLoaderOptions& options) 110 static Type copy(const ThreadableLoaderOptions& options)
111 { 111 {
112 return CrossThreadThreadableLoaderOptionsData(options); 112 return CrossThreadThreadableLoaderOptionsData(options);
113 } 113 }
114 }; 114 };
115 115
116 // Useful for doing loader operations from any thread (not threadsafe, 116 // Useful for doing loader operations from any thread (not threadsafe,
117 // just able to run on threads other than the main thread). 117 // just able to run on threads other than the main thread).
118 //
119 // Arguments common to both loadResourceSynchronously() and create():
120 //
121 // - ThreadableLoaderOptions argument configures this ThreadableLoader's
122 // behavior.
123 //
124 // - ResourceLoaderOptions argument will be passed to the FetchRequest
125 // that this ThreadableLoader creates. It can be altered e.g. when
126 // redirect happens.
118 class CORE_EXPORT ThreadableLoader : public RefCounted<ThreadableLoader> { 127 class CORE_EXPORT ThreadableLoader : public RefCounted<ThreadableLoader> {
119 WTF_MAKE_NONCOPYABLE(ThreadableLoader); 128 WTF_MAKE_NONCOPYABLE(ThreadableLoader);
120 public: 129 public:
121 // ThreadableLoaderOptions argument configures this ThreadableLoader's
122 // behavior.
123 //
124 // ResourceLoaderOptions argument will be passed to the FetchRequest
125 // that this ThreadableLoader creates. It can be altered e.g. when
126 // redirect happens.
127 static void loadResourceSynchronously(ExecutionContext&, const ResourceR equest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&, const Resource LoaderOptions&); 130 static void loadResourceSynchronously(ExecutionContext&, const ResourceR equest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&, const Resource LoaderOptions&);
131 // The following ThreadableLoaderClient methods may destroy the
132 // ThreadableLoader instance in them.
133 // - didFinishLoading()
134 // - didFail()
135 // - didFailAccessControlCheck()
136 // - didFailRedirectCheck()
128 static PassRefPtr<ThreadableLoader> create(ExecutionContext&, Threadable LoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&, const Res ourceLoaderOptions&); 137 static PassRefPtr<ThreadableLoader> create(ExecutionContext&, Threadable LoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&, const Res ourceLoaderOptions&);
129 138
130 // A ThreadableLoader may have a timeout specified. It is possible, in s ome cases, for 139 // A ThreadableLoader may have a timeout specified. It is possible, in s ome cases, for
131 // the timeout to be overridden after the request is sent (for example, XMLHttpRequests 140 // the timeout to be overridden after the request is sent (for example, XMLHttpRequests
132 // may override their timeout setting after sending). 141 // may override their timeout setting after sending).
133 // 142 //
134 // Set a new timeout relative to the time the request started, in millis econds. 143 // Set a new timeout relative to the time the request started, in millis econds.
135 virtual void overrideTimeout(unsigned long timeoutMilliseconds) = 0; 144 virtual void overrideTimeout(unsigned long timeoutMilliseconds) = 0;
136 145
137 virtual void cancel() = 0; 146 virtual void cancel() = 0;
138 147
139 virtual ~ThreadableLoader() { } 148 virtual ~ThreadableLoader() { }
140 149
141 protected: 150 protected:
142 ThreadableLoader() { } 151 ThreadableLoader() { }
143 }; 152 };
144 153
145 } // namespace blink 154 } // namespace blink
146 155
147 #endif // ThreadableLoader_h 156 #endif // ThreadableLoader_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698