Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Side by Side Diff: sky/engine/core/script/dom_dart_state.cc

Issue 1175053002: Fix shutdown crash in Sky (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: more idiot-proof Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sky/engine/config.h" 5 #include "sky/engine/config.h"
6 #include "sky/engine/core/script/dom_dart_state.h" 6 #include "sky/engine/core/script/dom_dart_state.h"
7 7
8 #include "sky/engine/core/dom/Document.h" 8 #include "sky/engine/core/dom/Document.h"
9 #include "sky/engine/core/script/dart_loader.h" 9 #include "sky/engine/core/script/dart_loader.h"
10 #include "sky/engine/tonic/dart_builtin.h" 10 #include "sky/engine/tonic/dart_builtin.h"
11 11
12 namespace blink { 12 namespace blink {
13 13
14 DOMDartState::DOMDartState(Document* document, const KURL& url) 14 DOMDartState::DOMDartState(Document* document, const KURL& url)
15 : document_(document), url_(url), loader_(adoptPtr(new DartLoader(this))) { 15 : document_(document), url_(url), loader_(adoptPtr(new DartLoader(this))) {
16 } 16 }
17 17
18 DOMDartState::~DOMDartState() { 18 DOMDartState::~DOMDartState() {
19 // We've already destroyed the isolate. Revoke any weak ptrs held by
20 // DartPersistentValues so they don't try to enter the destroyed isolate to
21 // clean themselves up.
22 weak_factory_.InvalidateWeakPtrs();
19 } 23 }
20 24
21 void DOMDartState::DidSetIsolate() { 25 void DOMDartState::DidSetIsolate() {
22 Scope dart_scope(this); 26 Scope dart_scope(this);
23 x_handle_.Set(this, ToDart("x")); 27 x_handle_.Set(this, ToDart("x"));
24 y_handle_.Set(this, ToDart("y")); 28 y_handle_.Set(this, ToDart("y"));
25 value_handle_.Set(this, ToDart("_value")); 29 value_handle_.Set(this, ToDart("_value"));
26 30
27 Dart_Handle sky_library = DartBuiltin::LookupLibrary("dart:sky"); 31 Dart_Handle sky_library = DartBuiltin::LookupLibrary("dart:sky");
28 color_class_.Set(this, Dart_GetType(sky_library, ToDart("Color"), 0, 0)); 32 color_class_.Set(this, Dart_GetType(sky_library, ToDart("Color"), 0, 0));
(...skipping 11 matching lines...) Expand all
40 DCHECK(Current()->document_); 44 DCHECK(Current()->document_);
41 return Current()->document_->frame(); 45 return Current()->document_->frame();
42 } 46 }
43 47
44 LocalDOMWindow* DOMDartState::CurrentWindow() { 48 LocalDOMWindow* DOMDartState::CurrentWindow() {
45 DCHECK(Current()->document_); 49 DCHECK(Current()->document_);
46 return Current()->document_->domWindow(); 50 return Current()->document_->domWindow();
47 } 51 }
48 52
49 } // namespace blink 53 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698