components/desktop/firefox/patches/firefox-45-wifi-scanner.patch
branchs11u3-sru
changeset 7035 4c2f26e9d5ab
equal deleted inserted replaced
7034:55c87002c655 7035:4c2f26e9d5ab
       
     1 Convert variable int mac_as_int to char. 
       
     2 Do not plan to send upstream.
       
     3 
       
     4 diff --git a/netwerk/wifi/nsWifiScannerSolaris.cpp b/netwerk/wifi/nsWifiScannerSolaris.cpp
       
     5 --- a/netwerk/wifi/nsWifiScannerSolaris.cpp
       
     6 +++ b/netwerk/wifi/nsWifiScannerSolaris.cpp
       
     7 @@ -28,47 +28,52 @@ static val_strength_t strength_vals[] = 
       
     8    { "good",      -68 },
       
     9    { "very good", -40 },
       
    10    { "excellent", -16 }
       
    11  };
       
    12  
       
    13  static nsWifiAccessPoint *
       
    14  do_parse_str(char *bssid_str, char *essid_str, char *strength)
       
    15  {
       
    16 -  unsigned char mac_as_int[6] = { 0 };
       
    17 +  unsigned int mac_as_int[6] = { 0 };
       
    18 +  unsigned char mac_as_byte[6] = { 0 };
       
    19    sscanf(bssid_str, "%x:%x:%x:%x:%x:%x", &mac_as_int[0], &mac_as_int[1],
       
    20           &mac_as_int[2], &mac_as_int[3], &mac_as_int[4], &mac_as_int[5]);
       
    21  
       
    22 +  for (uint32_t i = 0; i < 6; i++) {
       
    23 +    mac_as_byte[i] = mac_as_int[i];
       
    24 +  }
       
    25 +
       
    26    int signal = 0;
       
    27    uint32_t strength_vals_count = sizeof(strength_vals) / sizeof (val_strength_t);
       
    28    for (uint32_t i = 0; i < strength_vals_count; i++) {
       
    29      if (!strncasecmp(strength, strength_vals[i].strength_name, DLADM_STRSIZE)) {
       
    30        signal = strength_vals[i].signal_value;
       
    31        break;
       
    32      }
       
    33    }
       
    34  
       
    35    nsWifiAccessPoint *ap = new nsWifiAccessPoint();
       
    36    if (ap) {
       
    37 -    ap->setMac(mac_as_int);
       
    38 +    ap->setMac(mac_as_byte);
       
    39      ap->setSignal(signal);
       
    40      ap->setSSID(essid_str, PL_strnlen(essid_str, DLADM_STRSIZE));
       
    41    }
       
    42    return ap;
       
    43  }
       
    44  
       
    45  static void
       
    46  do_dladm(nsCOMArray<nsWifiAccessPoint> &accessPoints)
       
    47  {
       
    48    GError *err = nullptr;
       
    49    char *sout = nullptr;
       
    50    char *serr = nullptr;
       
    51    int exit_status = 0;
       
    52    char * dladm_args[] = { "/usr/bin/pfexec", "/usr/sbin/dladm",
       
    53 -                          "scan-wifi", "-p", "-o", "BSSID,ESSID,STRENGTH" };
       
    54 +                          "scan-wifi", "-p", "-o", "BSSID,ESSID,STRENGTH", 0 };
       
    55  
       
    56    gboolean rv = g_spawn_sync("/", dladm_args, nullptr, (GSpawnFlags)0, nullptr,
       
    57                               nullptr, &sout, &serr, &exit_status, &err);
       
    58    if (rv && !exit_status) {
       
    59      char wlan[DLADM_SECTIONS][DLADM_STRSIZE+1];
       
    60      uint32_t section = 0;
       
    61      uint32_t sout_scan = 0;
       
    62      uint32_t wlan_put = 0;
       
    63 --- a/dom/system/NetworkGeolocationProvider.js	2015-09-13 14:24:44.290458254 +0800
       
    64 +++ b/dom/system/NetworkGeolocationProvider.js	2015-09-13 14:24:52.938673937 +0800
       
    65 @@ -29,7 +29,7 @@
       
    66     data and xhr it to the location server.
       
    67  */
       
    68  
       
    69 -var gLocationRequestTimeout = 5000;
       
    70 +var gLocationRequestTimeout = 30000;
       
    71  
       
    72  var gWifiScanningEnabled = true;
       
    73  var gCellScanningEnabled = false;