Home | History | Annotate | Download | only in page
      1 /*
      2  * Copyright (C) 2008 Apple Inc. All Rights Reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  *
     25  */
     26 
     27 #include "config.h"
     28 #include "NavigatorBase.h"
     29 
     30 #include "NetworkStateNotifier.h"
     31 #include "PlatformString.h"
     32 #if OS(LINUX)
     33 #include "sys/utsname.h"
     34 #include <wtf/StdLibExtras.h>
     35 #endif
     36 
     37 #ifndef WEBCORE_NAVIGATOR_PLATFORM
     38 #if OS(MAC_OS_X) && (CPU(PPC) || CPU(PPC64))
     39 #define WEBCORE_NAVIGATOR_PLATFORM "MacPPC"
     40 #elif OS(MAC_OS_X) && (CPU(X86) || CPU(X86_64))
     41 #define WEBCORE_NAVIGATOR_PLATFORM "MacIntel"
     42 #elif OS(WINDOWS)
     43 #define WEBCORE_NAVIGATOR_PLATFORM "Win32"
     44 #elif OS(SYMBIAN)
     45 #define WEBCORE_NAVIGATOR_PLATFORM "Symbian"
     46 #else
     47 #define WEBCORE_NAVIGATOR_PLATFORM ""
     48 #endif
     49 #endif // ifndef WEBCORE_NAVIGATOR_PLATFORM
     50 
     51 #ifndef WEBCORE_NAVIGATOR_PRODUCT
     52 #define WEBCORE_NAVIGATOR_PRODUCT "Gecko"
     53 #endif // ifndef WEBCORE_NAVIGATOR_PRODUCT
     54 
     55 #ifndef WEBCORE_NAVIGATOR_PRODUCT_SUB
     56 #define WEBCORE_NAVIGATOR_PRODUCT_SUB "20030107"
     57 #endif // ifndef WEBCORE_NAVIGATOR_PRODUCT_SUB
     58 
     59 #ifndef WEBCORE_NAVIGATOR_VENDOR
     60 #define WEBCORE_NAVIGATOR_VENDOR "Apple Inc."
     61 #endif // ifndef WEBCORE_NAVIGATOR_VENDOR
     62 
     63 #ifndef WEBCORE_NAVIGATOR_VENDOR_SUB
     64 #define WEBCORE_NAVIGATOR_VENDOR_SUB ""
     65 #endif // ifndef WEBCORE_NAVIGATOR_VENDOR_SUB
     66 
     67 
     68 namespace WebCore {
     69 
     70 NavigatorBase::~NavigatorBase()
     71 {
     72 }
     73 
     74 String NavigatorBase::appName() const
     75 {
     76     return "Netscape";
     77 }
     78 
     79 String NavigatorBase::appVersion() const
     80 {
     81     // Version is everything in the user agent string past the "Mozilla/" prefix.
     82     const String& agent = userAgent();
     83     return agent.substring(agent.find('/') + 1);
     84 }
     85 
     86 String NavigatorBase::platform() const
     87 {
     88 #if OS(LINUX)
     89     if (String("") != WEBCORE_NAVIGATOR_PLATFORM)
     90         return WEBCORE_NAVIGATOR_PLATFORM;
     91     struct utsname osname;
     92     DEFINE_STATIC_LOCAL(String, platformName, (uname(&osname) >= 0 ? String(osname.sysname) + String(" ") + String(osname.machine) : ""));
     93     return platformName;
     94 #else
     95     return WEBCORE_NAVIGATOR_PLATFORM;
     96 #endif
     97 }
     98 
     99 String NavigatorBase::appCodeName() const
    100 {
    101     return "Mozilla";
    102 }
    103 
    104 String NavigatorBase::product() const
    105 {
    106     return WEBCORE_NAVIGATOR_PRODUCT;
    107 }
    108 
    109 String NavigatorBase::productSub() const
    110 {
    111     return WEBCORE_NAVIGATOR_PRODUCT_SUB;
    112 }
    113 
    114 String NavigatorBase::vendor() const
    115 {
    116     return WEBCORE_NAVIGATOR_VENDOR;
    117 }
    118 
    119 String NavigatorBase::vendorSub() const
    120 {
    121     return WEBCORE_NAVIGATOR_VENDOR_SUB;
    122 }
    123 
    124 bool NavigatorBase::onLine() const
    125 {
    126     return networkStateNotifier().onLine();
    127 }
    128 
    129 } // namespace WebCore
    130