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

Side by Side Diff: third_party/WebKit/Source/core/events/PopStateEvent.cpp

Issue 2856683003: Revert of Use trace wrapper in PopStateEvent (Closed)
Patch Set: Created 3 years, 7 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 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2009 Apple Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 14 matching lines...) Expand all
25 */ 25 */
26 26
27 #include "core/events/PopStateEvent.h" 27 #include "core/events/PopStateEvent.h"
28 28
29 #include "bindings/core/v8/SerializedScriptValue.h" 29 #include "bindings/core/v8/SerializedScriptValue.h"
30 #include "core/frame/History.h" 30 #include "core/frame/History.h"
31 31
32 namespace blink { 32 namespace blink {
33 33
34 PopStateEvent::PopStateEvent() 34 PopStateEvent::PopStateEvent()
35 : serialized_state_(nullptr), state_(this), history_(nullptr) {} 35 : serialized_state_(nullptr), history_(nullptr) {}
36 36
37 PopStateEvent::PopStateEvent(ScriptState* script_state, 37 PopStateEvent::PopStateEvent(const AtomicString& type,
38 const AtomicString& type,
39 const PopStateEventInit& initializer) 38 const PopStateEventInit& initializer)
40 : Event(type, initializer), state_(this), history_(nullptr) { 39 : Event(type, initializer), history_(nullptr) {
41 if (initializer.hasState()) { 40 if (initializer.hasState())
42 world_ = RefPtr<DOMWrapperWorld>(script_state->World()); 41 state_ = initializer.state();
43 state_.Set(initializer.state().GetIsolate(), initializer.state().V8Value());
44 }
45 } 42 }
46 43
47 PopStateEvent::PopStateEvent(PassRefPtr<SerializedScriptValue> serialized_state, 44 PopStateEvent::PopStateEvent(PassRefPtr<SerializedScriptValue> serialized_state,
48 History* history) 45 History* history)
49 : Event(EventTypeNames::popstate, false, true), 46 : Event(EventTypeNames::popstate, false, true),
50 serialized_state_(std::move(serialized_state)), 47 serialized_state_(std::move(serialized_state)),
51 state_(this),
52 history_(history) {} 48 history_(history) {}
53 49
54 PopStateEvent::~PopStateEvent() {} 50 PopStateEvent::~PopStateEvent() {}
55 51
56 ScriptValue PopStateEvent::state(ScriptState* script_state) const {
57 if (state_.IsEmpty())
58 return ScriptValue();
59
60 v8::Isolate* isolate = script_state->GetIsolate();
61 if (world_->GetWorldId() != script_state->World().GetWorldId()) {
62 v8::Local<v8::Value> value = state_.NewLocal(isolate);
63 RefPtr<SerializedScriptValue> serialized =
64 SerializedScriptValue::SerializeAndSwallowExceptions(isolate, value);
65 return ScriptValue(script_state, serialized->Deserialize(isolate));
66 }
67 return ScriptValue(script_state, state_.NewLocal(isolate));
68 }
69
70 PopStateEvent* PopStateEvent::Create() { 52 PopStateEvent* PopStateEvent::Create() {
71 return new PopStateEvent; 53 return new PopStateEvent;
72 } 54 }
73 55
74 PopStateEvent* PopStateEvent::Create( 56 PopStateEvent* PopStateEvent::Create(
75 PassRefPtr<SerializedScriptValue> serialized_state, 57 PassRefPtr<SerializedScriptValue> serialized_state,
76 History* history) { 58 History* history) {
77 return new PopStateEvent(std::move(serialized_state), history); 59 return new PopStateEvent(std::move(serialized_state), history);
78 } 60 }
79 61
80 PopStateEvent* PopStateEvent::Create(ScriptState* script_state, 62 PopStateEvent* PopStateEvent::Create(const AtomicString& type,
81 const AtomicString& type,
82 const PopStateEventInit& initializer) { 63 const PopStateEventInit& initializer) {
83 return new PopStateEvent(script_state, type, initializer); 64 return new PopStateEvent(type, initializer);
84 } 65 }
85 66
86 const AtomicString& PopStateEvent::InterfaceName() const { 67 const AtomicString& PopStateEvent::InterfaceName() const {
87 return EventNames::PopStateEvent; 68 return EventNames::PopStateEvent;
88 } 69 }
89 70
90 DEFINE_TRACE(PopStateEvent) { 71 DEFINE_TRACE(PopStateEvent) {
91 visitor->Trace(history_); 72 visitor->Trace(history_);
92 Event::Trace(visitor); 73 Event::Trace(visitor);
93 } 74 }
94 75
95 DEFINE_TRACE_WRAPPERS(PopStateEvent) {
96 visitor->TraceWrappers(state_);
97 Event::TraceWrappers(visitor);
98 }
99
100 } // namespace blink 76 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/events/PopStateEvent.h ('k') | third_party/WebKit/Source/core/events/PopStateEvent.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698