提交 e2b41493 编写于 作者: A Alhaad Gokhale

Go back to master.

上级 c9a71499
......@@ -130,6 +130,8 @@ void DocumentView::OnEmbed(
services_provided_by_embedder_ = services_provided_by_embedder.Pass();
Load(response_.Pass());
UpdateRootSizeAndViewportMetrics(root_->bounds());
root_->AddObserver(this);
}
......@@ -141,7 +143,6 @@ void DocumentView::LoadFromSnapshotStream(
String name, mojo::ScopedDataPipeConsumerHandle snapshot) {
if (sky_view_) {
sky_view_->RunFromSnapshot(name, snapshot.Pass());
UpdateRootSizeAndViewportMetrics(root_->bounds());
}
}
......@@ -153,6 +154,7 @@ void DocumentView::Load(mojo::URLResponsePtr response) {
layer_host_->SetRootLayer(root_layer_);
String name = String::fromUTF8(response->url);
sky_view_->CreateView(name);
if (name.endsWith(".skyx")) {
AssetUnpackerJob* unpacker = new AssetUnpackerJob(
mojo::GetProxy(&root_bundle_),
......@@ -167,7 +169,6 @@ void DocumentView::Load(mojo::URLResponsePtr response) {
network_service_.get(),
CreatePrefetchedLibraryIfNeeded(name, response.Pass())));
sky_view_->RunFromLibrary(name, library_provider_.get());
UpdateRootSizeAndViewportMetrics(root_->bounds());
}
scoped_ptr<Rasterizer> DocumentView::CreateRasterizer() {
......
......@@ -36,15 +36,33 @@ void SkyView::SetDisplayMetrics(const SkyDisplayMetrics& metrics) {
view_->setDisplayMetrics(display_metrics_);
}
void SkyView::CreateView(const String& name) {
DCHECK(!view_);
DCHECK(!dart_controller_);
view_ = View::create(
base::Bind(&SkyView::ScheduleFrame, weak_factory_.GetWeakPtr()));
view_->setDisplayMetrics(display_metrics_);
dart_controller_ = adoptPtr(new DartController);
dart_controller_->CreateIsolateFor(adoptPtr(new DOMDartState(name)));
dart_controller_->InstallView(view_.get());
Dart_Isolate isolate = dart_controller_->dart_state()->isolate();
DartIsolateScope scope(isolate);
DartApiScope api_scope;
client_->DidCreateIsolate(isolate);
}
void SkyView::RunFromLibrary(const WebString& name,
DartLibraryProvider* library_provider) {
CreateView(name);
DCHECK(view_);
dart_controller_->RunFromLibrary(name, library_provider);
}
void SkyView::RunFromSnapshot(const WebString& name,
mojo::ScopedDataPipeConsumerHandle snapshot) {
CreateView(name);
DCHECK(view_);
dart_controller_->RunFromSnapshot(snapshot.Pass());
}
......@@ -81,24 +99,6 @@ void SkyView::HandleInputEvent(const WebInputEvent& inputEvent) {
}
void SkyView::CreateView(const String& name) {
DCHECK(!view_);
DCHECK(!dart_controller_);
view_ = View::create(
base::Bind(&SkyView::ScheduleFrame, weak_factory_.GetWeakPtr()));
view_->setDisplayMetrics(display_metrics_);
dart_controller_ = adoptPtr(new DartController);
dart_controller_->CreateIsolateFor(adoptPtr(new DOMDartState(name)));
dart_controller_->InstallView(view_.get());
Dart_Isolate isolate = dart_controller_->dart_state()->isolate();
DartIsolateScope scope(isolate);
DartApiScope api_scope;
client_->DidCreateIsolate(isolate);
}
void SkyView::ScheduleFrame() {
client_->ScheduleFrame();
}
......
......@@ -35,6 +35,8 @@ class SkyView {
void SetDisplayMetrics(const SkyDisplayMetrics& metrics);
void BeginFrame(base::TimeTicks frame_time);
void CreateView(const String& name);
void RunFromLibrary(const WebString& name,
DartLibraryProvider* library_provider);
void RunFromSnapshot(const WebString& name,
......@@ -49,7 +51,6 @@ class SkyView {
private:
explicit SkyView(SkyViewClient* client);
void CreateView(const String& name);
void ScheduleFrame();
SkyViewClient* client_;
......
......@@ -166,6 +166,7 @@ void Engine::OnInputEvent(InputEventPtr event) {
void Engine::RunFromLibrary(const std::string& name) {
sky_view_ = blink::SkyView::Create(this);
sky_view_->CreateView(blink::WebString::fromUTF8(name));
sky_view_->RunFromLibrary(blink::WebString::fromUTF8(name),
dart_library_provider_.get());
sky_view_->SetDisplayMetrics(display_metrics_);
......@@ -175,6 +176,7 @@ void Engine::RunFromSnapshotStream(
const std::string& name,
mojo::ScopedDataPipeConsumerHandle snapshot) {
sky_view_ = blink::SkyView::Create(this);
sky_view_->CreateView(blink::WebString::fromUTF8(name));
sky_view_->RunFromSnapshot(blink::WebString::fromUTF8(name), snapshot.Pass());
sky_view_->SetDisplayMetrics(display_metrics_);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册