| Index: third_party/WebKit/Source/core/dom/ClassicPendingScript.h
|
| diff --git a/third_party/WebKit/Source/core/dom/ClassicPendingScript.h b/third_party/WebKit/Source/core/dom/ClassicPendingScript.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..153eeb6130338db446e6f55d96c4572ce6b2cca9
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/core/dom/ClassicPendingScript.h
|
| @@ -0,0 +1,88 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef ClassicPendingScript_h
|
| +#define ClassicPendingScript_h
|
| +
|
| +#include "core/dom/ClassicScript.h"
|
| +#include "core/dom/PendingScript.h"
|
| +#include "core/loader/resource/ScriptResource.h"
|
| +#include "platform/MemoryCoordinator.h"
|
| +#include "platform/loader/fetch/ResourceOwner.h"
|
| +
|
| +namespace blink {
|
| +
|
| +// PendingScript for a classic script
|
| +// https://html.spec.whatwg.org/#classic-script.
|
| +//
|
| +// TODO(kochi): The comment below is from pre-oilpan age and may not be correct
|
| +// now.
|
| +// A RefPtr alone does not prevent the underlying Resource from purging its data
|
| +// buffer. This class holds a dummy client open for its lifetime in order to
|
| +// guarantee that the data buffer will not be purged.
|
| +class CORE_EXPORT ClassicPendingScript final
|
| + : public PendingScript,
|
| + public ResourceOwner<ScriptResource>,
|
| + public MemoryCoordinatorClient {
|
| + USING_GARBAGE_COLLECTED_MIXIN(ClassicPendingScript);
|
| +
|
| + public:
|
| + // For script from an external file.
|
| + static ClassicPendingScript* Create(ScriptElementBase*, ScriptResource*);
|
| + // For inline script.
|
| + static ClassicPendingScript* Create(ScriptElementBase*, const TextPosition&);
|
| +
|
| + static ClassicPendingScript* CreateForTesting(ScriptResource*);
|
| +
|
| + ~ClassicPendingScript() override;
|
| +
|
| + void SetStreamer(ScriptStreamer*);
|
| + void StreamingFinished();
|
| +
|
| + DECLARE_TRACE();
|
| +
|
| + blink::ScriptType GetScriptType() const override {
|
| + return blink::ScriptType::kClassic;
|
| + }
|
| +
|
| + ClassicScript* GetSource(const KURL& document_url,
|
| + bool& error_occurred) const override;
|
| + bool IsReady() const override;
|
| + bool IsExternal() const override { return GetResource(); }
|
| + bool ErrorOccurred() const override;
|
| + bool WasCanceled() const override;
|
| + void StartStreamingIfPossible(Document*, ScriptStreamer::Type) override;
|
| + KURL UrlForClassicScript() const override;
|
| + void RemoveFromMemoryCache() override;
|
| + void DisposeInternal() override;
|
| +
|
| + private:
|
| + ClassicPendingScript(ScriptElementBase*,
|
| + ScriptResource*,
|
| + const TextPosition&,
|
| + bool is_for_testing = false);
|
| + ClassicPendingScript() = delete;
|
| +
|
| + void CheckState() const override;
|
| +
|
| + // ScriptResourceClient
|
| + void NotifyFinished(Resource*) override;
|
| + String DebugName() const override { return "PendingScript"; }
|
| + void NotifyAppendData(ScriptResource*) override;
|
| +
|
| + // MemoryCoordinatorClient
|
| + void OnPurgeMemory() override;
|
| +
|
| + bool integrity_failure_;
|
| +
|
| + Member<ScriptStreamer> streamer_;
|
| +
|
| + // This flag is used to skip non-null checks of |m_element| in unit
|
| + // tests, because |m_element| can be null in unit tests.
|
| + const bool is_for_testing_;
|
| +};
|
| +
|
| +} // namespace blink
|
| +
|
| +#endif // PendingScript_h
|
|
|