From b8b0a0117d783571487954d4f5b0a55652346599 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 9 Jan 2015 22:52:17 -0800 Subject: [PATCH 01/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/2060479b9453 Author: David Flanagan Desc: Merge pull request #27214 from davidflanagan/bug1116444 Bug 1116444: handle files that have invalid EXIF orientation values r=pdahiya ======== https://hg.mozilla.org/integration/gaia-central/rev/545462d84880 Author: David Flanagan Desc: Bug 1116444: handle files that have invalid EXIF orientation values --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index a55e34829359..2f18e00597c0 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "3bf54932bcae08eb6cab2453a2be007835423cbd", + "revision": "2060479b94534e602ee619e6446db0b3436fe263", "repo_path": "integration/gaia-central" } From 15fa271733d2e5044b83540abebc61e9316132e9 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 9 Jan 2015 22:56:55 -0800 Subject: [PATCH 02/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index a0169533278e..321eb28b7736 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 0789ce56d7ff..798ba65ccfd0 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index b251b6cf3d46..b35169ba5c58 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 7950645f84ef..710c2dbead4b 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 0789ce56d7ff..798ba65ccfd0 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 7f6cc0e5b14d..df78fe5e61e5 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 7e1db4fb890e..aad9bb04542e 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 793174ea7bec..c2c571f10e17 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 11b030c03e0c..9ba260123e4c 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index cc4a7320dae8..811155de9e8a 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 4384500fb035..8a0db4d78fc3 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From a64136480e9d65a450617e90cad0d10fbbb27b22 Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Sat, 10 Jan 2015 10:55:47 -0500 Subject: [PATCH 03/34] Bug 1119497 - Don't continue searching if we hit a layer that has no containing APZC. r=botond --- gfx/layers/apz/src/APZCTreeManager.cpp | 8 ++--- .../gtest/TestAsyncPanZoomController.cpp | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/gfx/layers/apz/src/APZCTreeManager.cpp b/gfx/layers/apz/src/APZCTreeManager.cpp index 392d8e75f4d9..392e5f4ddc82 100644 --- a/gfx/layers/apz/src/APZCTreeManager.cpp +++ b/gfx/layers/apz/src/APZCTreeManager.cpp @@ -1373,7 +1373,7 @@ APZCTreeManager::GetAPZCAtPoint(HitTestingTreeNode* aNode, } // If we didn't match anything in the subtree, check |node|. - if (!result) { + if (*aOutHitResult == NoApzcHit) { APZCTM_LOG("Testing ParentLayer point %s (Layer %s) against node %p\n", Stringify(aHitTestPoint).c_str(), hitTestPointForChildLayers ? Stringify(hitTestPointForChildLayers.ref()).c_str() : "nil", @@ -1392,14 +1392,14 @@ APZCTreeManager::GetAPZCAtPoint(HitTestingTreeNode* aNode, // If we are overscrolled, and the point matches us or one of our children, // the result is inside an overscrolled APZC, inform our caller of this // (callers typically ignore events targeted at overscrolled APZCs). - if (result && apzc && apzc->IsOverscrolled()) { + if (*aOutHitResult != NoApzcHit && apzc && apzc->IsOverscrolled()) { APZCTM_LOG("Result is inside overscrolled APZC %p\n", apzc); *aOutHitResult = OverscrolledApzc; return nullptr; } - if (result) { - if (!gfxPrefs::LayoutEventRegionsEnabled()) { + if (*aOutHitResult != NoApzcHit) { + if (result && !gfxPrefs::LayoutEventRegionsEnabled()) { // When event-regions are disabled, we treat scrollinfo layers as // regular scrollable layers. Unfortunately, their "hit region" (which // we create from the composition bounds) is their full area, and they diff --git a/gfx/tests/gtest/TestAsyncPanZoomController.cpp b/gfx/tests/gtest/TestAsyncPanZoomController.cpp index 63ec6b0df7f0..b7cfe3cfacb1 100644 --- a/gfx/tests/gtest/TestAsyncPanZoomController.cpp +++ b/gfx/tests/gtest/TestAsyncPanZoomController.cpp @@ -2551,6 +2551,25 @@ protected: manager->UpdateHitTestingTree(nullptr, root, false, 0, 0); rootApzc = ApzcOf(root); } + + void CreateBug1119497LayerTree() { + const char* layerTreeSyntax = "c(tt)"; + // LayerID 0 12 + // 0 is the root and doesn't have an APZC + // 1 is behind 2 and does have an APZC + // 2 entirely covers 1 and should take all the input events + nsIntRegion layerVisibleRegions[] = { + nsIntRegion(nsIntRect(0, 0, 100, 100)), + nsIntRegion(nsIntRect(0, 0, 100, 100)), + nsIntRegion(nsIntRect(0, 0, 100, 100)), + }; + root = CreateLayerTree(layerTreeSyntax, layerVisibleRegions, nullptr, lm, layers); + + SetScrollableFrameMetrics(layers[1], FrameMetrics::START_SCROLL_ID + 1); + + registration = MakeUnique(0, root, mcc); + manager->UpdateHitTestingTree(nullptr, root, false, 0, 0); + } }; TEST_F(APZEventRegionsTester, HitRegionImmediateResponse) { @@ -2643,6 +2662,19 @@ TEST_F(APZEventRegionsTester, Obscuration) { EXPECT_EQ(HitTestResult::ApzcHitRegion, result); } +TEST_F(APZEventRegionsTester, Bug1119497) { + SCOPED_GFX_PREF(LayoutEventRegionsEnabled, bool, true); + + CreateBug1119497LayerTree(); + + HitTestResult result; + nsRefPtr hit = manager->GetTargetAPZC(ScreenPoint(50, 50), &result); + // We should hit layers[2], so |result| will be ApzcHitRegion but there's no + // actual APZC in that parent chain, so |hit| should be nullptr. + EXPECT_EQ(nullptr, hit.get()); + EXPECT_EQ(HitTestResult::ApzcHitRegion, result); +} + class TaskRunMetrics { public: TaskRunMetrics() From 1a47ec5608773c2c3cfa7cdf7d094a284ae73fc6 Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Sat, 10 Jan 2015 10:55:47 -0500 Subject: [PATCH 04/34] Bug 1119497 - Rename the HitTestResult enum values in light of the new hit-test code. rs=botond --- gfx/layers/apz/src/APZCTreeManager.cpp | 60 +++++++++---------- gfx/layers/apz/src/APZUtils.h | 8 +-- gfx/layers/apz/src/HitTestingTreeNode.cpp | 10 ++-- .../gtest/TestAsyncPanZoomController.cpp | 6 +- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/gfx/layers/apz/src/APZCTreeManager.cpp b/gfx/layers/apz/src/APZCTreeManager.cpp index 392e5f4ddc82..a6c905bab30d 100644 --- a/gfx/layers/apz/src/APZCTreeManager.cpp +++ b/gfx/layers/apz/src/APZCTreeManager.cpp @@ -89,7 +89,7 @@ APZCTreeManager::CalculatePendingDisplayPort( APZCTreeManager::APZCTreeManager() : mInputQueue(new InputQueue()), mTreeLock("APZCTreeLock"), - mHitResultForInputBlock(NoApzcHit), + mHitResultForInputBlock(HitNothing), mRetainedTouchIdentifier(-1), mTouchCount(0), mApzcTreeLog("apzctree") @@ -561,7 +561,7 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, } nsEventStatus result = nsEventStatus_eIgnore; Matrix4x4 transformToApzc; - HitTestResult hitResult = NoApzcHit; + HitTestResult hitResult = HitNothing; switch (aEvent.mInputType) { case MULTITOUCH_INPUT: { MultiTouchInput& touchInput = aEvent.AsMultiTouchInput(); @@ -572,7 +572,7 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, nsRefPtr apzc = GetTargetAPZC(wheelInput.mOrigin, &hitResult); if (apzc) { - MOZ_ASSERT(hitResult == ApzcHitRegion || hitResult == ApzcContentRegion); + MOZ_ASSERT(hitResult == HitLayer || hitResult == HitDispatchToContentRegion); transformToApzc = GetScreenToApzcTransform(apzc); wheelInput.mLocalOrigin = @@ -580,7 +580,7 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, result = mInputQueue->ReceiveInputEvent( apzc, - /* aTargetConfirmed = */ hitResult == ApzcHitRegion, + /* aTargetConfirmed = */ hitResult == HitLayer, wheelInput, aOutInputBlockId); // Update the out-parameters so they are what the caller expects. @@ -595,7 +595,7 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, nsRefPtr apzc = GetTargetAPZC(panInput.mPanStartPoint, &hitResult); if (apzc) { - MOZ_ASSERT(hitResult == ApzcHitRegion || hitResult == ApzcContentRegion); + MOZ_ASSERT(hitResult == HitLayer || hitResult == HitDispatchToContentRegion); transformToApzc = GetScreenToApzcTransform(apzc); panInput.mLocalPanStartPoint = TransformTo( transformToApzc, panInput.mPanStartPoint); @@ -603,7 +603,7 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, transformToApzc, panInput.mPanDisplacement, panInput.mPanStartPoint); result = mInputQueue->ReceiveInputEvent( apzc, - /* aTargetConfirmed = */ hitResult == ApzcHitRegion, + /* aTargetConfirmed = */ hitResult == HitLayer, panInput, aOutInputBlockId); // Update the out-parameters so they are what the caller expects. @@ -620,13 +620,13 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, nsRefPtr apzc = GetTargetAPZC(pinchInput.mFocusPoint, &hitResult); if (apzc) { - MOZ_ASSERT(hitResult == ApzcHitRegion || hitResult == ApzcContentRegion); + MOZ_ASSERT(hitResult == HitLayer || hitResult == HitDispatchToContentRegion); transformToApzc = GetScreenToApzcTransform(apzc); pinchInput.mLocalFocusPoint = TransformTo( transformToApzc, pinchInput.mFocusPoint); result = mInputQueue->ReceiveInputEvent( apzc, - /* aTargetConfirmed = */ hitResult == ApzcHitRegion, + /* aTargetConfirmed = */ hitResult == HitLayer, pinchInput, aOutInputBlockId); // Update the out-parameters so they are what the caller expects. @@ -641,13 +641,13 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, nsRefPtr apzc = GetTargetAPZC(tapInput.mPoint, &hitResult); if (apzc) { - MOZ_ASSERT(hitResult == ApzcHitRegion || hitResult == ApzcContentRegion); + MOZ_ASSERT(hitResult == HitLayer || hitResult == HitDispatchToContentRegion); transformToApzc = GetScreenToApzcTransform(apzc); tapInput.mLocalPoint = TransformTo( transformToApzc, tapInput.mPoint); result = mInputQueue->ReceiveInputEvent( apzc, - /* aTargetConfirmed = */ hitResult == ApzcHitRegion, + /* aTargetConfirmed = */ hitResult == HitLayer, tapInput, aOutInputBlockId); // Update the out-parameters so they are what the caller expects. @@ -658,7 +658,7 @@ APZCTreeManager::ReceiveInputEvent(InputData& aEvent, break; } } - if (hitResult == OverscrolledApzc) { + if (hitResult == HitOverscrolledApzc) { result = nsEventStatus_eConsumeNoDefault; } return result; @@ -715,9 +715,9 @@ APZCTreeManager::ProcessTouchInput(MultiTouchInput& aInput, // NS_TOUCH_START event contains all active touches of the current // session thus resetting mTouchCount. mTouchCount = aInput.mTouches.Length(); - mHitResultForInputBlock = NoApzcHit; + mHitResultForInputBlock = HitNothing; nsRefPtr apzc = GetTouchInputBlockAPZC(aInput, &mHitResultForInputBlock); - // XXX the following check assumes mHitResultForInputBlock == ApzcHitRegion + // XXX the following check assumes mHitResultForInputBlock == HitLayer // (and that mApzcForInputBlock was the confirmed target of the previous // input block). Eventually it would be better to move this into InputQueue // and have it auto-generated when we start processing events in a new @@ -769,7 +769,7 @@ APZCTreeManager::ProcessTouchInput(MultiTouchInput& aInput, nsEventStatus result = nsEventStatus_eIgnore; if (mApzcForInputBlock) { - MOZ_ASSERT(mHitResultForInputBlock == ApzcHitRegion || mHitResultForInputBlock == ApzcContentRegion); + MOZ_ASSERT(mHitResultForInputBlock == HitLayer || mHitResultForInputBlock == HitDispatchToContentRegion); mApzcForInputBlock->GetGuid(aOutTargetGuid); // For computing the input for the APZC, used the cached transform. @@ -782,7 +782,7 @@ APZCTreeManager::ProcessTouchInput(MultiTouchInput& aInput, transformToApzc, ScreenPoint(touchData.mScreenPoint)); } result = mInputQueue->ReceiveInputEvent(mApzcForInputBlock, - /* aTargetConfirmed = */ mHitResultForInputBlock == ApzcHitRegion, + /* aTargetConfirmed = */ mHitResultForInputBlock == HitLayer, aInput, aOutInputBlockId); // For computing the event to pass back to Gecko, use the up-to-date transforms. @@ -797,7 +797,7 @@ APZCTreeManager::ProcessTouchInput(MultiTouchInput& aInput, outTransform, touchData.mScreenPoint); } } - if (mHitResultForInputBlock == OverscrolledApzc) { + if (mHitResultForInputBlock == HitOverscrolledApzc) { result = nsEventStatus_eConsumeNoDefault; } @@ -817,7 +817,7 @@ APZCTreeManager::ProcessTouchInput(MultiTouchInput& aInput, // don't keep dangling references and leak things. if (mTouchCount == 0) { mApzcForInputBlock = nullptr; - mHitResultForInputBlock = NoApzcHit; + mHitResultForInputBlock = HitNothing; mRetainedTouchIdentifier = -1; } @@ -848,18 +848,18 @@ APZCTreeManager::ProcessEvent(WidgetInputEvent& aEvent, // Transform the refPoint. // If the event hits an overscrolled APZC, instruct the caller to ignore it. - HitTestResult hitResult = NoApzcHit; + HitTestResult hitResult = HitNothing; nsRefPtr apzc = GetTargetAPZC(ScreenPoint(aEvent.refPoint.x, aEvent.refPoint.y), &hitResult); if (apzc) { - MOZ_ASSERT(hitResult == ApzcHitRegion || hitResult == ApzcContentRegion); + MOZ_ASSERT(hitResult == HitLayer || hitResult == HitDispatchToContentRegion); apzc->GetGuid(aOutTargetGuid); Matrix4x4 transformToApzc = GetScreenToApzcTransform(apzc); Matrix4x4 transformToGecko = GetApzcToGeckoTransform(apzc); Matrix4x4 outTransform = transformToApzc * transformToGecko; aEvent.refPoint = TransformTo(outTransform, aEvent.refPoint); } - if (hitResult == OverscrolledApzc) { + if (hitResult == HitOverscrolledApzc) { result = nsEventStatus_eConsumeNoDefault; } return result; @@ -1215,13 +1215,13 @@ already_AddRefed APZCTreeManager::GetTargetAPZC(const ScreenPoint& aPoint, HitTestResult* aOutHitResult) { MonitorAutoLock lock(mTreeLock); - HitTestResult hitResult = NoApzcHit; + HitTestResult hitResult = HitNothing; ParentLayerPoint point = ViewAs(aPoint, PixelCastJustification::ScreenIsParentLayerForRoot); nsRefPtr target = GetAPZCAtPoint(mRootNode, point, &hitResult); // If we are in an overscrolled APZC, we should be returning nullptr. - MOZ_ASSERT(!(target && (hitResult == OverscrolledApzc))); + MOZ_ASSERT(!(target && (hitResult == HitOverscrolledApzc))); if (aOutHitResult) { *aOutHitResult = hitResult; } @@ -1366,25 +1366,25 @@ APZCTreeManager::GetAPZCAtPoint(HitTestingTreeNode* aNode, ParentLayerPoint childPoint = ViewAs(hitTestPointForChildLayers.ref(), PixelCastJustification::MovingDownToChildren); result = GetAPZCAtPoint(node->GetLastChild(), childPoint, aOutHitResult); - if (*aOutHitResult == OverscrolledApzc) { + if (*aOutHitResult == HitOverscrolledApzc) { // We matched an overscrolled APZC, abort. return nullptr; } } // If we didn't match anything in the subtree, check |node|. - if (*aOutHitResult == NoApzcHit) { + if (*aOutHitResult == HitNothing) { APZCTM_LOG("Testing ParentLayer point %s (Layer %s) against node %p\n", Stringify(aHitTestPoint).c_str(), hitTestPointForChildLayers ? Stringify(hitTestPointForChildLayers.ref()).c_str() : "nil", node); HitTestResult hitResult = node->HitTest(aHitTestPoint); - if (hitResult != HitTestResult::NoApzcHit) { + if (hitResult != HitTestResult::HitNothing) { result = node->GetNearestContainingApzc(); APZCTM_LOG("Successfully matched APZC %p via node %p (hit result %d)\n", result, node, hitResult); - MOZ_ASSERT(hitResult == ApzcHitRegion || hitResult == ApzcContentRegion); - // If event regions are disabled, *aOutHitResult will be ApzcHitRegion + MOZ_ASSERT(hitResult == HitLayer || hitResult == HitDispatchToContentRegion); + // If event regions are disabled, *aOutHitResult will be HitLayer *aOutHitResult = hitResult; } } @@ -1392,13 +1392,13 @@ APZCTreeManager::GetAPZCAtPoint(HitTestingTreeNode* aNode, // If we are overscrolled, and the point matches us or one of our children, // the result is inside an overscrolled APZC, inform our caller of this // (callers typically ignore events targeted at overscrolled APZCs). - if (*aOutHitResult != NoApzcHit && apzc && apzc->IsOverscrolled()) { + if (*aOutHitResult != HitNothing && apzc && apzc->IsOverscrolled()) { APZCTM_LOG("Result is inside overscrolled APZC %p\n", apzc); - *aOutHitResult = OverscrolledApzc; + *aOutHitResult = HitOverscrolledApzc; return nullptr; } - if (*aOutHitResult != NoApzcHit) { + if (*aOutHitResult != HitNothing) { if (result && !gfxPrefs::LayoutEventRegionsEnabled()) { // When event-regions are disabled, we treat scrollinfo layers as // regular scrollable layers. Unfortunately, their "hit region" (which diff --git a/gfx/layers/apz/src/APZUtils.h b/gfx/layers/apz/src/APZUtils.h index 43e36ac0e6e0..b60347d549c6 100644 --- a/gfx/layers/apz/src/APZUtils.h +++ b/gfx/layers/apz/src/APZUtils.h @@ -11,10 +11,10 @@ namespace mozilla { namespace layers { enum HitTestResult { - NoApzcHit, - ApzcHitRegion, - ApzcContentRegion, - OverscrolledApzc, + HitNothing, + HitLayer, + HitDispatchToContentRegion, + HitOverscrolledApzc, }; } diff --git a/gfx/layers/apz/src/HitTestingTreeNode.cpp b/gfx/layers/apz/src/HitTestingTreeNode.cpp index 9870d72cbdeb..0e7bb1b6b9fe 100644 --- a/gfx/layers/apz/src/HitTestingTreeNode.cpp +++ b/gfx/layers/apz/src/HitTestingTreeNode.cpp @@ -195,24 +195,24 @@ HitTestingTreeNode::HitTest(const ParentLayerPoint& aPoint) const // If there's no APZC, then we do need to check against the mEventRegions // (which contains the layer's visible region) for obscuration purposes. if (!gfxPrefs::LayoutEventRegionsEnabled() && GetApzc()) { - return HitTestResult::ApzcHitRegion; + return HitTestResult::HitLayer; } // convert into Layer coordinate space Maybe pointInLayerPixels = Untransform(aPoint); if (!pointInLayerPixels) { - return HitTestResult::NoApzcHit; + return HitTestResult::HitNothing; } LayerIntPoint point = RoundedToInt(pointInLayerPixels.ref()); // test against event regions in Layer coordinate space if (!mEventRegions.mHitRegion.Contains(point.x, point.y)) { - return HitTestResult::NoApzcHit; + return HitTestResult::HitNothing; } if (mEventRegions.mDispatchToContentHitRegion.Contains(point.x, point.y)) { - return HitTestResult::ApzcContentRegion; + return HitTestResult::HitDispatchToContentRegion; } - return HitTestResult::ApzcHitRegion; + return HitTestResult::HitLayer; } void diff --git a/gfx/tests/gtest/TestAsyncPanZoomController.cpp b/gfx/tests/gtest/TestAsyncPanZoomController.cpp index b7cfe3cfacb1..8b02a323d4ee 100644 --- a/gfx/tests/gtest/TestAsyncPanZoomController.cpp +++ b/gfx/tests/gtest/TestAsyncPanZoomController.cpp @@ -2659,7 +2659,7 @@ TEST_F(APZEventRegionsTester, Obscuration) { HitTestResult result; nsRefPtr hit = manager->GetTargetAPZC(ScreenPoint(50, 75), &result); EXPECT_EQ(child, hit.get()); - EXPECT_EQ(HitTestResult::ApzcHitRegion, result); + EXPECT_EQ(HitTestResult::HitLayer, result); } TEST_F(APZEventRegionsTester, Bug1119497) { @@ -2669,10 +2669,10 @@ TEST_F(APZEventRegionsTester, Bug1119497) { HitTestResult result; nsRefPtr hit = manager->GetTargetAPZC(ScreenPoint(50, 50), &result); - // We should hit layers[2], so |result| will be ApzcHitRegion but there's no + // We should hit layers[2], so |result| will be HitLayer but there's no // actual APZC in that parent chain, so |hit| should be nullptr. EXPECT_EQ(nullptr, hit.get()); - EXPECT_EQ(HitTestResult::ApzcHitRegion, result); + EXPECT_EQ(HitTestResult::HitLayer, result); } class TaskRunMetrics { From c143735e60e8739a49ace527fa4089e865f82fec Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 07:58:46 -0800 Subject: [PATCH 05/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/9d44eeb28381 Author: Kevin Grandon Desc: Merge pull request #27290 from takenspc/bug1120052 Bug 1120052 - Reduce number of jshint xfail files on apps/sharedtest r=kgrandon ======== https://hg.mozilla.org/integration/gaia-central/rev/64622892bb19 Author: Takeshi Kurosawa Desc: Bug 1120052 - Reduce number of jshint xfail files on apps/sharedtest - `headCount` of lazy_l10n_test.js is not needed after Bug 892880 was landed --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 2f18e00597c0..82d49aa76131 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "2060479b94534e602ee619e6446db0b3436fe263", + "revision": "9d44eeb2838158fa9ee7fd5faff6a8422f10ce7d", "repo_path": "integration/gaia-central" } From 2284fca99335574966d39100b3f20ab5bab3dd6c Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 07:59:03 -0800 Subject: [PATCH 06/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 321eb28b7736..392f45111779 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 798ba65ccfd0..837be5b56eeb 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index b35169ba5c58..82115c27c5b9 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 710c2dbead4b..76ddbed42677 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 798ba65ccfd0..837be5b56eeb 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index df78fe5e61e5..4a4ae1d9bf3b 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index aad9bb04542e..10c09a16e654 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index c2c571f10e17..895617a33e59 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 9ba260123e4c..4a80f1d4a408 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 811155de9e8a..3d955b6f58f3 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 8a0db4d78fc3..f72d03f7afeb 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From bb68b7de05bccb8446655e4faba3e2fd2a552a90 Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Sat, 10 Jan 2015 13:54:24 -0500 Subject: [PATCH 07/34] Bug 920036 - Move ToWidgetMouseEvent into MultiTouchInput. r=mwu --- widget/InputData.cpp | 42 ++++++++++++++++++++++++++ widget/InputData.h | 1 + widget/gonk/GeckoTouchDispatcher.cpp | 45 +--------------------------- widget/gonk/GeckoTouchDispatcher.h | 1 - 4 files changed, 44 insertions(+), 45 deletions(-) diff --git a/widget/InputData.cpp b/widget/InputData.cpp index 06798b5c3153..9ffd8caf0582 100644 --- a/widget/InputData.cpp +++ b/widget/InputData.cpp @@ -115,6 +115,48 @@ MultiTouchInput::ToWidgetTouchEvent(nsIWidget* aWidget) const return event; } +WidgetMouseEvent +MultiTouchInput::ToWidgetMouseEvent(nsIWidget* aWidget) const +{ + NS_ABORT_IF_FALSE(NS_IsMainThread(), + "Can only convert To WidgetMouseEvent on main thread"); + + uint32_t mouseEventType = NS_EVENT_NULL; + switch (mType) { + case MultiTouchInput::MULTITOUCH_START: + mouseEventType = NS_MOUSE_BUTTON_DOWN; + break; + case MultiTouchInput::MULTITOUCH_MOVE: + mouseEventType = NS_MOUSE_MOVE; + break; + case MultiTouchInput::MULTITOUCH_CANCEL: + case MultiTouchInput::MULTITOUCH_END: + mouseEventType = NS_MOUSE_BUTTON_UP; + break; + default: + MOZ_ASSERT_UNREACHABLE("Did not assign a type to WidgetMouseEvent"); + break; + } + + WidgetMouseEvent event(true, mouseEventType, aWidget, + WidgetMouseEvent::eReal, WidgetMouseEvent::eNormal); + + const SingleTouchData& firstTouch = mTouches[0]; + event.refPoint.x = firstTouch.mScreenPoint.x; + event.refPoint.y = firstTouch.mScreenPoint.y; + + event.time = mTime; + event.button = WidgetMouseEvent::eLeftButton; + event.inputSource = nsIDOMMouseEvent::MOZ_SOURCE_TOUCH; + event.modifiers = modifiers; + + if (mouseEventType != NS_MOUSE_MOVE) { + event.clickCount = 1; + } + + return event; +} + // This conversion from WidgetMouseEvent to MultiTouchInput is needed because on // the B2G emulator we can only receive mouse events, but we need to be able // to pan correctly. To do this, we convert the events into a format that the diff --git a/widget/InputData.h b/widget/InputData.h index c58eb1420834..40fe4d1f0dda 100644 --- a/widget/InputData.h +++ b/widget/InputData.h @@ -216,6 +216,7 @@ public: explicit MultiTouchInput(const WidgetTouchEvent& aTouchEvent); WidgetTouchEvent ToWidgetTouchEvent(nsIWidget* aWidget) const; + WidgetMouseEvent ToWidgetMouseEvent(nsIWidget* aWidget) const; // This conversion from WidgetMouseEvent to MultiTouchInput is needed because // on the B2G emulator we can only receive mouse events, but we need to be diff --git a/widget/gonk/GeckoTouchDispatcher.cpp b/widget/gonk/GeckoTouchDispatcher.cpp index e7d0e8e0c20d..daae658e9ace 100644 --- a/widget/gonk/GeckoTouchDispatcher.cpp +++ b/widget/gonk/GeckoTouchDispatcher.cpp @@ -339,7 +339,7 @@ void GeckoTouchDispatcher::DispatchMouseEvent(MultiTouchInput& aMultiTouch, bool aForwardToChildren) { - WidgetMouseEvent mouseEvent = ToWidgetMouseEvent(aMultiTouch, nullptr); + WidgetMouseEvent mouseEvent = aMultiTouch.ToWidgetMouseEvent(nullptr); if (mouseEvent.message == NS_EVENT_NULL) { return; } @@ -402,47 +402,4 @@ GeckoTouchDispatcher::DispatchTouchEvent(MultiTouchInput& aMultiTouch) } } -WidgetMouseEvent -GeckoTouchDispatcher::ToWidgetMouseEvent(const MultiTouchInput& aMultiTouch, - nsIWidget* aWidget) const -{ - NS_ABORT_IF_FALSE(NS_IsMainThread(), - "Can only convert To WidgetMouseEvent on main thread"); - - uint32_t mouseEventType = NS_EVENT_NULL; - switch (aMultiTouch.mType) { - case MultiTouchInput::MULTITOUCH_START: - mouseEventType = NS_MOUSE_BUTTON_DOWN; - break; - case MultiTouchInput::MULTITOUCH_MOVE: - mouseEventType = NS_MOUSE_MOVE; - break; - case MultiTouchInput::MULTITOUCH_CANCEL: - case MultiTouchInput::MULTITOUCH_END: - mouseEventType = NS_MOUSE_BUTTON_UP; - break; - default: - MOZ_ASSERT_UNREACHABLE("Did not assign a type to WidgetMouseEvent"); - break; - } - - WidgetMouseEvent event(true, mouseEventType, aWidget, - WidgetMouseEvent::eReal, WidgetMouseEvent::eNormal); - - const SingleTouchData& firstTouch = aMultiTouch.mTouches[0]; - event.refPoint.x = firstTouch.mScreenPoint.x; - event.refPoint.y = firstTouch.mScreenPoint.y; - - event.time = aMultiTouch.mTime; - event.button = WidgetMouseEvent::eLeftButton; - event.inputSource = nsIDOMMouseEvent::MOZ_SOURCE_TOUCH; - event.modifiers = aMultiTouch.modifiers; - - if (mouseEventType != NS_MOUSE_MOVE) { - event.clickCount = 1; - } - - return event; -} - } // namespace mozilla diff --git a/widget/gonk/GeckoTouchDispatcher.h b/widget/gonk/GeckoTouchDispatcher.h index 8ff920f04038..dd1be82d16bc 100644 --- a/widget/gonk/GeckoTouchDispatcher.h +++ b/widget/gonk/GeckoTouchDispatcher.h @@ -60,7 +60,6 @@ private: void SendTouchEvent(MultiTouchInput& aData); void DispatchMouseEvent(MultiTouchInput& aMultiTouch, bool aForwardToChildren); - WidgetMouseEvent ToWidgetMouseEvent(const MultiTouchInput& aData, nsIWidget* aWidget) const; // mTouchQueueLock are used to protect the vector below // as it is accessed on the vsync thread and main thread From e2d152069e92bd27f3a0c0d9afeb5379890751c7 Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Sat, 10 Jan 2015 13:54:24 -0500 Subject: [PATCH 08/34] Bug 920036 - Send touch inputs through the APZ before sending them to the gecko thread. r=mwu,dvander,smaug --- dom/ipc/TabParent.cpp | 6 +- widget/gonk/GeckoTouchDispatcher.cpp | 25 +------- widget/gonk/nsWindow.cpp | 87 +++++++++++++++++++++++----- widget/gonk/nsWindow.h | 6 +- 4 files changed, 83 insertions(+), 41 deletions(-) diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp index aab4d5d5cc83..7559b5865672 100644 --- a/dom/ipc/TabParent.cpp +++ b/dom/ipc/TabParent.cpp @@ -2177,7 +2177,11 @@ TabParent::MaybeForwardEventToRenderFrame(WidgetInputEvent& aEvent, ScrollableLayerGuid* aOutTargetGuid, uint64_t* aOutInputBlockId) { - if (aEvent.mClass == eWheelEventClass) { + if (aEvent.mClass == eWheelEventClass +#ifdef MOZ_WIDGET_GONK + || aEvent.mClass == eTouchEventClass +#endif + ) { // Wheel events must be sent to APZ directly from the widget. New APZ- // aware events should follow suit and move there as well. However, we // do need to inform the child process of the correct target and block diff --git a/widget/gonk/GeckoTouchDispatcher.cpp b/widget/gonk/GeckoTouchDispatcher.cpp index daae658e9ace..77f48b6b6100 100644 --- a/widget/gonk/GeckoTouchDispatcher.cpp +++ b/widget/gonk/GeckoTouchDispatcher.cpp @@ -24,7 +24,6 @@ #include "gfxPrefs.h" #include "libui/Input.h" #include "mozilla/ClearOnShutdown.h" -#include "mozilla/MouseEvents.h" #include "mozilla/Mutex.h" #include "mozilla/TimeStamp.h" #include "mozilla/TouchEvents.h" @@ -333,21 +332,6 @@ GeckoTouchDispatcher::ResampleTouchMoves(MultiTouchInput& aOutTouch, TimeStamp a aOutTouch.mTimeStamp = sampleTime; } -// Some touch events get sent as mouse events. If APZ doesn't capture the event -// and if a touch only has 1 touch input, we can send a mouse event. -void -GeckoTouchDispatcher::DispatchMouseEvent(MultiTouchInput& aMultiTouch, - bool aForwardToChildren) -{ - WidgetMouseEvent mouseEvent = aMultiTouch.ToWidgetMouseEvent(nullptr); - if (mouseEvent.message == NS_EVENT_NULL) { - return; - } - - mouseEvent.mFlags.mNoCrossProcessBoundaryForwarding = !aForwardToChildren; - nsWindow::DispatchInputEvent(mouseEvent); -} - static bool IsExpired(const MultiTouchInput& aTouch) { @@ -372,9 +356,7 @@ GeckoTouchDispatcher::DispatchTouchEvent(MultiTouchInput& aMultiTouch) return; } - bool captured = false; - WidgetTouchEvent event = aMultiTouch.ToWidgetTouchEvent(nullptr); - nsEventStatus status = nsWindow::DispatchInputEvent(event, &captured); + nsWindow::DispatchTouchInput(aMultiTouch); if (mEnabledUniformityInfo && profiler_is_active()) { const char* touchAction = "Invalid"; @@ -395,11 +377,6 @@ GeckoTouchDispatcher::DispatchTouchEvent(MultiTouchInput& aMultiTouch) TouchDataPayload* payload = new TouchDataPayload(touchPoint); PROFILER_MARKER_PAYLOAD(touchAction, payload); } - - if (!captured && (aMultiTouch.mTouches.Length() == 1)) { - bool forwardToChildren = status != nsEventStatus_eConsumeNoDefault; - DispatchMouseEvent(aMultiTouch, forwardToChildren); - } } } // namespace mozilla diff --git a/widget/gonk/nsWindow.cpp b/widget/gonk/nsWindow.cpp index 57a40f0febe6..a394dbbf68e4 100644 --- a/widget/gonk/nsWindow.cpp +++ b/widget/gonk/nsWindow.cpp @@ -47,6 +47,9 @@ #include "mozilla/gfx/2D.h" #include "mozilla/layers/APZCTreeManager.h" #include "mozilla/layers/CompositorParent.h" +#include "mozilla/layers/InputAPZContext.h" +#include "mozilla/MouseEvents.h" +#include "mozilla/TouchEvents.h" #include "nsThreadUtils.h" #include "HwcComposer2D.h" @@ -227,33 +230,89 @@ nsWindow::NotifyVsync(TimeStamp aVsyncTimestamp) } } -nsEventStatus -nsWindow::DispatchInputEvent(WidgetGUIEvent& aEvent, bool* aWasCaptured) +/*static*/ nsEventStatus +nsWindow::DispatchInputEvent(WidgetGUIEvent& aEvent) { - if (aWasCaptured) { - *aWasCaptured = false; - } if (!gFocusedWindow) { return nsEventStatus_eIgnore; } gFocusedWindow->UserActivity(); + nsEventStatus status; aEvent.widget = gFocusedWindow; + gFocusedWindow->DispatchEvent(&aEvent, status); + return status; +} +/*static*/ void +nsWindow::DispatchTouchInput(MultiTouchInput& aInput) +{ + if (!gFocusedWindow) { + return; + } + + gFocusedWindow->UserActivity(); + gFocusedWindow->DispatchTouchInputViaAPZ(aInput); +} + +void +nsWindow::DispatchTouchInputViaAPZ(MultiTouchInput& aInput) +{ + if (!mAPZC) { + // In general mAPZC should not be null, but during initial setup + // it might be, so we handle that case by ignoring touch input there. + return; + } + + // First send it through the APZ code + mozilla::layers::ScrollableLayerGuid guid; + uint64_t inputBlockId; + nsEventStatus rv = mAPZC->ReceiveInputEvent(aInput, &guid, &inputBlockId); + // If the APZ says to drop it, then we drop it + if (rv == nsEventStatus_eConsumeNoDefault) { + return; + } + + // Convert it to an event we can send to Gecko + WidgetTouchEvent event = aInput.ToWidgetTouchEvent(this); + + // If there is an event capturing child process, send it directly there. + // This happens if we already sent a touchstart event through the root + // process hit test and it ended up going to a child process. The event + // capturing process should get all subsequent touch events in the same + // event block. In this case the TryCapture call below will return true, + // and the child process will take care of responding to the event as needed + // so we don't need to do anything else here. if (TabParent* capturer = TabParent::GetEventCapturer()) { - bool captured = capturer->TryCapture(aEvent); - if (aWasCaptured) { - *aWasCaptured = captured; - } - if (captured) { - return nsEventStatus_eConsumeNoDefault; + InputAPZContext context(guid, inputBlockId); + if (capturer->TryCapture(event)) { + return; } } - nsEventStatus status; - gFocusedWindow->DispatchEvent(&aEvent, status); - return status; + // If it didn't get captured, dispatch the event into the gecko root process + // for "normal" flow. The event might get sent to the child process still, + // but if it doesn't we need to notify the APZ of various things. All of + // that happens in DispatchEventForAPZ + rv = DispatchEventForAPZ(&event, guid, inputBlockId); + + // Finally, if the touch event had only one touch point, generate a mouse + // event for it and send it through the gecko root process. + // Technically we should not need to do this if the touch event was routed + // to the child process, but that seems to expose a bug in B2G where the + // keyboard doesn't go away in some cases. + // Also for now we're dispatching mouse events from all touch events because + // we need this for click events to work in the chrome process. Once we have + // APZ and ChromeProcessController::HandleSingleTap working for the chrome + // process we shouldn't need to do this at all. + if (event.touches.Length() == 1) { + WidgetMouseEvent mouseEvent = aInput.ToWidgetMouseEvent(this); + if (mouseEvent.message != NS_EVENT_NULL) { + mouseEvent.mFlags.mNoCrossProcessBoundaryForwarding = (rv == nsEventStatus_eConsumeNoDefault); + DispatchEvent(&mouseEvent, rv); + } + } } NS_IMETHODIMP diff --git a/widget/gonk/nsWindow.h b/widget/gonk/nsWindow.h index a906131782f9..67d7529a8438 100644 --- a/widget/gonk/nsWindow.h +++ b/widget/gonk/nsWindow.h @@ -16,6 +16,7 @@ #ifndef nsWindow_h #define nsWindow_h +#include "InputData.h" #include "nsBaseWidget.h" #include "nsRegion.h" #include "nsIIdleServiceInternal.h" @@ -51,8 +52,8 @@ public: static void NotifyVsync(mozilla::TimeStamp aVsyncTimestamp); static void DoDraw(void); - static nsEventStatus DispatchInputEvent(mozilla::WidgetGUIEvent& aEvent, - bool* aWasCaptured = nullptr); + static nsEventStatus DispatchInputEvent(mozilla::WidgetGUIEvent& aEvent); + static void DispatchTouchInput(mozilla::MultiTouchInput& aInput); NS_IMETHOD Create(nsIWidget *aParent, void *aNativeParent, @@ -87,6 +88,7 @@ public: return NS_OK; } virtual nsIntPoint WidgetToScreenOffset(); + void DispatchTouchInputViaAPZ(mozilla::MultiTouchInput& aInput); NS_IMETHOD DispatchEvent(mozilla::WidgetGUIEvent* aEvent, nsEventStatus& aStatus); NS_IMETHOD CaptureRollupEvents(nsIRollupListener *aListener, From 52f704855711ad6bdcac78536145110a331c03a0 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 14:02:16 -0800 Subject: [PATCH 09/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/ff5ba65326b4 Author: Zibi Braniecki Desc: Merge pull request #27050 from ddrmanxbxfr/bug_1078212 Bug 1078212 - Use the shared mock_l10n in Homescreen. r=crdlc, stas ======== https://hg.mozilla.org/integration/gaia-central/rev/3e6f21b3534e Author: Mathieu Rhéaume Desc: Bug 1078212 - Use the shared mock_l10n in Homescreen --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 82d49aa76131..3495d37adf0f 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "9d44eeb2838158fa9ee7fd5faff6a8422f10ce7d", + "revision": "ff5ba65326b48a0ecd2137d448d73790daa274a4", "repo_path": "integration/gaia-central" } From 11548e91e7e04bc64d268e1f378671d86cc3c9af Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 14:11:56 -0800 Subject: [PATCH 10/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 392f45111779..d109740c162c 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 837be5b56eeb..3cfc646d4941 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 82115c27c5b9..54b1130621b0 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 76ddbed42677..ceec504c3006 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 837be5b56eeb..3cfc646d4941 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 4a4ae1d9bf3b..a34fb91e8a34 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 10c09a16e654..bb2805f342ed 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 895617a33e59..e0a5f2572f48 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 4a80f1d4a408..ac55e2f8351f 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 3d955b6f58f3..7daddc3439e8 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index f72d03f7afeb..170429970d2a 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 10b13ff557c1ecdce06f18d8ba559c3798e61260 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20Desr=C3=A9?= Date: Sat, 10 Jan 2015 15:00:27 -0800 Subject: [PATCH 11/34] Bug 1108096 - Langpack support for b2g/gaia r=ferjm,sicking --- dom/apps/AppsServiceChild.jsm | 9 + dom/apps/AppsUtils.jsm | 23 +- dom/apps/Langpacks.jsm | 315 ++++++++++++++++++ dom/apps/Webapps.js | 94 +++++- dom/apps/Webapps.jsm | 22 +- dom/apps/moz.build | 1 + dom/apps/tests/langpack/event.html | 28 ++ dom/apps/tests/langpack/fr/app.json | 1 + dom/apps/tests/langpack/fr/app.properties | 1 + dom/apps/tests/langpack/index.html | 16 + dom/apps/tests/langpack/lang1.webapp | 14 + dom/apps/tests/langpack/lang1.webapp^headers^ | 1 + dom/apps/tests/langpack/lang2.webapp | 21 ++ dom/apps/tests/langpack/lang2.webapp^headers^ | 1 + dom/apps/tests/langpack/manifest.webapp | 3 + .../tests/langpack/manifest.webapp^headers^ | 1 + dom/apps/tests/langpack/resources.html | 92 +++++ dom/apps/tests/mochitest.ini | 2 + dom/apps/tests/test_langpacks.html | 221 ++++++++++++ dom/tests/mochitest/webapps/test_list_api.xul | 2 + dom/webidl/Apps.webidl | 41 ++- 21 files changed, 890 insertions(+), 19 deletions(-) create mode 100644 dom/apps/Langpacks.jsm create mode 100644 dom/apps/tests/langpack/event.html create mode 100644 dom/apps/tests/langpack/fr/app.json create mode 100644 dom/apps/tests/langpack/fr/app.properties create mode 100644 dom/apps/tests/langpack/index.html create mode 100644 dom/apps/tests/langpack/lang1.webapp create mode 100644 dom/apps/tests/langpack/lang1.webapp^headers^ create mode 100644 dom/apps/tests/langpack/lang2.webapp create mode 100644 dom/apps/tests/langpack/lang2.webapp^headers^ create mode 100644 dom/apps/tests/langpack/manifest.webapp create mode 100644 dom/apps/tests/langpack/manifest.webapp^headers^ create mode 100644 dom/apps/tests/langpack/resources.html create mode 100644 dom/apps/tests/test_langpacks.html diff --git a/dom/apps/AppsServiceChild.jsm b/dom/apps/AppsServiceChild.jsm index 7b5d3bd366ff..86816225227e 100644 --- a/dom/apps/AppsServiceChild.jsm +++ b/dom/apps/AppsServiceChild.jsm @@ -354,6 +354,15 @@ this.DOMApplicationRegistry = { aCallback(res); }, + getAdditionalLanguages: function(aManifestURL) { + for (let id in this.webapps) { + if (this.webapps[id].manifestURL == aManifestURL) { + return this.webapps[id].additionalLanguages || {}; + } + } + return {}; + }, + /** * nsIAppsService API */ diff --git a/dom/apps/AppsUtils.jsm b/dom/apps/AppsUtils.jsm index 1c11dea0d04c..4dce2950d25d 100644 --- a/dom/apps/AppsUtils.jsm +++ b/dom/apps/AppsUtils.jsm @@ -22,6 +22,10 @@ XPCOMUtils.defineLazyModuleGetter(this, "WebappOSUtils", XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); +XPCOMUtils.defineLazyServiceGetter(this, "appsService", + "@mozilla.org/AppsService;1", + "nsIAppsService"); + // Shared code for AppsServiceChild.jsm, TrustedHostedAppsUtils.jsm, // Webapps.jsm and Webapps.js @@ -485,6 +489,7 @@ this.AppsUtils = { * Checks if the app role is allowed: * Only certified apps can be themes. * Only privileged or certified apps can be addons. + * Langpacks need to be privileged. * @param aRole : the role assigned to this app. * @param aStatus : the APP_STATUS_* for this app. */ @@ -492,6 +497,13 @@ this.AppsUtils = { if (aRole == "theme" && aStatus !== Ci.nsIPrincipal.APP_STATUS_CERTIFIED) { return false; } + if (aRole == "langpack" && aStatus !== Ci.nsIPrincipal.APP_STATUS_PRIVILEGED) { + let allow = false; + try { + allow = Services.prefs.getBoolPref("dom.apps.allow_unsigned_langpacks"); + } catch(e) {} + return allow; + } if (!this.allowUnsignedAddons && (aRole == "addon" && aStatus !== Ci.nsIPrincipal.APP_STATUS_CERTIFIED && @@ -732,7 +744,16 @@ this.AppsUtils = { // Returns the hash for a JS object. computeObjectHash: function(aObject) { return this.computeHash(JSON.stringify(aObject)); - } + }, + + getAppManifestURLFromWindow: function(aWindow) { + let appId = aWindow.document.nodePrincipal.appId; + if (appId === Ci.nsIScriptSecurityManager.NO_APP_ID) { + return null; + } + + return appsService.getManifestURLByLocalId(appId); + }, } /** diff --git a/dom/apps/Langpacks.jsm b/dom/apps/Langpacks.jsm new file mode 100644 index 000000000000..2b281abe1c4d --- /dev/null +++ b/dom/apps/Langpacks.jsm @@ -0,0 +1,315 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const Cu = Components.utils; +const Cc = Components.classes; +const Ci = Components.interfaces; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/AppsUtils.jsm"); + +XPCOMUtils.defineLazyServiceGetter(this, "ppmm", + "@mozilla.org/parentprocessmessagemanager;1", + "nsIMessageBroadcaster"); + +this.EXPORTED_SYMBOLS = ["Langpacks"]; + +let debug = Services.prefs.getBoolPref("dom.mozApps.debug") + ? (aMsg) => { + dump("-*-*- Langpacks: " + aMsg + "\n"); + } + : (aMsg) => {}; + +/** + * Langpack support + * + * Manifest format is: + * + * "languages-target" : { "app://*.gaiamobile.org/manifest.webapp": "2.2" }, + * "languages-provided": { + * "de": { + * "version": 201411051234, + * "name": "Deutsch", + * "apps": { + * "app://calendar.gaiamobile.org/manifest.webapp": "/de/calendar", + * "app://email.gaiamobile.org/manifest.webapp": "/de/email" + * } + * }, + * "role" : "langpack" + */ + +this.Langpacks = { + + _data: {}, + _broadcaster: null, + _appIdFromManifestURL: null, + + init: function() { + ppmm.addMessageListener("Webapps:GetLocalizationResource", this); + }, + + registerRegistryFunctions: function(aBroadcaster, aIdGetter) { + this._broadcaster = aBroadcaster; + this._appIdFromManifestURL = aIdGetter; + }, + + receiveMessage: function(aMessage) { + let data = aMessage.data; + let mm = aMessage.target; + switch (aMessage.name) { + case "Webapps:GetLocalizationResource": + this.getLocalizationResource(data, mm); + break; + default: + debug("Unexpected message: " + aMessage.name); + } + }, + + getAdditionalLanguages: function(aManifestURL) { + debug("getAdditionalLanguages " + aManifestURL); + let res = { langs: {} }; + let langs = res.langs; + if (this._data[aManifestURL]) { + res.appId = this._data[aManifestURL].appId; + for (let lang in this._data[aManifestURL].langs) { + if (!langs[lang]) { + langs[lang] = []; + } + let current = this._data[aManifestURL].langs[lang]; + langs[lang].push({ + version: current.version, + name: current.name, + target: current.target + }); + } + } + debug("Languages found: " + uneval(res)); + return res; + }, + + sendAppUpdate: function(aManifestURL) { + debug("sendAppUpdate " + aManifestURL); + if (!this._broadcaster) { + debug("No broadcaster!"); + return; + } + + let res = this.getAdditionalLanguages(aManifestURL); + let message = { + id: res.appId, + app: { + additionalLanguages: res.langs + } + } + this._broadcaster("Webapps:UpdateState", message); + }, + + getLocalizationResource: function(aData, aMm) { + debug("getLocalizationResource " + uneval(aData)); + + function sendError(aMsg, aCode) { + debug(aMsg); + aMm.sendAsyncMessage("Webapps:GetLocalizationResource:Return", + { requestID: aData.requestID, oid: aData.oid, error: aCode }); + } + + // No langpack available for this app. + if (!this._data[aData.manifestURL]) { + return sendError("No langpack for this app.", "NoLangpack"); + } + + // We have langpack(s) for this app, but not for this language. + if (!this._data[aData.manifestURL].langs[aData.lang]) { + return sendError("No language " + aData.lang + " for this app.", + "UnavailableLanguage"); + } + + // Check that we have the right version. + let item = this._data[aData.manifestURL].langs[aData.lang]; + if (item.target != aData.version) { + return sendError("No version " + aData.version + " for this app.", + "UnavailableVersion"); + } + + // The path can't be an absolute uri. + if (isAbsoluteURI(aData.path)) { + return sendError("url can't be absolute.", "BadUrl"); + } + + let href = item.url + aData.path; + debug("Will load " + href); + + let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] + .createInstance(Ci.nsIXMLHttpRequest); + xhr.mozBackgroundRequest = true; + xhr.open("GET", href); + + // Default to text response type, but the webidl binding takes care of + // validating the dataType value. + xhr.responseType = "text"; + if (aData.dataType === "json") { + xhr.responseType = "json"; + } else if (aData.dataType === "binary") { + xhr.responseType = "blob"; + } + + xhr.addEventListener("load", function() { + debug("Success loading " + href); + if (xhr.status >= 200 && xhr.status < 400) { + aMm.sendAsyncMessage("Webapps:GetLocalizationResource:Return", + { requestID: aData.requestID, oid: aData.oid, data: xhr.response }); + } else { + sendError("Error loading " + href, "UnavailableResource"); + } + }); + xhr.addEventListener("error", function() { + sendError("Error loading " + href, "UnavailableResource"); + }); + xhr.send(null); + }, + + // Validates the langpack part of a manifest. + checkManifest: function(aManifest) { + if (!("languages-target" in aManifest)) { + debug("Error: no 'languages-target' property.") + return false; + } + + if (!("languages-provided" in aManifest)) { + debug("Error: no 'languages-provided' property.") + return false; + } + + for (let lang in aManifest["languages-provided"]) { + let item = aManifest["languages-provided"][lang]; + + if (!item.version) { + debug("Error: missing 'version' in languages-provided." + lang); + return false; + } + + if (typeof item.version !== "number") { + debug("Error: languages-provided." + lang + + ".version must be a number but is a " + (typeof item.version)); + return false; + } + + if (!item.apps) { + debug("Error: missing 'apps' in languages-provided." + lang); + return false; + } + + for (let app in item.apps) { + // Keys should be manifest urls, ie. absolute urls. + if (!isAbsoluteURI(app)) { + debug("Error: languages-provided." + lang + "." + app + + " must be an absolute manifest url."); + return false; + } + + if (typeof item.apps[app] !== "string") { + debug("Error: languages-provided." + lang + ".apps." + app + + " value must be a string but is " + (typeof item.apps[app]) + + " : " + item.apps[app]); + return false; + } + } + } + return true; + }, + + // Check if this app is a langpack and update registration if needed. + register: function(aApp, aManifest) { + debug("register app " + aApp.manifestURL + " role=" + aApp.role); + + if (aApp.role !== "langpack") { + debug("Not a langpack."); + // Not a langpack, but that's fine. + return; + } + + if (!this.checkManifest(aManifest)) { + debug("Invalid langpack manifest."); + return; + } + + let platformVersion = aManifest["languages-target"] + ["app://*.gaiamobile.org/manifest.webapp"]; + let origin = Services.io.newURI(aApp.origin, null, null); + + for (let lang in aManifest["languages-provided"]) { + let item = aManifest["languages-provided"][lang]; + let version = item.version; // The langpack version, not the platform. + let name = item.name || lang; // If no name specified, default to lang. + for (let app in item.apps) { + let sendEvent = false; + if (!this._data[app] || + !this._data[app].langs[lang] || + this._data[app].langs[lang].version > version) { + if (!this._data[app]) { + this._data[app] = { + appId: this._appIdFromManifestURL(app), + langs: {} + }; + } + this._data[app].langs[lang] = { + version: version, + target: platformVersion, + name: name, + url: origin.resolve(item.apps[app]), + from: aApp.manifestURL + } + sendEvent = true; + debug("Registered " + app + " -> " + uneval(this._data[app].langs[lang])); + } + + // Fire additionallanguageschange event. + // This will only be dispatched to documents using the langpack api. + if (sendEvent) { + this.sendAppUpdate(app); + ppmm.broadcastAsyncMessage( + "Webapps:AdditionalLanguageChange", + { manifestURL: app, + languages: this.getAdditionalLanguages(app).langs }); + } + } + } + }, + + // Check if this app is a langpack and update registration by removing all + // the entries from this app. + unregister: function(aApp, aManifest) { + debug("unregister app " + aApp.manifestURL + " role=" + aApp.role); + + if (aApp.role !== "langpack") { + debug("Not a langpack."); + // Not a langpack, but that's fine. + return; + } + + for (let app in this._data) { + let sendEvent = false; + for (let lang in this._data[app].langs) { + if (this._data[app].langs[lang].from == aApp.manifestURL) { + sendEvent = true; + delete this._data[app].langs[lang]; + } + } + // Fire additionallanguageschange event. + // This will only be dispatched to documents using the langpack api. + if (sendEvent) { + this.sendAppUpdate(app); + ppmm.broadcastAsyncMessage( + "Webapps:AdditionalLanguageChange", + { manifestURL: app, + languages: this.getAdditionalLanguages(app).langs }); + } + } + } +} + +Langpacks.init(); \ No newline at end of file diff --git a/dom/apps/Webapps.js b/dom/apps/Webapps.js index 0d3c6c361704..bf268bbc2223 100644 --- a/dom/apps/Webapps.js +++ b/dom/apps/Webapps.js @@ -44,11 +44,18 @@ WebappsRegistry.prototype = { receiveMessage: function(aMessage) { let msg = aMessage.json; - if (msg.oid != this._id) - return - let req = this.getRequest(msg.requestID); - if (!req) - return; + let req; + if (msg.oid === this._id) { + if (aMessage.name == "Webapps:GetLocalizationResource:Return") { + req = this.takePromiseResolver(msg.requestID); + } else { + req = this.getRequest(msg.requestID); + } + if (!req) { + return; + } + } + let app = msg.app; switch (aMessage.name) { case "Webapps:Install:Return:OK": @@ -78,6 +85,26 @@ WebappsRegistry.prototype = { this.removeMessageListeners(aMessage.name); Services.DOMRequest.fireSuccess(req, convertAppsArray(msg.apps, this._window)); break; + case "Webapps:AdditionalLanguageChange": + // Check if the current page is from the app receiving the event. + let manifestURL = AppsUtils.getAppManifestURLFromWindow(this._window); + if (manifestURL && manifestURL == msg.manifestURL) { + // Let's dispatch an "additionallanguageschange" event on the document. + let doc = this._window.document; + let event = doc.createEvent("CustomEvent"); + event.initCustomEvent("additionallanguageschange", true, true, + Cu.cloneInto(msg.languages, this._window)); + doc.dispatchEvent(event); + } + break; + case "Webapps:GetLocalizationResource:Return": + this.removeMessageListeners(["Webapps:GetLocalizationResource:Return"]); + if (msg.error) { + req.reject(new this._window.DOMError(msg.error)); + } else { + req.resolve(Cu.cloneInto(msg.data, this._window)); + } + break; } this.removeRequest(msg.requestID); }, @@ -231,7 +258,8 @@ WebappsRegistry.prototype = { uninit: function() { this._mgmt = null; cpmm.sendAsyncMessage("Webapps:UnregisterForMessages", - ["Webapps:Install:Return:OK"]); + ["Webapps:Install:Return:OK", + "Webapps:AdditionalLanguageChange"]); }, installPackage: function(aURL, aParams) { @@ -248,19 +276,69 @@ WebappsRegistry.prototype = { return request; }, + _getCurrentAppManifestURL: function() { + let appId = this._window.document.nodePrincipal.appId; + if (appId === Ci.nsIScriptSecurityManager.NO_APP_ID) { + return null; + } + + return appsService.getManifestURLByLocalId(appId); + }, + + getAdditionalLanguages: function() { + let manifestURL = AppsUtils.getAppManifestURLFromWindow(this._window); + + return new this._window.Promise((aResolve, aReject) => { + if (!manifestURL) { + aReject("NotInApp"); + } else { + let langs = DOMApplicationRegistry.getAdditionalLanguages(manifestURL); + aResolve(Cu.cloneInto(langs, this._window)); + } + }); + }, + + getLocalizationResource: function(aLanguage, aVersion, aPath, aType) { + let manifestURL = AppsUtils.getAppManifestURLFromWindow(this._window); + + if (!manifestURL) { + return new Promise((aResolve, aReject) => { + aReject("NotInApp"); + }); + } + + this.addMessageListeners(["Webapps:GetLocalizationResource:Return"]); + return this.createPromise((aResolve, aReject) => { + cpmm.sendAsyncMessage("Webapps:GetLocalizationResource", { + manifestURL: manifestURL, + lang: aLanguage, + version: aVersion, + path: aPath, + dataType: aType, + oid: this._id, + requestID: this.getPromiseResolverId({ + resolve: aResolve, + reject: aReject + }) + }); + }); + }, + // nsIDOMGlobalPropertyInitializer implementation init: function(aWindow) { const prefs = new Preferences(); this._window = aWindow; - this.initDOMRequestHelper(aWindow, "Webapps:Install:Return:OK"); + this.initDOMRequestHelper(aWindow, ["Webapps:Install:Return:OK", + "Webapps:AdditionalLanguageChange"]); let util = this._window.QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIDOMWindowUtils); this._id = util.outerWindowID; cpmm.sendAsyncMessage("Webapps:RegisterForMessages", - { messages: ["Webapps:Install:Return:OK"]}); + { messages: ["Webapps:Install:Return:OK", + "Webapps:AdditionalLanguageChange"]}); let principal = aWindow.document.nodePrincipal; let appId = principal.appId; diff --git a/dom/apps/Webapps.jsm b/dom/apps/Webapps.jsm index 345ce8b50a2e..82f39505b3df 100755 --- a/dom/apps/Webapps.jsm +++ b/dom/apps/Webapps.jsm @@ -81,6 +81,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", XPCOMUtils.defineLazyModuleGetter(this, "ScriptPreloader", "resource://gre/modules/ScriptPreloader.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "Langpacks", + "resource://gre/modules/Langpacks.jsm"); + XPCOMUtils.defineLazyModuleGetter(this, "TrustedHostedAppsUtils", "resource://gre/modules/TrustedHostedAppsUtils.jsm"); @@ -243,6 +246,9 @@ this.DOMApplicationRegistry = { ["webapps", "webapps.json"], true).path; this.loadAndUpdateApps(); + + Langpacks.registerRegistryFunctions(this.broadcastMessage.bind(this), + this._appIdForManifestURL.bind(this)); }, // loads the current registry, that could be empty on first run. @@ -424,6 +430,7 @@ this.DOMApplicationRegistry = { } app.kind = this.appKind(app, aResult.manifest); UserCustomizations.register(aResult.manifest, app); + Langpacks.register(app, aResult.manifest); }); // Nothing else to do but notifying we're ready. @@ -1149,6 +1156,7 @@ this.DOMApplicationRegistry = { this._registerInterAppConnections(manifest, app); appsToRegister.push({ manifest: manifest, app: app }); UserCustomizations.register(manifest, app); + Langpacks.register(app, manifest); }); this._safeToClone.resolve(); this._registerActivitiesForApps(appsToRegister, aRunUpdate); @@ -1520,6 +1528,8 @@ this.DOMApplicationRegistry = { this.safeToClone.then( () => { for (let id in this.webapps) { tmp.push({ id: id }); + this.webapps[id].additionalLanguages = + Langpacks.getAdditionalLanguages(this.webapps[id].manifestURL).langs; } this._readManifests(tmp).then( function(manifests) { @@ -1964,6 +1974,10 @@ this.DOMApplicationRegistry = { // Update the asm.js scripts we need to compile. yield ScriptPreloader.preload(app, newManifest); + + // Update langpack information. + Langpacks.register(app, newManifest); + yield this._saveApps(); // Update the handlers and permissions for this app. this.updateAppHandlers(oldManifest, newManifest, app); @@ -2081,11 +2095,13 @@ this.DOMApplicationRegistry = { this.notifyAppsRegistryReady(); } - // Update user customizations. + // Update user customizations and langpacks. if (aOldManifest) { UserCustomizations.unregister(aOldManifest, aApp); + Langpacks.unregister(aApp, aOldManifest); } UserCustomizations.register(aNewManifest, aApp); + Langpacks.register(aApp, aNewManifest); }, checkForUpdate: function(aData, aMm) { @@ -3185,6 +3201,9 @@ this.DOMApplicationRegistry = { // Check if we have asm.js code to preload for this application. yield ScriptPreloader.preload(aNewApp, aManifest); + // Update langpack information. + yield Langpacks.register(aNewApp, aManifest); + this.broadcastMessage("Webapps:FireEvent", { eventType: ["downloadsuccess", "downloadapplied"], manifestURL: aNewApp.manifestURL @@ -4094,6 +4113,7 @@ this.DOMApplicationRegistry = { this._unregisterActivities(aApp.manifest, aApp); } UserCustomizations.unregister(aApp.manifest, aApp); + Langpacks.unregister(aApp, aApp.manifest); let dir = this._getAppDir(id); try { diff --git a/dom/apps/moz.build b/dom/apps/moz.build index 925e7b5a7304..46966146caf7 100644 --- a/dom/apps/moz.build +++ b/dom/apps/moz.build @@ -34,6 +34,7 @@ EXTRA_JS_MODULES += [ 'AppsServiceChild.jsm', 'FreeSpaceWatcher.jsm', 'InterAppCommService.jsm', + 'Langpacks.jsm', 'OfflineCacheInstaller.jsm', 'PermissionsInstaller.jsm', 'PermissionsTable.jsm', diff --git a/dom/apps/tests/langpack/event.html b/dom/apps/tests/langpack/event.html new file mode 100644 index 000000000000..ca9170d083de --- /dev/null +++ b/dom/apps/tests/langpack/event.html @@ -0,0 +1,28 @@ + + + + Langpack Test : event + + + +

Langpack Test : event

+ + \ No newline at end of file diff --git a/dom/apps/tests/langpack/fr/app.json b/dom/apps/tests/langpack/fr/app.json new file mode 100644 index 000000000000..a19f3feffd4e --- /dev/null +++ b/dom/apps/tests/langpack/fr/app.json @@ -0,0 +1 @@ +{ "hello" : "Bonjour" } \ No newline at end of file diff --git a/dom/apps/tests/langpack/fr/app.properties b/dom/apps/tests/langpack/fr/app.properties new file mode 100644 index 000000000000..4641a774d68a --- /dev/null +++ b/dom/apps/tests/langpack/fr/app.properties @@ -0,0 +1 @@ +hello=Bonjour \ No newline at end of file diff --git a/dom/apps/tests/langpack/index.html b/dom/apps/tests/langpack/index.html new file mode 100644 index 000000000000..a854fcd4b440 --- /dev/null +++ b/dom/apps/tests/langpack/index.html @@ -0,0 +1,16 @@ + + + + Langpack Test : getAdditionalLanguages() + + + +

Langpack Test : getAdditionalLanguages()

+ + \ No newline at end of file diff --git a/dom/apps/tests/langpack/lang1.webapp b/dom/apps/tests/langpack/lang1.webapp new file mode 100644 index 000000000000..56025f6de318 --- /dev/null +++ b/dom/apps/tests/langpack/lang1.webapp @@ -0,0 +1,14 @@ +{ + "name": "French locale", + "languages-target" : { "app://*.gaiamobile.org/manifest.webapp": "2.2" }, + "languages-provided": { + "fr": { + "version": 201411051234, + "name": "Français", + "apps": { + "http://mochi.test:8888/tests/dom/apps/tests/langpack/manifest.webapp": "tests/dom/apps/tests/langpack/fr/" + } + } + }, + "role" : "langpack" +} diff --git a/dom/apps/tests/langpack/lang1.webapp^headers^ b/dom/apps/tests/langpack/lang1.webapp^headers^ new file mode 100644 index 000000000000..3cea33fec8b6 --- /dev/null +++ b/dom/apps/tests/langpack/lang1.webapp^headers^ @@ -0,0 +1 @@ +Content-Type: application/manifest+json \ No newline at end of file diff --git a/dom/apps/tests/langpack/lang2.webapp b/dom/apps/tests/langpack/lang2.webapp new file mode 100644 index 000000000000..96af45cd4c7f --- /dev/null +++ b/dom/apps/tests/langpack/lang2.webapp @@ -0,0 +1,21 @@ +{ + "name": "German an Polish locales", + "languages-target" : { "app://*.gaiamobile.org/manifest.webapp": "2.2" }, + "languages-provided": { + "de": { + "version": 201411051234, + "name": "Deutsch", + "apps": { + "http://mochi.test:8888/tests/dom/apps/tests/langpack/manifest.webapp": "tests/dom/apps/tests/langpack/de/" + } + }, + "pl": { + "version": 201411051234, + "name": "Polski", + "apps": { + "http://mochi.test:8888/tests/dom/apps/tests/langpack/manifest.webapp": "tests/dom/apps/tests/langpack/pl/" + } + } + }, + "role" : "langpack" +} diff --git a/dom/apps/tests/langpack/lang2.webapp^headers^ b/dom/apps/tests/langpack/lang2.webapp^headers^ new file mode 100644 index 000000000000..3cea33fec8b6 --- /dev/null +++ b/dom/apps/tests/langpack/lang2.webapp^headers^ @@ -0,0 +1 @@ +Content-Type: application/manifest+json \ No newline at end of file diff --git a/dom/apps/tests/langpack/manifest.webapp b/dom/apps/tests/langpack/manifest.webapp new file mode 100644 index 000000000000..87fe0590bff2 --- /dev/null +++ b/dom/apps/tests/langpack/manifest.webapp @@ -0,0 +1,3 @@ +{ + "name": "Localization test app" +} diff --git a/dom/apps/tests/langpack/manifest.webapp^headers^ b/dom/apps/tests/langpack/manifest.webapp^headers^ new file mode 100644 index 000000000000..3cea33fec8b6 --- /dev/null +++ b/dom/apps/tests/langpack/manifest.webapp^headers^ @@ -0,0 +1 @@ +Content-Type: application/manifest+json \ No newline at end of file diff --git a/dom/apps/tests/langpack/resources.html b/dom/apps/tests/langpack/resources.html new file mode 100644 index 000000000000..15f9b2521af4 --- /dev/null +++ b/dom/apps/tests/langpack/resources.html @@ -0,0 +1,92 @@ + + + + Langpack Test : resources + + + +

Langpack Test : resources

+ + \ No newline at end of file diff --git a/dom/apps/tests/mochitest.ini b/dom/apps/tests/mochitest.ini index 798a32bd9617..5727a5c00348 100644 --- a/dom/apps/tests/mochitest.ini +++ b/dom/apps/tests/mochitest.ini @@ -22,6 +22,7 @@ support-files = file_widget_app.template.webapp file_widget_app.template.html file_test_widget.js + langpack/* signed_app.sjs signed_app_template.webapp signed/* @@ -38,6 +39,7 @@ skip-if = os == "android" || toolkit == "gonk" # embed-apps doesn't work in moch [test_import_export.html] [test_install_multiple_apps_origin.html] [test_install_receipts.html] +[test_langpacks.html] [test_marketplace_pkg_install.html] skip-if = buildapp == "b2g" || toolkit == "android" # see bug 989806 [test_packaged_app_install.html] diff --git a/dom/apps/tests/test_langpacks.html b/dom/apps/tests/test_langpacks.html new file mode 100644 index 000000000000..9310f37839ff --- /dev/null +++ b/dom/apps/tests/test_langpacks.html @@ -0,0 +1,221 @@ + + + + + Test for Bug 1108096 - Langpack support + + + + + + +

+ +
+
+
+ + diff --git a/dom/tests/mochitest/webapps/test_list_api.xul b/dom/tests/mochitest/webapps/test_list_api.xul index f5a4c9ee86af..0adc50986d16 100644 --- a/dom/tests/mochitest/webapps/test_list_api.xul +++ b/dom/tests/mochitest/webapps/test_list_api.xul @@ -20,7 +20,9 @@ var props = { checkInstalled: "function", + getAdditionalLanguages: "function", getInstalled: "function", + getLocalizationResource: "function", getSelf: "function", install: "function", installPackage: "function", diff --git a/dom/webidl/Apps.webidl b/dom/webidl/Apps.webidl index 212ac8a415ec..37fd9e9c6cfb 100644 --- a/dom/webidl/Apps.webidl +++ b/dom/webidl/Apps.webidl @@ -9,6 +9,18 @@ dictionary InstallParameters { sequence categories = []; }; +dictionary LanguageDesc { + DOMString target; + DOMString version; + DOMString name; +}; + +enum LocaleResourceType { + "binary", + "json", + "text" +}; + [NoInterfaceObject, NavigatorProperty="mozApps", JSImplementation="@mozilla.org/webapps;1"] interface DOMApplicationsRegistry { @@ -19,6 +31,17 @@ interface DOMApplicationsRegistry { DOMRequest getSelf(); DOMRequest getInstalled(); DOMRequest checkInstalled(DOMString manifestUrl); + + // Language pack API. + // These promises will be rejected if the page is not in an app context, + // i.e. they are implicitely acting on getSelf(). + Promise>> getAdditionalLanguages(); + // Resolves to a different object depending on the dataType value. + Promise + getLocalizationResource(DOMString language, + DOMString version, + DOMString path, + LocaleResourceType dataType); }; [JSImplementation="@mozilla.org/webapps/application;1", ChromeOnly] @@ -71,18 +94,18 @@ interface DOMApplication : EventTarget { * https://wiki.mozilla.org/WebAPI/Inter_App_Communication_Alt_proposal * */ - Promise connect(DOMString keyword, optional any rules); + Promise connect(DOMString keyword, optional any rules); - Promise> getConnections(); + Promise> getConnections(); - // Receipts handling functions. - DOMRequest addReceipt(optional DOMString receipt); - DOMRequest removeReceipt(optional DOMString receipt); - DOMRequest replaceReceipt(optional DOMString oldReceipt, - optional DOMString newReceipt); + // Receipts handling functions. + DOMRequest addReceipt(optional DOMString receipt); + DOMRequest removeReceipt(optional DOMString receipt); + DOMRequest replaceReceipt(optional DOMString oldReceipt, + optional DOMString newReceipt); - // Export this app as a shareable Blob. - Promise export(); + // Export this app as a shareable Blob. + Promise export(); }; [JSImplementation="@mozilla.org/webapps/manager;1", From f58bc716aa40d4a00deba3321780ce5099d9b97b Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 18:17:21 -0800 Subject: [PATCH 12/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/31a97c095dc1 Author: Hubert Figuière Desc: Merge pull request #27169 from hfiguiere/bug1118021-FLAC-art-cover Bug 1118021 - FLAC art cover support. r=squib ======== https://hg.mozilla.org/integration/gaia-central/rev/06708367890a Author: Hubert Figuière Desc: Bug 1118021 - Added album art support for FLAC. r=squib --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 3495d37adf0f..f03a46eeec0b 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "ff5ba65326b48a0ecd2137d448d73790daa274a4", + "revision": "31a97c095dc165fcfb7c2f45f69318367f8b6305", "repo_path": "integration/gaia-central" } From 40776614a2b51d1594eda13d16b04490b3c30419 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 18:27:00 -0800 Subject: [PATCH 13/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index d109740c162c..29fee425a46d 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 3cfc646d4941..db563b72f251 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 54b1130621b0..3c1ab97cdbc0 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index ceec504c3006..af3f2fae9eb8 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 3cfc646d4941..db563b72f251 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index a34fb91e8a34..66fd0c05b871 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index bb2805f342ed..72e4c424f08c 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index e0a5f2572f48..5b8b8b794d3d 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index ac55e2f8351f..4c3fd110f354 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 7daddc3439e8..76b9d7f98c58 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 170429970d2a..03fd883db0f7 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 9d1a9b930a0050ca83302e0706257b34e8674283 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 21:02:17 -0800 Subject: [PATCH 14/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/534766b4614f Author: Jim Porter Desc: Merge pull request #27256 from jimporter/ringtone-storage-quota Bug 1095190 - "Ringtone not created" error when trying to set a Ringtone... ======== https://hg.mozilla.org/integration/gaia-central/rev/c6bb049ca9b2 Author: Jim Desc: Bug 1095190 - "Ringtone not created" error when trying to set a Ringtone from a Music track --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index f03a46eeec0b..e318e53fface 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "31a97c095dc165fcfb7c2f45f69318367f8b6305", + "revision": "534766b4614f4ec1616105c4a9b34a89335b98c2", "repo_path": "integration/gaia-central" } From da99db2a65ad11de50d2e2da4063360e71c4d9a3 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 21:06:56 -0800 Subject: [PATCH 15/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 29fee425a46d..dd9d6deb87b3 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index db563b72f251..3ee4530a387d 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 3c1ab97cdbc0..98beff62ea79 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index af3f2fae9eb8..2d881bf0beea 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index db563b72f251..3ee4530a387d 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 66fd0c05b871..e2a70c061a6d 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 72e4c424f08c..1e017fab3a9b 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 5b8b8b794d3d..0e933348f844 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 4c3fd110f354..28a58276d022 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 76b9d7f98c58..980a1467556d 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 03fd883db0f7..293934061af3 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From e1c305f5fae06b21fc6b9a1f43d5037c62dbedb6 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 21:17:22 -0800 Subject: [PATCH 16/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/c36784e00fd6 Author: Jim Porter Desc: Merge pull request #26614 from jimporter/music-fl Bug 1106612 - [Music] Cannot play Forward Locked/DRM mp3 files ======== https://hg.mozilla.org/integration/gaia-central/rev/5ecc83242150 Author: Jim Desc: Bug 1106612 - [Music] Cannot play Forward Locked/DRM mp3 files --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index e318e53fface..01bbd45adeae 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "534766b4614f4ec1616105c4a9b34a89335b98c2", + "revision": "c36784e00fd683ee150d16c3a3a1abe39df78c0b", "repo_path": "integration/gaia-central" } From 2051688b8b6beaee24e50461bdd639ecd7a3e74f Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sat, 10 Jan 2015 21:22:01 -0800 Subject: [PATCH 17/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index dd9d6deb87b3..871a59716fbd 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 3ee4530a387d..edfa48659678 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 98beff62ea79..8afe302a20d6 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 2d881bf0beea..2aef0f5c4a23 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 3ee4530a387d..edfa48659678 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index e2a70c061a6d..dc763b7bc602 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 1e017fab3a9b..f3ea563e6d97 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 0e933348f844..7b53353af3ee 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 28a58276d022..b59d4af7556c 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 980a1467556d..8c581100c07c 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 293934061af3..4e45574a4537 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From ff6fe482393dde18f215e41837940314210fc0f2 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 11:22:15 -0800 Subject: [PATCH 18/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/0eed0bcb7238 Author: autolander Desc: Bug 1119602 - merge pull request #27300 from anefzaoui:bug-1119602-1 to mozilla-b2g:master ======== https://hg.mozilla.org/integration/gaia-central/rev/cc2140f5a076 Author: Ahmed Nefzaoui Desc: Bug 1119602 - [RTL][Browser] Top Sites items are left-aligned --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 01bbd45adeae..254b65f4637a 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "c36784e00fd683ee150d16c3a3a1abe39df78c0b", + "revision": "0eed0bcb723877e0452b7da0c633c622cafe2575", "repo_path": "integration/gaia-central" } From 90ef99aa5637ddb242d3273d07fe42106fda7d84 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 11:31:54 -0800 Subject: [PATCH 19/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 871a59716fbd..3e7e1e65117e 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index edfa48659678..e1ea086f5e90 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 8afe302a20d6..5bbaf2da405a 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 2aef0f5c4a23..1a3e56973705 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index edfa48659678..e1ea086f5e90 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index dc763b7bc602..2d23230c895e 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index f3ea563e6d97..c65913735224 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 7b53353af3ee..f2dd47f542e3 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index b59d4af7556c..c4cff61bf2db 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 8c581100c07c..382280470551 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 4e45574a4537..1ecdd9c9f486 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From fa84b94f73837b480f22f8883326fe5fe2ab6620 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 12:27:18 -0800 Subject: [PATCH 20/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/34fab2924aa0 Author: tamarahills Desc: Merge pull request #27159 from tamarahills/bugfix/1092427 Bug 1092427 - Text Selection for Dialer, CallScreen, and emergency diale... ======== https://hg.mozilla.org/integration/gaia-central/rev/5a5da9a781ad Author: Tamara Hills Desc: Bug 1092427 - Text Selection for Dialer, CallScreen, and emergency dialer apps. r=drs. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 254b65f4637a..42fceeb55c78 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "0eed0bcb723877e0452b7da0c633c622cafe2575", + "revision": "34fab2924aa0236227b758972292864690673d68", "repo_path": "integration/gaia-central" } From f88c6aa4c83fe14235bdb70baa4fb41f38671b55 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 12:32:08 -0800 Subject: [PATCH 21/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 3e7e1e65117e..0981a64a0d3a 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index e1ea086f5e90..680b00251851 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 5bbaf2da405a..86f946342675 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 1a3e56973705..dfd149d9730d 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index e1ea086f5e90..680b00251851 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 2d23230c895e..adc937d8e71c 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index c65913735224..8fe9d689d983 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index f2dd47f542e3..c0418073dc50 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index c4cff61bf2db..2e3a73eb7b1d 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 382280470551..117cfc7343da 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 1ecdd9c9f486..f29b03b78e7a 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 07b8a3d76caddee6c8771593afe4be30d209f691 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 13:27:15 -0800 Subject: [PATCH 22/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/0001d71b91c1 Author: Staś Małolepszy Desc: Merge pull request #27216 from stasm/1115773-loadJSON-sync Bug 1115773 - Allow L10n's loadJSON to be sync. r=gandalf ======== https://hg.mozilla.org/integration/gaia-central/rev/573621757637 Author: Staś Małolepszy Desc: Bug 1115773 - Allow L10n's loadJSON to be sync. r=gandalf --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 42fceeb55c78..ffdd142ed53c 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "34fab2924aa0236227b758972292864690673d68", + "revision": "0001d71b91c15e70f478f5b748ce9012d2c84ff5", "repo_path": "integration/gaia-central" } From a7be63acd7fdd1f65dcd3f5a035c56d91e2827ac Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 13:36:55 -0800 Subject: [PATCH 23/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 0981a64a0d3a..80940c3351c8 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 680b00251851..c3cc0a60298f 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 86f946342675..1011b7df6076 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index dfd149d9730d..a66832e3e185 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 680b00251851..c3cc0a60298f 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index adc937d8e71c..fa71226ac255 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 8fe9d689d983..910b7c0a82d0 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index c0418073dc50..d7b8fdc30e0c 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 2e3a73eb7b1d..4fee4a8ba535 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 117cfc7343da..d9c586149ce6 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index f29b03b78e7a..c34caf739158 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 46985d9056cdf705d4e0724023ab5199d8475667 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 13:57:16 -0800 Subject: [PATCH 24/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/54b08625c465 Author: autolander Desc: Bug 1102348 - merge pull request #27297 from anefzaoui:bug-1102348 to mozilla-b2g:master ======== https://hg.mozilla.org/integration/gaia-central/rev/0fc6f0b584d2 Author: Ahmed Nefzaoui Desc: Bug 1102348 - Call log checkboxes and direction indicators are too bunched up in edit mode --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index ffdd142ed53c..6efbd92409fc 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "0001d71b91c15e70f478f5b748ce9012d2c84ff5", + "revision": "54b08625c465ad0c204dfdd9f32876dbd9da49eb", "repo_path": "integration/gaia-central" } From 6a4dc943581175bf06a29a95dbe1f4ebb4525666 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 14:06:57 -0800 Subject: [PATCH 25/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 80940c3351c8..fdf14aa0774c 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index c3cc0a60298f..d84b8b811dbc 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 1011b7df6076..1c60a096874b 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index a66832e3e185..294f6a737cd9 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index c3cc0a60298f..d84b8b811dbc 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index fa71226ac255..50e0893a1426 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 910b7c0a82d0..08802a7a5498 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index d7b8fdc30e0c..0d2d994ee6f9 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 4fee4a8ba535..72bec0f542b9 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index d9c586149ce6..fff4ad863ea0 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index c34caf739158..d94783eca24f 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 8e19b30dd6136a51d14a8e94c532fb6835f881a7 Mon Sep 17 00:00:00 2001 From: Sean Lin Date: Thu, 8 Jan 2015 11:29:54 +0800 Subject: [PATCH 26/34] Bug 1116762 - Add MozHomeScreen key name for home button. r=masayuki --- dom/events/KeyNameList.h | 1 + widget/NativeKeyToDOMKeyName.h | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/dom/events/KeyNameList.h b/dom/events/KeyNameList.h index b083d5eae207..0cfa4d218105 100644 --- a/dom/events/KeyNameList.h +++ b/dom/events/KeyNameList.h @@ -29,6 +29,7 @@ DEFINE_KEYNAME_WITH_SAME_NAME(Unidentified) * Our Internal Key Values (must have "Moz" prefix) *****************************************************************************/ DEFINE_KEYNAME_INTERNAL(PrintableKey, "MozPrintableKey") +DEFINE_KEYNAME_INTERNAL(HomeScreen, "MozHomeScreen") /****************************************************************************** * Modifier Keys diff --git a/widget/NativeKeyToDOMKeyName.h b/widget/NativeKeyToDOMKeyName.h index 05cdbc2dcf4d..fd0797d6d8c0 100644 --- a/widget/NativeKeyToDOMKeyName.h +++ b/widget/NativeKeyToDOMKeyName.h @@ -1289,6 +1289,13 @@ KEY_MAP_GTK (VideoModeNext, GDK_Next_VMode) KEY_MAP_WIN (ZoomToggle, VK_ZOOM) KEY_MAP_QT (ZoomToggle, Qt::Key_Zoom) +/****************************************************************************** + * Keys not defined by any standards + ******************************************************************************/ + +// HomeScreen +KEY_MAP_ANDROID (HomeScreen, AKEYCODE_HOME) + #undef KEY_MAP_WIN #undef KEY_MAP_WIN_JPN #undef KEY_MAP_WIN_KOR From 9a52c3c7ebdc822f4cb96e7e48403e922ac2b432 Mon Sep 17 00:00:00 2001 From: Vincent Liu Date: Mon, 22 Dec 2014 14:17:22 +0800 Subject: [PATCH 27/34] Bug 1107300 - (gonk-L-Camera) [meta] Camera Android L Porting. r=Sotaro --- dom/camera/GonkCameraControl.cpp | 1 + dom/camera/GonkCameraHwMgr.cpp | 8 +++++++- dom/camera/GonkRecorder.cpp | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dom/camera/GonkCameraControl.cpp b/dom/camera/GonkCameraControl.cpp index 618c915aeb68..3d3da9f15c1b 100644 --- a/dom/camera/GonkCameraControl.cpp +++ b/dom/camera/GonkCameraControl.cpp @@ -40,6 +40,7 @@ #include "AutoRwLock.h" #include "GonkCameraHwMgr.h" #include "GonkRecorderProfiles.h" +#include "GrallocImages.h" #include "CameraCommon.h" #include "GonkCameraParameters.h" #include "DeviceStorageFileDescriptor.h" diff --git a/dom/camera/GonkCameraHwMgr.cpp b/dom/camera/GonkCameraHwMgr.cpp index fef9c6231055..50b74b0e324a 100644 --- a/dom/camera/GonkCameraHwMgr.cpp +++ b/dom/camera/GonkCameraHwMgr.cpp @@ -183,7 +183,13 @@ GonkCameraHardware::Init() #if defined(MOZ_WIDGET_GONK) -#if ANDROID_VERSION >= 19 +#if ANDROID_VERSION >= 21 + sp producer; + sp consumer; + GonkBufferQueue::createBufferQueue(&producer, &consumer); + mNativeWindow = new GonkNativeWindow(consumer, GonkCameraHardware::MIN_UNDEQUEUED_BUFFERS); + mCamera->setPreviewTarget(producer); +#elif ANDROID_VERSION >= 19 mNativeWindow = new GonkNativeWindow(GonkCameraHardware::MIN_UNDEQUEUED_BUFFERS); sp bq = mNativeWindow->getBufferQueue(); bq->setSynchronousMode(false); diff --git a/dom/camera/GonkRecorder.cpp b/dom/camera/GonkRecorder.cpp index 7040fad11da6..b07e300dd25b 100644 --- a/dom/camera/GonkRecorder.cpp +++ b/dom/camera/GonkRecorder.cpp @@ -1154,7 +1154,11 @@ status_t GonkRecorder::setupMediaSource( return err; } *mediaSource = cameraSource; +#if ANDROID_VERSION >= 21 + } else if (mVideoSource == VIDEO_SOURCE_SURFACE) { +#else } else if (mVideoSource == VIDEO_SOURCE_GRALLOC_BUFFER) { +#endif return BAD_VALUE; } else { return INVALID_OPERATION; From 0021f83b739261b037bf0ee81814fd63d6c7e62f Mon Sep 17 00:00:00 2001 From: Vincent Liu Date: Mon, 12 Jan 2015 10:34:54 +0800 Subject: [PATCH 28/34] Bug 1107300 - (gonk-L-Camera) [meta] Camera Android L Porting. r=Sotaro --- configure.in | 1 + 1 file changed, 1 insertion(+) diff --git a/configure.in b/configure.in index 8af1ad4bb96b..c24812f8c920 100644 --- a/configure.in +++ b/configure.in @@ -290,6 +290,7 @@ if test -n "$gonkdir" ; then AC_SUBST(MOZ_AUDIO_OFFLOAD) AC_DEFINE(MOZ_AUDIO_OFFLOAD) MOZ_FMP4= + MOZ_B2G_CAMERA=1 MOZ_B2G_BT=1 MOZ_B2G_BT_BLUEDROID=1 if test -d "$gonkdir/system/bluetoothd"; then From dc3a2578fc43ea84fa2abe48d2f6d3631d0b91f1 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 23:12:16 -0800 Subject: [PATCH 29/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/89fdf202fdfb Author: Greg Weng Desc: Merge pull request #27304 from snowmantw/bug1099419-rev2 Bug 1099419 - [Lockscreen][Camera] App permission screen stays after ======== https://hg.mozilla.org/integration/gaia-central/rev/c9e15da16f92 Author: Greg Weng Desc: Bug 1099419 - [Lockscreen][Camera] App permission screen stays after locking and unlocking device --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 6efbd92409fc..49050818e119 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "54b08625c465ad0c204dfdd9f32876dbd9da49eb", + "revision": "89fdf202fdfbc815e9e5993b56f8ea8f1ea61272", "repo_path": "integration/gaia-central" } From 33a656ed779d3ffce9b68286cffc9d292c53eefa Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Sun, 11 Jan 2015 23:17:01 -0800 Subject: [PATCH 30/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index fdf14aa0774c..8425e6fe1741 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index d84b8b811dbc..cf1a7d48aa83 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 1c60a096874b..2552aa587ed3 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 294f6a737cd9..09fb2034c636 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index d84b8b811dbc..cf1a7d48aa83 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 50e0893a1426..ececdcdef9ca 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 08802a7a5498..903c80702e8d 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 0d2d994ee6f9..7e15e13d99f1 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 72bec0f542b9..60ba023f0880 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index fff4ad863ea0..71a8a474dd28 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index d94783eca24f..274166bcd260 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 248d09bf4647e8c2352aceb2a5da64f82764257e Mon Sep 17 00:00:00 2001 From: "Carsten \"Tomcat\" Book" Date: Mon, 12 Jan 2015 09:02:13 +0100 Subject: [PATCH 31/34] Backed out changeset df960e299bcd (bug 1108096) for m1 test failures --- dom/apps/AppsServiceChild.jsm | 9 - dom/apps/AppsUtils.jsm | 23 +- dom/apps/Langpacks.jsm | 315 ------------------ dom/apps/Webapps.js | 94 +----- dom/apps/Webapps.jsm | 22 +- dom/apps/moz.build | 1 - dom/apps/tests/langpack/event.html | 28 -- dom/apps/tests/langpack/fr/app.json | 1 - dom/apps/tests/langpack/fr/app.properties | 1 - dom/apps/tests/langpack/index.html | 16 - dom/apps/tests/langpack/lang1.webapp | 14 - dom/apps/tests/langpack/lang1.webapp^headers^ | 1 - dom/apps/tests/langpack/lang2.webapp | 21 -- dom/apps/tests/langpack/lang2.webapp^headers^ | 1 - dom/apps/tests/langpack/manifest.webapp | 3 - .../tests/langpack/manifest.webapp^headers^ | 1 - dom/apps/tests/langpack/resources.html | 92 ----- dom/apps/tests/mochitest.ini | 2 - dom/apps/tests/test_langpacks.html | 221 ------------ dom/tests/mochitest/webapps/test_list_api.xul | 2 - dom/webidl/Apps.webidl | 41 +-- 21 files changed, 19 insertions(+), 890 deletions(-) delete mode 100644 dom/apps/Langpacks.jsm delete mode 100644 dom/apps/tests/langpack/event.html delete mode 100644 dom/apps/tests/langpack/fr/app.json delete mode 100644 dom/apps/tests/langpack/fr/app.properties delete mode 100644 dom/apps/tests/langpack/index.html delete mode 100644 dom/apps/tests/langpack/lang1.webapp delete mode 100644 dom/apps/tests/langpack/lang1.webapp^headers^ delete mode 100644 dom/apps/tests/langpack/lang2.webapp delete mode 100644 dom/apps/tests/langpack/lang2.webapp^headers^ delete mode 100644 dom/apps/tests/langpack/manifest.webapp delete mode 100644 dom/apps/tests/langpack/manifest.webapp^headers^ delete mode 100644 dom/apps/tests/langpack/resources.html delete mode 100644 dom/apps/tests/test_langpacks.html diff --git a/dom/apps/AppsServiceChild.jsm b/dom/apps/AppsServiceChild.jsm index 86816225227e..7b5d3bd366ff 100644 --- a/dom/apps/AppsServiceChild.jsm +++ b/dom/apps/AppsServiceChild.jsm @@ -354,15 +354,6 @@ this.DOMApplicationRegistry = { aCallback(res); }, - getAdditionalLanguages: function(aManifestURL) { - for (let id in this.webapps) { - if (this.webapps[id].manifestURL == aManifestURL) { - return this.webapps[id].additionalLanguages || {}; - } - } - return {}; - }, - /** * nsIAppsService API */ diff --git a/dom/apps/AppsUtils.jsm b/dom/apps/AppsUtils.jsm index 4dce2950d25d..1c11dea0d04c 100644 --- a/dom/apps/AppsUtils.jsm +++ b/dom/apps/AppsUtils.jsm @@ -22,10 +22,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "WebappOSUtils", XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); -XPCOMUtils.defineLazyServiceGetter(this, "appsService", - "@mozilla.org/AppsService;1", - "nsIAppsService"); - // Shared code for AppsServiceChild.jsm, TrustedHostedAppsUtils.jsm, // Webapps.jsm and Webapps.js @@ -489,7 +485,6 @@ this.AppsUtils = { * Checks if the app role is allowed: * Only certified apps can be themes. * Only privileged or certified apps can be addons. - * Langpacks need to be privileged. * @param aRole : the role assigned to this app. * @param aStatus : the APP_STATUS_* for this app. */ @@ -497,13 +492,6 @@ this.AppsUtils = { if (aRole == "theme" && aStatus !== Ci.nsIPrincipal.APP_STATUS_CERTIFIED) { return false; } - if (aRole == "langpack" && aStatus !== Ci.nsIPrincipal.APP_STATUS_PRIVILEGED) { - let allow = false; - try { - allow = Services.prefs.getBoolPref("dom.apps.allow_unsigned_langpacks"); - } catch(e) {} - return allow; - } if (!this.allowUnsignedAddons && (aRole == "addon" && aStatus !== Ci.nsIPrincipal.APP_STATUS_CERTIFIED && @@ -744,16 +732,7 @@ this.AppsUtils = { // Returns the hash for a JS object. computeObjectHash: function(aObject) { return this.computeHash(JSON.stringify(aObject)); - }, - - getAppManifestURLFromWindow: function(aWindow) { - let appId = aWindow.document.nodePrincipal.appId; - if (appId === Ci.nsIScriptSecurityManager.NO_APP_ID) { - return null; - } - - return appsService.getManifestURLByLocalId(appId); - }, + } } /** diff --git a/dom/apps/Langpacks.jsm b/dom/apps/Langpacks.jsm deleted file mode 100644 index 2b281abe1c4d..000000000000 --- a/dom/apps/Langpacks.jsm +++ /dev/null @@ -1,315 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -const Cu = Components.utils; -const Cc = Components.classes; -const Ci = Components.interfaces; - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/AppsUtils.jsm"); - -XPCOMUtils.defineLazyServiceGetter(this, "ppmm", - "@mozilla.org/parentprocessmessagemanager;1", - "nsIMessageBroadcaster"); - -this.EXPORTED_SYMBOLS = ["Langpacks"]; - -let debug = Services.prefs.getBoolPref("dom.mozApps.debug") - ? (aMsg) => { - dump("-*-*- Langpacks: " + aMsg + "\n"); - } - : (aMsg) => {}; - -/** - * Langpack support - * - * Manifest format is: - * - * "languages-target" : { "app://*.gaiamobile.org/manifest.webapp": "2.2" }, - * "languages-provided": { - * "de": { - * "version": 201411051234, - * "name": "Deutsch", - * "apps": { - * "app://calendar.gaiamobile.org/manifest.webapp": "/de/calendar", - * "app://email.gaiamobile.org/manifest.webapp": "/de/email" - * } - * }, - * "role" : "langpack" - */ - -this.Langpacks = { - - _data: {}, - _broadcaster: null, - _appIdFromManifestURL: null, - - init: function() { - ppmm.addMessageListener("Webapps:GetLocalizationResource", this); - }, - - registerRegistryFunctions: function(aBroadcaster, aIdGetter) { - this._broadcaster = aBroadcaster; - this._appIdFromManifestURL = aIdGetter; - }, - - receiveMessage: function(aMessage) { - let data = aMessage.data; - let mm = aMessage.target; - switch (aMessage.name) { - case "Webapps:GetLocalizationResource": - this.getLocalizationResource(data, mm); - break; - default: - debug("Unexpected message: " + aMessage.name); - } - }, - - getAdditionalLanguages: function(aManifestURL) { - debug("getAdditionalLanguages " + aManifestURL); - let res = { langs: {} }; - let langs = res.langs; - if (this._data[aManifestURL]) { - res.appId = this._data[aManifestURL].appId; - for (let lang in this._data[aManifestURL].langs) { - if (!langs[lang]) { - langs[lang] = []; - } - let current = this._data[aManifestURL].langs[lang]; - langs[lang].push({ - version: current.version, - name: current.name, - target: current.target - }); - } - } - debug("Languages found: " + uneval(res)); - return res; - }, - - sendAppUpdate: function(aManifestURL) { - debug("sendAppUpdate " + aManifestURL); - if (!this._broadcaster) { - debug("No broadcaster!"); - return; - } - - let res = this.getAdditionalLanguages(aManifestURL); - let message = { - id: res.appId, - app: { - additionalLanguages: res.langs - } - } - this._broadcaster("Webapps:UpdateState", message); - }, - - getLocalizationResource: function(aData, aMm) { - debug("getLocalizationResource " + uneval(aData)); - - function sendError(aMsg, aCode) { - debug(aMsg); - aMm.sendAsyncMessage("Webapps:GetLocalizationResource:Return", - { requestID: aData.requestID, oid: aData.oid, error: aCode }); - } - - // No langpack available for this app. - if (!this._data[aData.manifestURL]) { - return sendError("No langpack for this app.", "NoLangpack"); - } - - // We have langpack(s) for this app, but not for this language. - if (!this._data[aData.manifestURL].langs[aData.lang]) { - return sendError("No language " + aData.lang + " for this app.", - "UnavailableLanguage"); - } - - // Check that we have the right version. - let item = this._data[aData.manifestURL].langs[aData.lang]; - if (item.target != aData.version) { - return sendError("No version " + aData.version + " for this app.", - "UnavailableVersion"); - } - - // The path can't be an absolute uri. - if (isAbsoluteURI(aData.path)) { - return sendError("url can't be absolute.", "BadUrl"); - } - - let href = item.url + aData.path; - debug("Will load " + href); - - let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] - .createInstance(Ci.nsIXMLHttpRequest); - xhr.mozBackgroundRequest = true; - xhr.open("GET", href); - - // Default to text response type, but the webidl binding takes care of - // validating the dataType value. - xhr.responseType = "text"; - if (aData.dataType === "json") { - xhr.responseType = "json"; - } else if (aData.dataType === "binary") { - xhr.responseType = "blob"; - } - - xhr.addEventListener("load", function() { - debug("Success loading " + href); - if (xhr.status >= 200 && xhr.status < 400) { - aMm.sendAsyncMessage("Webapps:GetLocalizationResource:Return", - { requestID: aData.requestID, oid: aData.oid, data: xhr.response }); - } else { - sendError("Error loading " + href, "UnavailableResource"); - } - }); - xhr.addEventListener("error", function() { - sendError("Error loading " + href, "UnavailableResource"); - }); - xhr.send(null); - }, - - // Validates the langpack part of a manifest. - checkManifest: function(aManifest) { - if (!("languages-target" in aManifest)) { - debug("Error: no 'languages-target' property.") - return false; - } - - if (!("languages-provided" in aManifest)) { - debug("Error: no 'languages-provided' property.") - return false; - } - - for (let lang in aManifest["languages-provided"]) { - let item = aManifest["languages-provided"][lang]; - - if (!item.version) { - debug("Error: missing 'version' in languages-provided." + lang); - return false; - } - - if (typeof item.version !== "number") { - debug("Error: languages-provided." + lang + - ".version must be a number but is a " + (typeof item.version)); - return false; - } - - if (!item.apps) { - debug("Error: missing 'apps' in languages-provided." + lang); - return false; - } - - for (let app in item.apps) { - // Keys should be manifest urls, ie. absolute urls. - if (!isAbsoluteURI(app)) { - debug("Error: languages-provided." + lang + "." + app + - " must be an absolute manifest url."); - return false; - } - - if (typeof item.apps[app] !== "string") { - debug("Error: languages-provided." + lang + ".apps." + app + - " value must be a string but is " + (typeof item.apps[app]) + - " : " + item.apps[app]); - return false; - } - } - } - return true; - }, - - // Check if this app is a langpack and update registration if needed. - register: function(aApp, aManifest) { - debug("register app " + aApp.manifestURL + " role=" + aApp.role); - - if (aApp.role !== "langpack") { - debug("Not a langpack."); - // Not a langpack, but that's fine. - return; - } - - if (!this.checkManifest(aManifest)) { - debug("Invalid langpack manifest."); - return; - } - - let platformVersion = aManifest["languages-target"] - ["app://*.gaiamobile.org/manifest.webapp"]; - let origin = Services.io.newURI(aApp.origin, null, null); - - for (let lang in aManifest["languages-provided"]) { - let item = aManifest["languages-provided"][lang]; - let version = item.version; // The langpack version, not the platform. - let name = item.name || lang; // If no name specified, default to lang. - for (let app in item.apps) { - let sendEvent = false; - if (!this._data[app] || - !this._data[app].langs[lang] || - this._data[app].langs[lang].version > version) { - if (!this._data[app]) { - this._data[app] = { - appId: this._appIdFromManifestURL(app), - langs: {} - }; - } - this._data[app].langs[lang] = { - version: version, - target: platformVersion, - name: name, - url: origin.resolve(item.apps[app]), - from: aApp.manifestURL - } - sendEvent = true; - debug("Registered " + app + " -> " + uneval(this._data[app].langs[lang])); - } - - // Fire additionallanguageschange event. - // This will only be dispatched to documents using the langpack api. - if (sendEvent) { - this.sendAppUpdate(app); - ppmm.broadcastAsyncMessage( - "Webapps:AdditionalLanguageChange", - { manifestURL: app, - languages: this.getAdditionalLanguages(app).langs }); - } - } - } - }, - - // Check if this app is a langpack and update registration by removing all - // the entries from this app. - unregister: function(aApp, aManifest) { - debug("unregister app " + aApp.manifestURL + " role=" + aApp.role); - - if (aApp.role !== "langpack") { - debug("Not a langpack."); - // Not a langpack, but that's fine. - return; - } - - for (let app in this._data) { - let sendEvent = false; - for (let lang in this._data[app].langs) { - if (this._data[app].langs[lang].from == aApp.manifestURL) { - sendEvent = true; - delete this._data[app].langs[lang]; - } - } - // Fire additionallanguageschange event. - // This will only be dispatched to documents using the langpack api. - if (sendEvent) { - this.sendAppUpdate(app); - ppmm.broadcastAsyncMessage( - "Webapps:AdditionalLanguageChange", - { manifestURL: app, - languages: this.getAdditionalLanguages(app).langs }); - } - } - } -} - -Langpacks.init(); \ No newline at end of file diff --git a/dom/apps/Webapps.js b/dom/apps/Webapps.js index bf268bbc2223..0d3c6c361704 100644 --- a/dom/apps/Webapps.js +++ b/dom/apps/Webapps.js @@ -44,18 +44,11 @@ WebappsRegistry.prototype = { receiveMessage: function(aMessage) { let msg = aMessage.json; - let req; - if (msg.oid === this._id) { - if (aMessage.name == "Webapps:GetLocalizationResource:Return") { - req = this.takePromiseResolver(msg.requestID); - } else { - req = this.getRequest(msg.requestID); - } - if (!req) { - return; - } - } - + if (msg.oid != this._id) + return + let req = this.getRequest(msg.requestID); + if (!req) + return; let app = msg.app; switch (aMessage.name) { case "Webapps:Install:Return:OK": @@ -85,26 +78,6 @@ WebappsRegistry.prototype = { this.removeMessageListeners(aMessage.name); Services.DOMRequest.fireSuccess(req, convertAppsArray(msg.apps, this._window)); break; - case "Webapps:AdditionalLanguageChange": - // Check if the current page is from the app receiving the event. - let manifestURL = AppsUtils.getAppManifestURLFromWindow(this._window); - if (manifestURL && manifestURL == msg.manifestURL) { - // Let's dispatch an "additionallanguageschange" event on the document. - let doc = this._window.document; - let event = doc.createEvent("CustomEvent"); - event.initCustomEvent("additionallanguageschange", true, true, - Cu.cloneInto(msg.languages, this._window)); - doc.dispatchEvent(event); - } - break; - case "Webapps:GetLocalizationResource:Return": - this.removeMessageListeners(["Webapps:GetLocalizationResource:Return"]); - if (msg.error) { - req.reject(new this._window.DOMError(msg.error)); - } else { - req.resolve(Cu.cloneInto(msg.data, this._window)); - } - break; } this.removeRequest(msg.requestID); }, @@ -258,8 +231,7 @@ WebappsRegistry.prototype = { uninit: function() { this._mgmt = null; cpmm.sendAsyncMessage("Webapps:UnregisterForMessages", - ["Webapps:Install:Return:OK", - "Webapps:AdditionalLanguageChange"]); + ["Webapps:Install:Return:OK"]); }, installPackage: function(aURL, aParams) { @@ -276,69 +248,19 @@ WebappsRegistry.prototype = { return request; }, - _getCurrentAppManifestURL: function() { - let appId = this._window.document.nodePrincipal.appId; - if (appId === Ci.nsIScriptSecurityManager.NO_APP_ID) { - return null; - } - - return appsService.getManifestURLByLocalId(appId); - }, - - getAdditionalLanguages: function() { - let manifestURL = AppsUtils.getAppManifestURLFromWindow(this._window); - - return new this._window.Promise((aResolve, aReject) => { - if (!manifestURL) { - aReject("NotInApp"); - } else { - let langs = DOMApplicationRegistry.getAdditionalLanguages(manifestURL); - aResolve(Cu.cloneInto(langs, this._window)); - } - }); - }, - - getLocalizationResource: function(aLanguage, aVersion, aPath, aType) { - let manifestURL = AppsUtils.getAppManifestURLFromWindow(this._window); - - if (!manifestURL) { - return new Promise((aResolve, aReject) => { - aReject("NotInApp"); - }); - } - - this.addMessageListeners(["Webapps:GetLocalizationResource:Return"]); - return this.createPromise((aResolve, aReject) => { - cpmm.sendAsyncMessage("Webapps:GetLocalizationResource", { - manifestURL: manifestURL, - lang: aLanguage, - version: aVersion, - path: aPath, - dataType: aType, - oid: this._id, - requestID: this.getPromiseResolverId({ - resolve: aResolve, - reject: aReject - }) - }); - }); - }, - // nsIDOMGlobalPropertyInitializer implementation init: function(aWindow) { const prefs = new Preferences(); this._window = aWindow; - this.initDOMRequestHelper(aWindow, ["Webapps:Install:Return:OK", - "Webapps:AdditionalLanguageChange"]); + this.initDOMRequestHelper(aWindow, "Webapps:Install:Return:OK"); let util = this._window.QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIDOMWindowUtils); this._id = util.outerWindowID; cpmm.sendAsyncMessage("Webapps:RegisterForMessages", - { messages: ["Webapps:Install:Return:OK", - "Webapps:AdditionalLanguageChange"]}); + { messages: ["Webapps:Install:Return:OK"]}); let principal = aWindow.document.nodePrincipal; let appId = principal.appId; diff --git a/dom/apps/Webapps.jsm b/dom/apps/Webapps.jsm index 82f39505b3df..345ce8b50a2e 100755 --- a/dom/apps/Webapps.jsm +++ b/dom/apps/Webapps.jsm @@ -81,9 +81,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", XPCOMUtils.defineLazyModuleGetter(this, "ScriptPreloader", "resource://gre/modules/ScriptPreloader.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "Langpacks", - "resource://gre/modules/Langpacks.jsm"); - XPCOMUtils.defineLazyModuleGetter(this, "TrustedHostedAppsUtils", "resource://gre/modules/TrustedHostedAppsUtils.jsm"); @@ -246,9 +243,6 @@ this.DOMApplicationRegistry = { ["webapps", "webapps.json"], true).path; this.loadAndUpdateApps(); - - Langpacks.registerRegistryFunctions(this.broadcastMessage.bind(this), - this._appIdForManifestURL.bind(this)); }, // loads the current registry, that could be empty on first run. @@ -430,7 +424,6 @@ this.DOMApplicationRegistry = { } app.kind = this.appKind(app, aResult.manifest); UserCustomizations.register(aResult.manifest, app); - Langpacks.register(app, aResult.manifest); }); // Nothing else to do but notifying we're ready. @@ -1156,7 +1149,6 @@ this.DOMApplicationRegistry = { this._registerInterAppConnections(manifest, app); appsToRegister.push({ manifest: manifest, app: app }); UserCustomizations.register(manifest, app); - Langpacks.register(app, manifest); }); this._safeToClone.resolve(); this._registerActivitiesForApps(appsToRegister, aRunUpdate); @@ -1528,8 +1520,6 @@ this.DOMApplicationRegistry = { this.safeToClone.then( () => { for (let id in this.webapps) { tmp.push({ id: id }); - this.webapps[id].additionalLanguages = - Langpacks.getAdditionalLanguages(this.webapps[id].manifestURL).langs; } this._readManifests(tmp).then( function(manifests) { @@ -1974,10 +1964,6 @@ this.DOMApplicationRegistry = { // Update the asm.js scripts we need to compile. yield ScriptPreloader.preload(app, newManifest); - - // Update langpack information. - Langpacks.register(app, newManifest); - yield this._saveApps(); // Update the handlers and permissions for this app. this.updateAppHandlers(oldManifest, newManifest, app); @@ -2095,13 +2081,11 @@ this.DOMApplicationRegistry = { this.notifyAppsRegistryReady(); } - // Update user customizations and langpacks. + // Update user customizations. if (aOldManifest) { UserCustomizations.unregister(aOldManifest, aApp); - Langpacks.unregister(aApp, aOldManifest); } UserCustomizations.register(aNewManifest, aApp); - Langpacks.register(aApp, aNewManifest); }, checkForUpdate: function(aData, aMm) { @@ -3201,9 +3185,6 @@ this.DOMApplicationRegistry = { // Check if we have asm.js code to preload for this application. yield ScriptPreloader.preload(aNewApp, aManifest); - // Update langpack information. - yield Langpacks.register(aNewApp, aManifest); - this.broadcastMessage("Webapps:FireEvent", { eventType: ["downloadsuccess", "downloadapplied"], manifestURL: aNewApp.manifestURL @@ -4113,7 +4094,6 @@ this.DOMApplicationRegistry = { this._unregisterActivities(aApp.manifest, aApp); } UserCustomizations.unregister(aApp.manifest, aApp); - Langpacks.unregister(aApp, aApp.manifest); let dir = this._getAppDir(id); try { diff --git a/dom/apps/moz.build b/dom/apps/moz.build index 46966146caf7..925e7b5a7304 100644 --- a/dom/apps/moz.build +++ b/dom/apps/moz.build @@ -34,7 +34,6 @@ EXTRA_JS_MODULES += [ 'AppsServiceChild.jsm', 'FreeSpaceWatcher.jsm', 'InterAppCommService.jsm', - 'Langpacks.jsm', 'OfflineCacheInstaller.jsm', 'PermissionsInstaller.jsm', 'PermissionsTable.jsm', diff --git a/dom/apps/tests/langpack/event.html b/dom/apps/tests/langpack/event.html deleted file mode 100644 index ca9170d083de..000000000000 --- a/dom/apps/tests/langpack/event.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - Langpack Test : event - - - -

Langpack Test : event

- - \ No newline at end of file diff --git a/dom/apps/tests/langpack/fr/app.json b/dom/apps/tests/langpack/fr/app.json deleted file mode 100644 index a19f3feffd4e..000000000000 --- a/dom/apps/tests/langpack/fr/app.json +++ /dev/null @@ -1 +0,0 @@ -{ "hello" : "Bonjour" } \ No newline at end of file diff --git a/dom/apps/tests/langpack/fr/app.properties b/dom/apps/tests/langpack/fr/app.properties deleted file mode 100644 index 4641a774d68a..000000000000 --- a/dom/apps/tests/langpack/fr/app.properties +++ /dev/null @@ -1 +0,0 @@ -hello=Bonjour \ No newline at end of file diff --git a/dom/apps/tests/langpack/index.html b/dom/apps/tests/langpack/index.html deleted file mode 100644 index a854fcd4b440..000000000000 --- a/dom/apps/tests/langpack/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - Langpack Test : getAdditionalLanguages() - - - -

Langpack Test : getAdditionalLanguages()

- - \ No newline at end of file diff --git a/dom/apps/tests/langpack/lang1.webapp b/dom/apps/tests/langpack/lang1.webapp deleted file mode 100644 index 56025f6de318..000000000000 --- a/dom/apps/tests/langpack/lang1.webapp +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "French locale", - "languages-target" : { "app://*.gaiamobile.org/manifest.webapp": "2.2" }, - "languages-provided": { - "fr": { - "version": 201411051234, - "name": "Français", - "apps": { - "http://mochi.test:8888/tests/dom/apps/tests/langpack/manifest.webapp": "tests/dom/apps/tests/langpack/fr/" - } - } - }, - "role" : "langpack" -} diff --git a/dom/apps/tests/langpack/lang1.webapp^headers^ b/dom/apps/tests/langpack/lang1.webapp^headers^ deleted file mode 100644 index 3cea33fec8b6..000000000000 --- a/dom/apps/tests/langpack/lang1.webapp^headers^ +++ /dev/null @@ -1 +0,0 @@ -Content-Type: application/manifest+json \ No newline at end of file diff --git a/dom/apps/tests/langpack/lang2.webapp b/dom/apps/tests/langpack/lang2.webapp deleted file mode 100644 index 96af45cd4c7f..000000000000 --- a/dom/apps/tests/langpack/lang2.webapp +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "German an Polish locales", - "languages-target" : { "app://*.gaiamobile.org/manifest.webapp": "2.2" }, - "languages-provided": { - "de": { - "version": 201411051234, - "name": "Deutsch", - "apps": { - "http://mochi.test:8888/tests/dom/apps/tests/langpack/manifest.webapp": "tests/dom/apps/tests/langpack/de/" - } - }, - "pl": { - "version": 201411051234, - "name": "Polski", - "apps": { - "http://mochi.test:8888/tests/dom/apps/tests/langpack/manifest.webapp": "tests/dom/apps/tests/langpack/pl/" - } - } - }, - "role" : "langpack" -} diff --git a/dom/apps/tests/langpack/lang2.webapp^headers^ b/dom/apps/tests/langpack/lang2.webapp^headers^ deleted file mode 100644 index 3cea33fec8b6..000000000000 --- a/dom/apps/tests/langpack/lang2.webapp^headers^ +++ /dev/null @@ -1 +0,0 @@ -Content-Type: application/manifest+json \ No newline at end of file diff --git a/dom/apps/tests/langpack/manifest.webapp b/dom/apps/tests/langpack/manifest.webapp deleted file mode 100644 index 87fe0590bff2..000000000000 --- a/dom/apps/tests/langpack/manifest.webapp +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "Localization test app" -} diff --git a/dom/apps/tests/langpack/manifest.webapp^headers^ b/dom/apps/tests/langpack/manifest.webapp^headers^ deleted file mode 100644 index 3cea33fec8b6..000000000000 --- a/dom/apps/tests/langpack/manifest.webapp^headers^ +++ /dev/null @@ -1 +0,0 @@ -Content-Type: application/manifest+json \ No newline at end of file diff --git a/dom/apps/tests/langpack/resources.html b/dom/apps/tests/langpack/resources.html deleted file mode 100644 index 15f9b2521af4..000000000000 --- a/dom/apps/tests/langpack/resources.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - Langpack Test : resources - - - -

Langpack Test : resources

- - \ No newline at end of file diff --git a/dom/apps/tests/mochitest.ini b/dom/apps/tests/mochitest.ini index 5727a5c00348..798a32bd9617 100644 --- a/dom/apps/tests/mochitest.ini +++ b/dom/apps/tests/mochitest.ini @@ -22,7 +22,6 @@ support-files = file_widget_app.template.webapp file_widget_app.template.html file_test_widget.js - langpack/* signed_app.sjs signed_app_template.webapp signed/* @@ -39,7 +38,6 @@ skip-if = os == "android" || toolkit == "gonk" # embed-apps doesn't work in moch [test_import_export.html] [test_install_multiple_apps_origin.html] [test_install_receipts.html] -[test_langpacks.html] [test_marketplace_pkg_install.html] skip-if = buildapp == "b2g" || toolkit == "android" # see bug 989806 [test_packaged_app_install.html] diff --git a/dom/apps/tests/test_langpacks.html b/dom/apps/tests/test_langpacks.html deleted file mode 100644 index 9310f37839ff..000000000000 --- a/dom/apps/tests/test_langpacks.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - Test for Bug 1108096 - Langpack support - - - - - - -

- -
-
-
- - diff --git a/dom/tests/mochitest/webapps/test_list_api.xul b/dom/tests/mochitest/webapps/test_list_api.xul index 0adc50986d16..f5a4c9ee86af 100644 --- a/dom/tests/mochitest/webapps/test_list_api.xul +++ b/dom/tests/mochitest/webapps/test_list_api.xul @@ -20,9 +20,7 @@ var props = { checkInstalled: "function", - getAdditionalLanguages: "function", getInstalled: "function", - getLocalizationResource: "function", getSelf: "function", install: "function", installPackage: "function", diff --git a/dom/webidl/Apps.webidl b/dom/webidl/Apps.webidl index 37fd9e9c6cfb..212ac8a415ec 100644 --- a/dom/webidl/Apps.webidl +++ b/dom/webidl/Apps.webidl @@ -9,18 +9,6 @@ dictionary InstallParameters { sequence categories = []; }; -dictionary LanguageDesc { - DOMString target; - DOMString version; - DOMString name; -}; - -enum LocaleResourceType { - "binary", - "json", - "text" -}; - [NoInterfaceObject, NavigatorProperty="mozApps", JSImplementation="@mozilla.org/webapps;1"] interface DOMApplicationsRegistry { @@ -31,17 +19,6 @@ interface DOMApplicationsRegistry { DOMRequest getSelf(); DOMRequest getInstalled(); DOMRequest checkInstalled(DOMString manifestUrl); - - // Language pack API. - // These promises will be rejected if the page is not in an app context, - // i.e. they are implicitely acting on getSelf(). - Promise>> getAdditionalLanguages(); - // Resolves to a different object depending on the dataType value. - Promise - getLocalizationResource(DOMString language, - DOMString version, - DOMString path, - LocaleResourceType dataType); }; [JSImplementation="@mozilla.org/webapps/application;1", ChromeOnly] @@ -94,18 +71,18 @@ interface DOMApplication : EventTarget { * https://wiki.mozilla.org/WebAPI/Inter_App_Communication_Alt_proposal * */ - Promise connect(DOMString keyword, optional any rules); + Promise connect(DOMString keyword, optional any rules); - Promise> getConnections(); + Promise> getConnections(); - // Receipts handling functions. - DOMRequest addReceipt(optional DOMString receipt); - DOMRequest removeReceipt(optional DOMString receipt); - DOMRequest replaceReceipt(optional DOMString oldReceipt, - optional DOMString newReceipt); + // Receipts handling functions. + DOMRequest addReceipt(optional DOMString receipt); + DOMRequest removeReceipt(optional DOMString receipt); + DOMRequest replaceReceipt(optional DOMString oldReceipt, + optional DOMString newReceipt); - // Export this app as a shareable Blob. - Promise export(); + // Export this app as a shareable Blob. + Promise export(); }; [JSImplementation="@mozilla.org/webapps/manager;1", From 08f5bc29a09e73ffc11ba7ee4f4570edcdd1a733 Mon Sep 17 00:00:00 2001 From: Eden Chuang Date: Mon, 12 Jan 2015 12:01:07 +0800 Subject: [PATCH 32/34] Bug 1091544 - Set volume as STATE_MOUNT_FAIL while mounting the volume failed, r=dhylands. --- dom/system/gonk/AutoMounter.cpp | 7 ++++--- dom/system/gonk/Volume.cpp | 9 ++++++++- dom/system/gonk/nsIVolume.idl | 5 ++++- dom/system/gonk/nsVolume.cpp | 1 + 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/dom/system/gonk/AutoMounter.cpp b/dom/system/gonk/AutoMounter.cpp index c27f6f6aa63b..63d9121936c7 100644 --- a/dom/system/gonk/AutoMounter.cpp +++ b/dom/system/gonk/AutoMounter.cpp @@ -1059,15 +1059,16 @@ AutoMounter::UpdateState() vol->StartUnmount(mResponseCallback); return; // UpdateState will be called again when the Unmount command completes } - case nsIVolume::STATE_IDLE: { - LOG("UpdateState: Volume %s is nsIVolume::STATE_IDLE", vol->NameStr()); + case nsIVolume::STATE_IDLE: + case nsIVolume::STATE_MOUNT_FAIL: { + LOG("UpdateState: Volume %s is %s", vol->NameStr(), vol->StateStr()); if (vol->IsFormatting() && !vol->IsFormatRequested()) { vol->SetFormatRequested(false); LOG("UpdateState: Mounting %s", vol->NameStr()); vol->StartMount(mResponseCallback); break; } - if (tryToShare && vol->IsSharingEnabled()) { + if (tryToShare && vol->IsSharingEnabled() && volState == nsIVolume::STATE_IDLE) { // Volume is unmounted. We can go ahead and share. LOG("UpdateState: Sharing %s", vol->NameStr()); vol->StartShare(mResponseCallback); diff --git a/dom/system/gonk/Volume.cpp b/dom/system/gonk/Volume.cpp index 6ea8a40a7cc8..fce564d403e3 100644 --- a/dom/system/gonk/Volume.cpp +++ b/dom/system/gonk/Volume.cpp @@ -337,11 +337,13 @@ Volume::SetState(Volume::STATE aNewState) break; case nsIVolume::STATE_MOUNTED: + case nsIVolume::STATE_MOUNT_FAIL: mMountRequested = false; mIsFormatting = false; mIsSharing = false; mIsUnmounting = false; break; + case nsIVolume::STATE_FORMATTING: mFormatRequested = false; mIsFormatting = true; @@ -541,7 +543,12 @@ Volume::HandleVoldResponse(int aResponseCode, nsCWhitespaceTokenizer& aTokenizer // then the AutoMounter will set the volume as STATE_MOUNTED. SetState(nsIVolume::STATE_CHECKMNT); } else { - SetState(newState); + if (State() == nsIVolume::STATE_CHECKING && newState == nsIVolume::STATE_IDLE) { + LOG("Mount of volume '%s' failed", NameStr()); + SetState(nsIVolume::STATE_MOUNT_FAIL); + } else { + SetState(newState); + } } break; } diff --git a/dom/system/gonk/nsIVolume.idl b/dom/system/gonk/nsIVolume.idl index 01e2c5227fd5..ac7d3480412b 100644 --- a/dom/system/gonk/nsIVolume.idl +++ b/dom/system/gonk/nsIVolume.idl @@ -5,10 +5,12 @@ #include "nsISupports.idl" #include "nsIVolumeStat.idl" -[scriptable, uuid(946B5334-6EC9-11E4-8689-F3061E5D46B0)] +[scriptable, uuid(EE752CB8-8FD7-11E4-A602-70221D5D46B0)] interface nsIVolume : nsISupports { // These MUST match the states from android's system/vold/Volume.h header + // Note: Changes made to the STATE_xxx names should also be reflected in the + // NS_VolumeStateStr function found in Volume.cpp const long STATE_INIT = -1; const long STATE_NOMEDIA = 0; const long STATE_IDLE = 1; @@ -20,6 +22,7 @@ interface nsIVolume : nsISupports const long STATE_SHARED = 7; const long STATE_SHAREDMNT = 8; const long STATE_CHECKMNT = 100; + const long STATE_MOUNT_FAIL = 101; // The name of the volume. Often there is only one volume, called sdcard. // But some phones support multiple volumes. diff --git a/dom/system/gonk/nsVolume.cpp b/dom/system/gonk/nsVolume.cpp index 6f0050013877..45f97a08ee69 100644 --- a/dom/system/gonk/nsVolume.cpp +++ b/dom/system/gonk/nsVolume.cpp @@ -38,6 +38,7 @@ NS_VolumeStateStr(int32_t aState) case nsIVolume::STATE_SHARED: return "Shared"; case nsIVolume::STATE_SHAREDMNT: return "Shared-Mounted"; case nsIVolume::STATE_CHECKMNT: return "Check-Mounted"; + case nsIVolume::STATE_MOUNT_FAIL: return "Mount-Fail"; } return "???"; } From 530c02343c8b1b90b2f613f25ef6f1b3896c257f Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 12 Jan 2015 00:27:22 -0800 Subject: [PATCH 33/34] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/4f9b71ccf077 Author: Fabien Cazenave Desc: Merge pull request #27295 from anefzaoui/settings-rtl-refactor Bug 1120194 - Refactor RTL styling for Settings App, r=kaze ======== https://hg.mozilla.org/integration/gaia-central/rev/24bd108b5f86 Author: Ahmed Nefzaoui Desc: Bug 1120194 - Refactor RTL styling for Settings App --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 49050818e119..1383e58ce791 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "89fdf202fdfbc815e9e5993b56f8ea8f1ea61272", + "revision": "4f9b71ccf0770ad99ba7f802d951f569e10b1021", "repo_path": "integration/gaia-central" } From 3417b0faa77498b1942e2797747c4a22bb620e62 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 12 Jan 2015 00:37:16 -0800 Subject: [PATCH 34/34] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 8425e6fe1741..f5d84ae720ac 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index cf1a7d48aa83..ff52d349add7 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 2552aa587ed3..a2fd14e2248c 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 09fb2034c636..4bc23b871a05 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index cf1a7d48aa83..ff52d349add7 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index ececdcdef9ca..72e1bd02fd4c 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 903c80702e8d..cda8f174ffe0 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 7e15e13d99f1..748935f98a4d 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 60ba023f0880..546354586841 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 71a8a474dd28..63ec3e016ad4 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 274166bcd260..b5e81574825a 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - +