10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Google Inc. All rights reserved. 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions are 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * met: 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * * Redistributions of source code must retain the above copyright 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * notice, this list of conditions and the following disclaimer. 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * * Redistributions in binary form must reproduce the above 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * copyright notice, this list of conditions and the following disclaimer 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * in the documentation and/or other materials provided with the 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * distribution. 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * * Neither the name of Google Inc. nor the names of its 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * contributors may be used to endorse or promote products derived from 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * this software without specific prior written permission. 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#ifndef V8DataGridDataSource_h 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#define V8DataGridDataSource_h 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if ENABLE(DATAGRID) 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "DataGridDataSource.h" 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <v8.h> 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/PassRefPtr.h> 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/RefPtr.h> 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore { 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass Frame; 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass HTMLDataGridElement; 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass V8DataGridDataSource : public DataGridDataSource { 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochpublic: 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static PassRefPtr<V8DataGridDataSource> create(v8::Handle<v8::Value> dataSource, Frame* frame) 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return adoptRef(new V8DataGridDataSource(dataSource, frame)); 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual ~V8DataGridDataSource(); 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual bool isJSDataGridDataSource() const { return true; } 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch v8::Handle<v8::Value> jsDataSource() const { return m_dataSource; } 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate: 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch V8DataGridDataSource(v8::Handle<v8::Value>, Frame*); 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch v8::Persistent<v8::Value> m_dataSource; 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<Frame> m_frame; 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochinline V8DataGridDataSource* asV8DataGridDataSource(DataGridDataSource* dataSource) 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ASSERT(dataSource->isJSDataGridDataSource()); 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return static_cast<V8DataGridDataSource*>(dataSource); 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochinline const V8DataGridDataSource* asV8DataGridDataSource(const DataGridDataSource* dataSource) 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ASSERT(dataSource->isJSDataGridDataSource()); 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return static_cast<const V8DataGridDataSource*>(dataSource); 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} // namespace WebCore 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif // ENABLE(DATAGRID) 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif // V8DataGridDataSource_h 82