14576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang/*
24576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
34576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *
44576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  This library is free software; you can redistribute it and/or
54576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  modify it under the terms of the GNU Library General Public
64576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  License as published by the Free Software Foundation; either
74576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  version 2 of the License, or (at your option) any later version.
84576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *
94576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  This library is distributed in the hope that it will be useful,
104576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  but WITHOUT ANY WARRANTY; without even the implied warranty of
114576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  Library General Public License for more details.
134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *
144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  You should have received a copy of the GNU Library General Public License
154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  along with this library; see the file COPYING.LIB.  If not, write to
164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang *  Boston, MA 02110-1301, USA.
184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang */
194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#ifndef MediaQueryListListener_h
214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define MediaQueryListListener_h
224576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "PlatformString.h"
244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "ScriptState.h"
254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "ScriptValue.h"
264576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
274576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include <wtf/RefCounted.h>
284576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangnamespace WebCore {
304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangclass MediaQueryList;
324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
334576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang// See http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface
344576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
354576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangclass MediaQueryListListener : public RefCounted<MediaQueryListListener> {
364576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangpublic:
374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    static PassRefPtr<MediaQueryListListener> create(ScriptValue value)
384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    {
394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        if (!value.isFunction())
404576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang            return 0;
414576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        return adoptRef(new MediaQueryListListener(value));
424576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    }
434576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    void queryChanged(ScriptState*, MediaQueryList*);
444576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
454576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    bool operator==(const MediaQueryListListener& other) const { return m_value == other.m_value; }
464576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
474576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangprivate:
484576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    MediaQueryListListener(ScriptValue value) : m_value(value) { }
494576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
504576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    ScriptValue m_value;
514576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang};
524576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
534576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}
544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
554576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#endif // MediaQueryListListener_h
56