Make WordPress Core

Ticket #38181: 38181.6.diff

File 38181.6.diff, 8.5 KB (added by jbpaul17, 9 years ago)

Refreshed patch to build off of #38367

  • src/wp-includes/class-oembed.php

    diff --git a/src/wp-includes/class-oembed.php b/src/wp-includes/class-oembed.php
    index c25b8cb..d50528b 100644
    a b public function __construct() { 
    109109                        '#https?://www\.facebook\.com/.*/videos/.*#i'              => array( 'https://www.facebook.com/plugins/video/oembed.json/',       true  ),
    110110                        '#https?://www\.facebook\.com/video\.php.*#i'              => array( 'https://www.facebook.com/plugins/video/oembed.json/',       true  ),
    111111                        '#https?://(www\.)?screencast\.com/.*#i'                   => array( 'https://api.screencast.com/external/oembed',                true  ),
     112                        '#https?://([a-z0-9-]+\.)?amazon\.(com|com\.mx|com\.br|ca)/.*#i'      => array( 'https://read.amazon.com/kp/api/oembed',     true  ),
     113                        '#https?://([a-z0-9-]+\.)?amazon\.(co\.uk|de|fr|it|es|in|nl|ru)/.*#i' => array( 'https://read.amazon.co.uk/kp/api/oembed',   true  ),
     114                        '#https?://([a-z0-9-]+\.)?amazon\.(co\.jp|com\.au)/.*#i'              => array( 'https://read.amazon.com.au/kp/api/oembed',  true  ),
     115                        '#https?://([a-z0-9-]+\.)?amazon\.cn/.*#i'                            => array( 'https://read.amazon.cn/kp/api/oembed',      true  ),
     116                        '#https?://(www\.)?a.co/.*#i'                                         => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
     117                        '#https?://(www\.)?amz.onl/.*#i'                                      => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
     118                        '#https?://(www\.)?amzn.to/.*#i'                                      => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
     119                        '#https?://(www\.)?amzn.eu/.*#i'                                      => array( 'https://read.amazon.co.uk/kp/api/oembed',                   true  ),
     120                        '#https?://(www\.)?amzn.in/.*#i'                                      => array( 'https://read.amazon.in/kp/api/oembed',                      true  ),
     121                        '#https?://(www\.)?amzn.asia/.*#i'                                    => array( 'https://read.amazon.com.au/kp/api/oembed',                  true  ),
     122                        '#https?://(www\.)?z.cn/.*#i'                                         => array( 'https://read.amazon.cn/kp/api/oembed',                      true  ),
    112123                );
    113124
    114125                if ( ! empty( self::$early_providers['add'] ) ) {
    public function __construct() { 
    183194                 * | Twitter      | twitter.com/likes     |      Yes       | 4.7.0     |
    184195                 * | Twitter      | twitter.com/lists     |      Yes       | 4.7.0     |
    185196                 * | Screencast   | screencast.com        |      Yes       | 4.8.0     |
     197                 * | Amazon Kindle| *.amazon.com          |      Yes       | 4.8.0     |
     198                 * | Amazon Kindle| *.amazon.co.uk        |      Yes       | 4.8.0     |
     199                 * | Amazon Kindle| *.amazon.de           |      Yes       | 4.8.0     |
     200                 * | Amazon Kindle| *.amazon.fr           |      Yes       | 4.8.0     |
     201                 * | Amazon Kindle| *.amazon.it           |      Yes       | 4.8.0     |
     202                 * | Amazon Kindle| *.amazon.es           |      Yes       | 4.8.0     |
     203                 * | Amazon Kindle| *.amazon.co.jp        |      Yes       | 4.8.0     |
     204                 * | Amazon Kindle| *.amazon.cn           |      Yes       | 4.8.0     |
     205                 * | Amazon Kindle| *.amazon.com.au       |      Yes       | 4.8.0     |
     206                 * | Amazon Kindle| *.amazon.in           |      Yes       | 4.8.0     |
     207                 * | Amazon Kindle| *.amazon.com.mx       |      Yes       | 4.8.0     |
     208                 * | Amazon Kindle| *.amazon.com.br       |      Yes       | 4.8.0     |
     209                 * | Amazon Kindle| *.amazon.ca           |      Yes       | 4.8.0     |
     210                 * | Amazon Kindle| *.amazon.nl           |      Yes       | 4.8.0     |
     211                 * | Amazon Kindle| *.amazon.ru           |      Yes       | 4.8.0     |
     212                 * | Amazon Kindle| a.co                  |      Yes       | 4.8.0     |
     213                 * | Amazon Kindle| amzn.onl              |      Yes       | 4.8.0     |
     214                 * | Amazon Kindle| amzn.to               |      Yes       | 4.8.0     |
     215                 * | Amazon Kindle| amzn.eu               |      Yes       | 4.8.0     |
     216                 * | Amazon Kindle| amzn.in               |      Yes       | 4.8.0     |
     217                 * | Amazon Kindle| amzn.asia             |      Yes       | 4.8.0     |
     218                 * | Amazon Kindle| z.cn                  |      Yes       | 4.8.0     |                 
    186219                 *
    187220                 * No longer supported providers:
    188221                 *
  • tests/phpunit/tests/external-http/oembed.php

    diff --git a/tests/phpunit/tests/external-http/oembed.php b/tests/phpunit/tests/external-http/oembed.php
    index 3f22739..8cbd537 100644
    a b function test_youtube_v_url() { 
    4343                $out = $wp_embed->autoembed( 'https://www.youtube.com/v/QcIy9NiNbmo' );
    4444                $this->assertContains( 'https://youtube.com/watch?v=QcIy9NiNbmo', $out );
    4545        }
    46 }
    47  No newline at end of file
     46
     47        /**
     48         * Test Kindle Instant Previews embeds.
     49         *
     50         * @ticket 38181
     51         */
     52        function test_amazon_kindle_non_book_embed() {
     53                $out = wp_oembed_get( 'http://www.amazon.com/All-New-Kindle-E-reader-Glare-Free-Touchscreen/dp/B00ZV9PXP2/r' );
     54                $this->assertFalse( $out );
     55
     56                $out = wp_oembed_get( 'https://www.amazon.com/All-New-Kindle-E-reader-Glare-Free-Touchscreen/dp/B00ZV9PXP2/r' );
     57                $this->assertFalse( $out );
     58        }
     59
     60        /**
     61         * Support for Kindle previews shared from Kindle devices or apps.
     62         *
     63         * @link http://www.amazon.com/bettersharing Kindle Instant Previews sharing homepage
     64         *
     65         * @ticket 38181
     66         */
     67        function test_amazon_kindle_shared_preview_embed() {
     68                // Book.
     69                $out = wp_oembed_get( 'https://read.amazon.com/kp/kshare?asin=B008TW1HMG&tag=foo-20' );
     70                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     71                $this->assertContains( 'asin=B008TW1HMG', $out );
     72                $this->assertContains( 'tag=foo-20', $out );
     73
     74                // Quote.
     75                $out = wp_oembed_get( 'https://read.amazon.com/kp/kshare?asin=B00DPM7TIG&tag=foo-20&id=XD3ezAVVQ3KP0bWxSFvosg' );
     76                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     77                $this->assertContains( 'asin=B00DPM7TIG', $out );
     78                $this->assertContains( 'tag=foo-20', $out );
     79
     80                // Reading progress.
     81                $out = wp_oembed_get( 'https://read.amazon.com/kp/kshare?asin=B007P7HRS4&id=Sd6UmMYYTc6rHl1BYkXU2g&tag=foo-20' );
     82                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     83                $this->assertContains( 'asin=B007P7HRS4', $out );
     84                $this->assertContains( 'tag=foo-20', $out );
     85        }
     86
     87        /**
     88         * Support for Kindle previews created from the self-service embedding tool
     89         *
     90         * @link http://www.amazon.com/kindleinstantpreview Kindle Instant Previews for third parties
     91         *
     92         * @ticket 38181
     93         */
     94        function test_amazon_kindle_embedded_preview_embed() {
     95                // URL.
     96                $out = wp_oembed_get( 'https://read.amazon.com/kp/embed?asin=B008TW1HMG&tag=foo-20' );
     97                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     98                $this->assertContains( 'asin=B008TW1HMG', $out );
     99                $this->assertContains( 'tag=foo-20', $out );
     100
     101                // Interactive book card.
     102                $out = wp_oembed_get( 'https://read.amazon.com/kp/card?asin=B008TW1HMG&tag=foo-20&preview=inline' );
     103                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     104                $this->assertContains( 'asin=B008TW1HMG', $out );
     105                $this->assertContains( 'tag=foo-20', $out );
     106        }
     107
     108        /**
     109         * Support for Kindle Instant Previews in non-US marketplaces
     110         *
     111         * @ticket 38181
     112         */
     113        function test_amazon_kindle_preview_non_us_embed() {
     114                // Americas (canonical TLD: .com)
     115                $out = wp_oembed_get( 'https://read.amazon.ca/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux' );
     116                $this->assertContains( 'https://read.amazon.ca/kp/card?', $out );
     117                $this->assertContains( 'asin=B008TW1HMG', $out );
     118                $this->assertContains( 'tag=foo-20', $out );
     119
     120                // Europe (canonical TLD: .co.uk)
     121                $out = wp_oembed_get( 'https://read.amazon.in/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux' );
     122                $this->assertContains( 'https://read.amazon.in/kp/card?', $out );
     123                $this->assertContains( 'asin=B008TW1HMG', $out );
     124                $this->assertContains( 'tag=foo-20', $out );
     125
     126                // Asia (canonical TLD: .com.au)
     127                $out = wp_oembed_get( 'https://read.amazon.co.jp/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux&preview=inline' );
     128                $this->assertContains( 'https://read.amazon.com.au/kp/card?', $out );
     129                $this->assertContains( 'asin=B008TW1HMG', $out );
     130                $this->assertContains( 'tag=foo-20', $out );
     131
     132                // China (canonical TLD: .cn)
     133                $out = wp_oembed_get( 'https://read.amazon.cn/kp/embed?asin=B01M06TYLV&tag=foo-20&ref_=bar_qux&preview=inline' );
     134                $this->assertContains( 'https://read.amazon.cn/kp/card?', $out );
     135                $this->assertContains( 'asin=B01M06TYLV', $out );
     136                $this->assertContains( 'tag=foo-20', $out );
     137        }
     138}