17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be 37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file. 47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#ifndef DictionaryTest_h 67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define DictionaryTest_h 77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "bindings/core/v8/Nullable.h" 97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "bindings/core/v8/ScriptValue.h" 107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "bindings/core/v8/ScriptWrappable.h" 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/dom/Element.h" 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/heap/Handle.h" 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/text/WTFString.h" 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink { 167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass InternalDictionary; 187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass DictionaryTest : public GarbageCollectedFinalized<DictionaryTest>, public ScriptWrappable { 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DEFINE_WRAPPERTYPEINFO(); 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccipublic: 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static DictionaryTest* create() 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return new DictionaryTest(); 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci virtual ~DictionaryTest(); 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // Stores all members into corresponding fields 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void set(const InternalDictionary&); 307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // Creates a TestDictionary instnace from fields and returns it 317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci InternalDictionary* get(); 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void trace(Visitor*); 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciprivate: 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DictionaryTest(); 377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void reset(); 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // The reason to use Nullable<T> is convenience; we use Nullable<T> here to 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // record whether the member field is set or not. Some members are not 427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // wrapped with Nullable because: 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // - |longMemberWithDefault| has a non-null default value 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // - String and PtrTypes can express whether they are null 457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Nullable<int> m_longMember; 467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci int m_longMemberWithDefault; 477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Nullable<int> m_longOrNullMember; 487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Nullable<int> m_longOrNullMemberWithDefault; 497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Nullable<bool> m_booleanMember; 507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Nullable<double> m_doubleMember; 517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci String m_stringMember; 527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci String m_stringMemberWithDefault; 537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Nullable<Vector<String> > m_stringSequenceMember; 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Nullable<Vector<String> > m_stringSequenceOrNullMember; 557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci String m_enumMember; 567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci String m_enumMemberWithDefault; 577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci String m_enumOrNullMember; 587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtrWillBeMember<Element> m_elementMember; 597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtrWillBeMember<Element> m_elementOrNullMember; 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ScriptValue m_objectMember; 617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ScriptValue m_objectOrNullMemberWithDefault; 627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}; 637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink 657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // DictionaryTest_h 67