CachedScriptSourceProvider.h [plain text]
#ifndef CachedScriptSourceProvider_h
#define CachedScriptSourceProvider_h
#include "CachedResourceClient.h"
#include "CachedScript.h"
#include <kjs/SourceCode.h>
#include <kjs/SourceProvider.h>
namespace WebCore {
class CachedScriptSourceProvider : public KJS::SourceProvider, public CachedResourceClient {
public:
static PassRefPtr<CachedScriptSourceProvider> create(CachedScript* cachedScript) { return new CachedScriptSourceProvider(cachedScript); }
virtual ~CachedScriptSourceProvider()
{
m_cachedScript->deref(this);
}
KJS::UString getRange(int start, int end) const { return KJS::UString(reinterpret_cast<const KJS::UChar*>(m_cachedScript->script().characters()) + start, end - start); }
const KJS::UChar* data() const { return reinterpret_cast<const KJS::UChar*>(m_cachedScript->script().characters()); }
int length() const { return m_cachedScript->script().length(); }
private:
CachedScriptSourceProvider(CachedScript* cachedScript)
: SourceProvider(cachedScript->url())
, m_cachedScript(cachedScript)
{
m_cachedScript->ref(this);
}
CachedScript* m_cachedScript;
};
inline KJS::SourceCode makeSource(CachedScript* cachedScript)
{
return KJS::SourceCode(CachedScriptSourceProvider::create(cachedScript));
}
}
#endif // CachedScriptSourceProvider_h