Making WordPress.org

Changeset 5984


Ignore:
Timestamp:
10/02/2017 03:53:11 PM (8 years ago)
Author:
coffee2code
Message:

Browse Happy API: Add support for Amazon Silk as a browser and Fire OS as a platform.

  • Adds Amazon Silk as a recognized browser
  • Changes existing "Kindle" to "Kindle Browser"
  • Removes hacky override that set Kindle's platform to "Kindle"
  • Attributes Amazon Silk and Kindle Browser to Fire OS platform
  • Omits version number from Kindle Browser
  • Updates existing Kindle unit tests to reflect these changes
Location:
sites/trunk/api.wordpress.org/public_html/core/browse-happy/1.0
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/api.wordpress.org/public_html/core/browse-happy/1.0/parse.php

    r5980 r5984  
    4949    // Properly set platform if Android is actually being reported.
    5050    if ( 'Linux' === $data['platform'] && false !== strpos( $user_agent, 'Android' ) ) {
    51         $data['platform'] = 'Android';
     51        if ( strpos( $user_agent, 'Kindle' ) ) {
     52            $data['platform'] = 'Fire OS';
     53        } else {
     54            $data['platform'] = 'Android';
     55        }
    5256    } elseif ( 'Windows Phone' === $data['platform'] ) {
    5357        $data['platform'] = 'Windows Phone OS';
    5458    }
    5559
    56     if ( in_array( $data['platform'], array( 'Android', 'iPad', 'iPhone', 'PlayBook', 'RIM Tablet OS', 'Windows Phone OS' ) ) ) {
     60    if ( in_array( $data['platform'], array( 'Android', 'Fire OS', 'iPad', 'iPhone', 'PlayBook', 'RIM Tablet OS', 'Windows Phone OS' ) ) ) {
    5761        $data['mobile'] = true;
    5862    }
    5963
    6064    preg_match_all(
    61         '%(?P<name>Opera Mini|Opera|OPR|Edge|Trident|Camino|Kindle|Firefox|(?:Mobile )?Safari|NokiaBrowser|MSIE|RockMelt|AppleWebKit|Chrome|IEMobile|Version)(?:[/ ])(?P<version>[0-9.]+)%im',
     65        '%(?P<name>Opera Mini|Opera|OPR|Edge|Trident|Silk|Camino|Kindle|Firefox|(?:Mobile )?Safari|NokiaBrowser|MSIE|RockMelt|AppleWebKit|Chrome|IEMobile|Version)(?:[/ ])(?P<version>[0-9.]+)%im',
    6266        $user_agent,
    6367        $result,
     
    9397    }
    9498    // Nokia Browser
    95     elseif ( $key = array_search( 'NokiaBrowser', $result['name'] ) ) {
     99    elseif ( false !== ( $key = array_search( 'NokiaBrowser', $result['name'] ) ) ) {
    96100        $data['name']     = 'Nokia Browser';
    97101        $data['version']  = $result['version'][ $key ];
    98102        $data['mobile']   = true;
    99     } elseif ( 'AppleWebKit' == $result['name'][0] ) {
     103    }
     104    // Amazon Silk
     105    elseif ( false !== ( $key = array_search( 'Silk', $result['name'] ) ) ) {
     106        $data['name']     = 'Amazon Silk';
     107        $data['version']  = $result['version'][ $key ];
     108        $version          = '';
     109    }
     110    // Kindle Browser
     111    elseif ( false !== ( $key = array_search( 'Kindle', $result['name'] ) ) ) {
     112        $data['name']     = 'Kindle Browser';
     113        $data['version']  = $result['version'][ $key ];
     114    }
     115    // AppleWebKit-emulating browsers
     116    elseif ( 'AppleWebKit' == $result['name'][0] ) {
    100117        if ( $key = array_search( 'Edge', $result['name'] ) ) {
    101118            $data['name'] = 'Microsoft Edge';
     
    106123            } elseif ( 'Android' === $data['platform'] ) {
    107124                $data['name'] = 'Android Browser';
     125            } elseif ( 'Fire OS' === $data['platform'] ) {
     126                $data['name'] = 'Kindle Browser';
    108127            } else {
    109128                $data['name'] = 'Mobile Safari';
     
    117136        } elseif ( ! empty( $data['platform'] ) && 'PlayBook' == $data['platform'] ) {
    118137            $data['name'] = 'PlayBook';
    119         } elseif ( $key = array_search( 'Kindle', $result['name'] ) ) {
    120             $data['name'] = 'Kindle';
    121138        } elseif ( $key = array_search( 'Safari', $result['name'] ) ) {
    122139            if ( 'Android' === $data['platform'] ) {
     
    155172    }
    156173
    157     if ( in_array( $data['name'], array( 'Kindle' ) ) ) {
    158         $data['platform'] = $data['name'];
     174    // Set the platform for Amazon-related browsers.
     175    if ( in_array( $data['name'], array( 'Amazon Silk', 'Kindle Browser' ) ) ) {
     176        $data['platform'] = 'Fire OS';
     177        $data['mobile']   = true;
    159178    }
    160179
  • sites/trunk/api.wordpress.org/public_html/core/browse-happy/1.0/tests/phpunit/tests/browse-happy.php

    r5981 r5984  
    2222        return [
    2323
     24            // Amazon Silk
     25
     26            [
     27                'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.146.3-Gen4_12000410) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true',
     28                'Fire OS Amazon Silk 1.0.146.3',
     29            ],
     30            [
     31                'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.146.3-Gen4_12000410) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true',
     32                'Fire OS Amazon Silk 1.0.146.3',
     33            ],
     34            [
     35                'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.68 like Chrome/39.0.2171.93 Safari/537.36',
     36                'Fire OS Amazon Silk 3.68',
     37            ],
     38            [
     39                'Mozilla/5.0 (Linux; Android 4.0.3; KFTT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/51.2.1 like Chrome/51.0.2704.81 Safari/537.36',
     40                'Fire OS Amazon Silk 51.2.1',
     41            ],
     42            [
     43                'Mozilla/5.0 (Linux; Android 5.1.1; KFDOWI Build/LVY48F) AppleWebKit/537.36 (KHTML, like Gecko) Silk/58.2.6 like Chrome/58.0.3029.83 Safari/537.36',
     44                'Fire OS Amazon Silk 58.2.6',
     45            ],
     46
    2447            // Android Browser
    2548
     
    269292            ],
    270293
     294            // Kindle Browser
     295
     296            [
     297                'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
     298                'Fire OS Kindle Browser 1.0',
     299            ],
     300            [
     301                'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)',
     302                'Fire OS Kindle Browser 4.0',
     303            ],
     304            [
     305                'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/538.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)',
     306                'Fire OS Kindle Browser 4.0',
     307            ],
     308            [
     309                'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
     310                'Fire OS Kindle Browser 4.0',
     311            ],
     312            [
     313                'Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+',
     314                'Fire OS Kindle Browser 5.0',
     315            ],
     316
    271317            // Microsoft Edge
    272318
     
    442488            // Miscellaneous
    443489
    444             [
    445                 'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
    446                 'Kindle Kindle 1.0',
    447             ],
    448             [
    449                 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)',
    450                 'Kindle Kindle 4.0',
    451             ],
    452             [
    453                 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/538.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)',
    454                 'Kindle Kindle 4.0',
    455             ],
    456490            [
    457491                'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Version/0.0.1 Safari/534.8',
     
    556590        $parsed = browsehappy_parse_user_agent( $header );
    557591
    558         if ( in_array( $parsed['platform'], array( 'Android', 'iPad', 'iPhone', 'Mobile', 'PlayBook', 'RIM Tablet OS', 'Windows Phone OS' ) ) ) {
     592        if ( in_array( $parsed['platform'], array( 'Android', 'Fire OS', 'iPad', 'iPhone', 'Mobile', 'PlayBook', 'RIM Tablet OS', 'Windows Phone OS' ) ) ) {
    559593            $this->assertTrue( $parsed['mobile'] );
    560594        } else {
Note: See TracChangeset for help on using the changeset viewer.