1 /* 2 Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Library General Public 6 License as published by the Free Software Foundation; either 7 version 2 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Library General Public License for more details. 13 14 You should have received a copy of the GNU Library General Public License 15 along with this library; see the file COPYING.LIB. If not, write to 16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef Navigator_h 21 #define Navigator_h 22 23 #include "NavigatorBase.h" 24 #include <wtf/PassRefPtr.h> 25 #include <wtf/RefCounted.h> 26 #include <wtf/RefPtr.h> 27 28 namespace WebCore { 29 30 class Frame; 31 class Geolocation; 32 class MimeTypeArray; 33 class PluginData; 34 class PluginArray; 35 class String; 36 37 class Navigator : public NavigatorBase, public RefCounted<Navigator> { 38 public: create(Frame * frame)39 static PassRefPtr<Navigator> create(Frame* frame) { return adoptRef(new Navigator(frame)); } 40 ~Navigator(); 41 42 void disconnectFrame(); frame()43 Frame* frame() const { return m_frame; } 44 45 String appVersion() const; 46 String language() const; 47 PluginArray* plugins() const; 48 MimeTypeArray* mimeTypes() const; 49 bool cookieEnabled() const; 50 bool javaEnabled() const; 51 52 virtual String userAgent() const; 53 54 Geolocation* geolocation() const; 55 // This is used for GC marking. optionalGeolocation()56 Geolocation* optionalGeolocation() const { return m_geolocation.get(); } 57 58 private: 59 Navigator(Frame*); 60 Frame* m_frame; 61 mutable RefPtr<PluginArray> m_plugins; 62 mutable RefPtr<MimeTypeArray> m_mimeTypes; 63 mutable RefPtr<Geolocation> m_geolocation; 64 }; 65 66 } 67 68 #endif 69