Bug 1194751 - Part 6.1 change nsScreenManagerAndroid::ScreenForId to a concrete method. r=snorp

nsIScreen::GetId and nsIScreenManager::ScreenForId is removed in patch
part 6. These methods are still used by Fennec on Android to implement
Presentation API support so I changed them to concrete methods in
nsScreenAndroid and nsScreenManagerAndroid.

nsScreenAndroid and nsScreenManagerAndroid does not use the generic
Screen and ScreenManager class because its implementation is quite
different.

MozReview-Commit-ID: 4rxxIgvNxMb

--HG--
extra : rebase_source : 1f8a437f6a9465bd79ce9be37c9e3de6f6d7b2fd
This commit is contained in:
Kan-Ru Chen 2017-03-09 19:30:53 +08:00
Родитель 8ba424eabb
Коммит 1e8d2f14b9
3 изменённых файлов: 13 добавлений и 21 удалений

Просмотреть файл

@ -54,13 +54,6 @@ nsScreenAndroid::GetDensity() {
return 1.0;
}
NS_IMETHODIMP
nsScreenAndroid::GetId(uint32_t *outId)
{
*outId = mId;
return NS_OK;
}
NS_IMETHODIMP
nsScreenAndroid::GetRect(int32_t *outLeft, int32_t *outTop, int32_t *outWidth, int32_t *outHeight)
{
@ -179,24 +172,24 @@ nsScreenManagerAndroid::~nsScreenManagerAndroid()
NS_IMETHODIMP
nsScreenManagerAndroid::GetPrimaryScreen(nsIScreen **outScreen)
{
ScreenForId(PRIMARY_SCREEN_ID, outScreen);
RefPtr<nsScreenAndroid> screen = ScreenForId(PRIMARY_SCREEN_ID);
if (screen) {
screen.forget(outScreen);
}
return NS_OK;
}
NS_IMETHODIMP
nsScreenManagerAndroid::ScreenForId(uint32_t aId,
nsIScreen **outScreen)
already_AddRefed<nsScreenAndroid>
nsScreenManagerAndroid::ScreenForId(uint32_t aId)
{
for (size_t i = 0; i < mScreens.Length(); ++i) {
if (aId == mScreens[i]->GetId()) {
nsCOMPtr<nsIScreen> screen = (nsIScreen*) mScreens[i];
screen.forget(outScreen);
return NS_OK;
RefPtr<nsScreenAndroid> screen = mScreens[i];
return screen.forget();
}
}
*outScreen = nullptr;
return NS_OK;
return nullptr;
}
NS_IMETHODIMP

Просмотреть файл

@ -20,7 +20,6 @@ public:
nsScreenAndroid(DisplayType aDisplayType, nsIntRect aRect);
~nsScreenAndroid();
NS_IMETHOD GetId(uint32_t* aId) override;
NS_IMETHOD GetRect(int32_t* aLeft, int32_t* aTop, int32_t* aWidth, int32_t* aHeight) override;
NS_IMETHOD GetAvailRect(int32_t* aLeft, int32_t* aTop, int32_t* aWidth, int32_t* aHeight) override;
NS_IMETHOD GetPixelDepth(int32_t* aPixelDepth) override;
@ -52,6 +51,7 @@ public:
NS_DECL_ISUPPORTS
NS_DECL_NSISCREENMANAGER
already_AddRefed<nsScreenAndroid> ScreenForId(uint32_t aId);
already_AddRefed<nsScreenAndroid> AddScreen(DisplayType aDisplayType,
nsIntRect aRect = nsIntRect());
void RemoveScreen(uint32_t aScreenId);

Просмотреть файл

@ -2342,10 +2342,9 @@ nsWindow::GetWidgetScreen()
do_GetService("@mozilla.org/gfx/screenmanager;1");
MOZ_ASSERT(screenMgr, "Failed to get nsIScreenManager");
nsCOMPtr<nsIScreen> screen;
screenMgr->ScreenForId(mScreenId, getter_AddRefs(screen));
return screen.forget();
RefPtr<nsScreenManagerAndroid> screenMgrAndroid =
(nsScreenManagerAndroid*) screenMgr.get();
return screenMgrAndroid->ScreenForId(mScreenId);
}
jni::DependentRef<java::GeckoLayerClient>