Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit c805908

Browse files
committed
Merge pull request #913 from alhaad/fix_sky_viewer_retry
Fix sky_viewer for skyx files.
2 parents c9a7149 + e2b4149 commit c805908

File tree

4 files changed

+27
-23
lines changed

4 files changed

+27
-23
lines changed

services/sky/document_view.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ void DocumentView::OnEmbed(
130130
services_provided_by_embedder_ = services_provided_by_embedder.Pass();
131131

132132
Load(response_.Pass());
133+
134+
UpdateRootSizeAndViewportMetrics(root_->bounds());
133135
root_->AddObserver(this);
134136
}
135137

@@ -141,7 +143,6 @@ void DocumentView::LoadFromSnapshotStream(
141143
String name, mojo::ScopedDataPipeConsumerHandle snapshot) {
142144
if (sky_view_) {
143145
sky_view_->RunFromSnapshot(name, snapshot.Pass());
144-
UpdateRootSizeAndViewportMetrics(root_->bounds());
145146
}
146147
}
147148

@@ -153,6 +154,7 @@ void DocumentView::Load(mojo::URLResponsePtr response) {
153154
layer_host_->SetRootLayer(root_layer_);
154155

155156
String name = String::fromUTF8(response->url);
157+
sky_view_->CreateView(name);
156158
if (name.endsWith(".skyx")) {
157159
AssetUnpackerJob* unpacker = new AssetUnpackerJob(
158160
mojo::GetProxy(&root_bundle_),
@@ -167,7 +169,6 @@ void DocumentView::Load(mojo::URLResponsePtr response) {
167169
network_service_.get(),
168170
CreatePrefetchedLibraryIfNeeded(name, response.Pass())));
169171
sky_view_->RunFromLibrary(name, library_provider_.get());
170-
UpdateRootSizeAndViewportMetrics(root_->bounds());
171172
}
172173

173174
scoped_ptr<Rasterizer> DocumentView::CreateRasterizer() {

sky/engine/public/sky/sky_view.cc

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,33 @@ void SkyView::SetDisplayMetrics(const SkyDisplayMetrics& metrics) {
3636
view_->setDisplayMetrics(display_metrics_);
3737
}
3838

39+
void SkyView::CreateView(const String& name) {
40+
DCHECK(!view_);
41+
DCHECK(!dart_controller_);
42+
43+
view_ = View::create(
44+
base::Bind(&SkyView::ScheduleFrame, weak_factory_.GetWeakPtr()));
45+
view_->setDisplayMetrics(display_metrics_);
46+
47+
dart_controller_ = adoptPtr(new DartController);
48+
dart_controller_->CreateIsolateFor(adoptPtr(new DOMDartState(name)));
49+
dart_controller_->InstallView(view_.get());
50+
51+
Dart_Isolate isolate = dart_controller_->dart_state()->isolate();
52+
DartIsolateScope scope(isolate);
53+
DartApiScope api_scope;
54+
client_->DidCreateIsolate(isolate);
55+
}
56+
3957
void SkyView::RunFromLibrary(const WebString& name,
4058
DartLibraryProvider* library_provider) {
41-
CreateView(name);
59+
DCHECK(view_);
4260
dart_controller_->RunFromLibrary(name, library_provider);
4361
}
4462

4563
void SkyView::RunFromSnapshot(const WebString& name,
4664
mojo::ScopedDataPipeConsumerHandle snapshot) {
47-
CreateView(name);
65+
DCHECK(view_);
4866
dart_controller_->RunFromSnapshot(snapshot.Pass());
4967
}
5068

@@ -81,24 +99,6 @@ void SkyView::HandleInputEvent(const WebInputEvent& inputEvent) {
8199

82100
}
83101

84-
void SkyView::CreateView(const String& name) {
85-
DCHECK(!view_);
86-
DCHECK(!dart_controller_);
87-
88-
view_ = View::create(
89-
base::Bind(&SkyView::ScheduleFrame, weak_factory_.GetWeakPtr()));
90-
view_->setDisplayMetrics(display_metrics_);
91-
92-
dart_controller_ = adoptPtr(new DartController);
93-
dart_controller_->CreateIsolateFor(adoptPtr(new DOMDartState(name)));
94-
dart_controller_->InstallView(view_.get());
95-
96-
Dart_Isolate isolate = dart_controller_->dart_state()->isolate();
97-
DartIsolateScope scope(isolate);
98-
DartApiScope api_scope;
99-
client_->DidCreateIsolate(isolate);
100-
}
101-
102102
void SkyView::ScheduleFrame() {
103103
client_->ScheduleFrame();
104104
}

sky/engine/public/sky/sky_view.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ class SkyView {
3535
void SetDisplayMetrics(const SkyDisplayMetrics& metrics);
3636
void BeginFrame(base::TimeTicks frame_time);
3737

38+
void CreateView(const String& name);
39+
3840
void RunFromLibrary(const WebString& name,
3941
DartLibraryProvider* library_provider);
4042
void RunFromSnapshot(const WebString& name,
@@ -49,7 +51,6 @@ class SkyView {
4951
private:
5052
explicit SkyView(SkyViewClient* client);
5153

52-
void CreateView(const String& name);
5354
void ScheduleFrame();
5455

5556
SkyViewClient* client_;

sky/shell/ui/engine.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ void Engine::OnInputEvent(InputEventPtr event) {
166166

167167
void Engine::RunFromLibrary(const std::string& name) {
168168
sky_view_ = blink::SkyView::Create(this);
169+
sky_view_->CreateView(blink::WebString::fromUTF8(name));
169170
sky_view_->RunFromLibrary(blink::WebString::fromUTF8(name),
170171
dart_library_provider_.get());
171172
sky_view_->SetDisplayMetrics(display_metrics_);
@@ -175,6 +176,7 @@ void Engine::RunFromSnapshotStream(
175176
const std::string& name,
176177
mojo::ScopedDataPipeConsumerHandle snapshot) {
177178
sky_view_ = blink::SkyView::Create(this);
179+
sky_view_->CreateView(blink::WebString::fromUTF8(name));
178180
sky_view_->RunFromSnapshot(blink::WebString::fromUTF8(name), snapshot.Pass());
179181
sky_view_->SetDisplayMetrics(display_metrics_);
180182
}

0 commit comments

Comments
 (0)