Ori.livneh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/171891
Change subject: Revert "Revert "Respect existing X-Analytics header, if set""
......................................................................
Revert "Revert "Respect existing X-Analytics header, if set""
This reverts commit d5a73c0c10e9286d68db7967a4dc2033c956718a.
As of I569b2ebbc, WebResponse has a 'getHeader' method. The change has been
cherry-picked into both production branches, but I added a method_exists()
check for back-compat.
Change-Id: I213a48c69e5982b654044a17bdb144d31b0c8080
---
M includes/MobileContext.php
M tests/phpunit/MobileContextTest.php
2 files changed, 18 insertions(+), 2 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend
refs/changes/91/171891/1
diff --git a/includes/MobileContext.php b/includes/MobileContext.php
index 2615b63..6345051 100644
--- a/includes/MobileContext.php
+++ b/includes/MobileContext.php
@@ -1021,7 +1021,11 @@
* @return string|bool
*/
public function getXAnalyticsHeader() {
- $logItems = $this->getAnalyticsLogItems();
+ $response = $this->getRequest()->response();
+ $currentHeader = method_exists( $response, 'getHeader' ) ?
+ $response->getHeader( 'X-Analytics' ) : '';
+ parse_str( preg_replace( '/; */', '&', $currentHeader ),
$logItems );
+ $logItems += $this->getAnalyticsLogItems();
if ( count( $logItems ) ) {
$xanalytics_items = array();
foreach ( $logItems as $key => $val ) {
diff --git a/tests/phpunit/MobileContextTest.php
b/tests/phpunit/MobileContextTest.php
index f8a5f3d..f8c2b77 100644
--- a/tests/phpunit/MobileContextTest.php
+++ b/tests/phpunit/MobileContextTest.php
@@ -399,10 +399,13 @@
/**
* @dataProvider getXAnalyticsHeaderProvider
*/
- public function testGetXAnalyticsHeader( $logItems, $expectedHeader ) {
+ public function testGetXAnalyticsHeader( $existingHeader, $logItems,
$expectedHeader ) {
$context = $this->makeContext();
foreach ( $logItems as $key => $val ) {
$context->addAnalyticsLogItem( $key, $val );
+ }
+ if ( $existingHeader ) {
+ $context->getRequest()->response()->header(
'X-Analytics: ' . $existingHeader, true );
}
$this->assertEquals( $context->getXAnalyticsHeader(),
$expectedHeader );
}
@@ -410,19 +413,28 @@
public function getXAnalyticsHeaderProvider() {
return array(
array(
+ null,
array( 'mf-m' => 'a', 'zero' => '502-13' ),
'X-Analytics: mf-m=a;zero=502-13',
),
// check key/val trimming
array(
+ null,
array( ' foo' => ' bar ', 'baz' => ' blat '
),
'X-Analytics: foo=bar;baz=blat'
),
// check urlencoding key/val pairs
array(
+ null,
array( 'foo' => 'bar baz', 'blat' => '$blammo'
),
'X-Analytics: foo=bar+baz;blat=%24blammo'
),
+ // check handling of existing header value
+ array(
+ 'existing=value; another=item',
+ array( 'mf-m' => 'a', 'zero' => '502-13' ),
+ 'X-Analytics:
existing=value;another=item;mf-m=a;zero=502-13',
+ ),
);
}
--
To view, visit https://gerrit.wikimedia.org/r/171891
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I213a48c69e5982b654044a17bdb144d31b0c8080
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits