blob: cc525fbfe0e297a296876a6ed8f4a29e474dcaca [file] [log] [blame]
// Copyright 2014 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.
#include "sky/engine/config.h"
#include "sky/engine/core/app/AbstractModule.h"
#include "sky/engine/core/app/Module.h"
namespace blink {
AbstractModule::AbstractModule(ExecutionContext* context,
PassRefPtr<Document> document,
const String& url)
: ContextLifecycleObserver(context),
document_(document),
url_(url) {
document_->setModule(this);
}
AbstractModule::~AbstractModule() {
document_->setModule(nullptr);
}
void AbstractModule::AddLibrary(RefPtr<DartValue> library,
TextPosition position) {
libraries_.append(LibraryEntry(library, position));
}
String AbstractModule::UrlForLibraryAt(TextPosition position) {
// TODO(eseidel): This could produce invalid urls?
// TODO(abarth): Mangle these library names to they're not predictable.
// Otherwise you could 'import url.sky' in dart and it could magically work!
int line = position.m_line.zeroBasedInt();
int column = position.m_column.zeroBasedInt();
return url() + String::format("#l%d,c%d", line, column);
}
ExecutionContext* AbstractModule::executionContext() const {
return ContextLifecycleObserver::executionContext();
}
} // namespace blink