Commit 315debbd authored by Becky Zhou's avatar Becky Zhou Committed by Commit Bot

[Feed] Fix memory leak on enterprise policy changed on FeedNewTabPage

We need to detach the MarginResizer so that it doesn't hold onto any
Stream related object such as HeaderViewHolder.

Bug: 884906
Change-Id: Icf2dd3e367735185f5d08378651e6a16667729ac
Reviewed-on: https://chromium-review.googlesource.com/1235016
Commit-Queue: Becky Zhou <huayinz@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592871}
parent 2409897c
......@@ -72,7 +72,9 @@ public class FeedNewTabPage extends NewTabPage {
private @Nullable FeedImageLoader mImageLoader;
private @Nullable StreamLifecycleManager mStreamLifecycleManager;
private @Nullable SectionHeaderView mSectionHeaderView;
private @Nullable MarginResizer mSectionHeaderViewMarginResizer;
private @Nullable PersonalizedSigninPromoView mSigninPromoView;
private @Nullable MarginResizer mSignInPromoViewMarginResizer;
// Used when Feed is disabled by policy.
private @Nullable ScrollView mScrollViewForPolicy;
......@@ -322,7 +324,8 @@ public class FeedNewTabPage extends NewTabPage {
LayoutInflater inflater = LayoutInflater.from(activity);
mSectionHeaderView = (SectionHeaderView) inflater.inflate(
R.layout.new_tab_page_snippets_expandable_header, null);
MarginResizer.createAndAttach(mSectionHeaderView, mUiConfig, mDefaultMargin, mWideMargin);
mSectionHeaderViewMarginResizer = MarginResizer.createAndAttach(
mSectionHeaderView, mUiConfig, mDefaultMargin, mWideMargin);
View view = mStream.getView();
view.setBackgroundColor(Color.WHITE);
......@@ -359,7 +362,11 @@ public class FeedNewTabPage extends NewTabPage {
mImageLoader.destroy();
mImageLoader = null;
mSectionHeaderView = null;
mSectionHeaderViewMarginResizer.detach();
mSectionHeaderViewMarginResizer = null;
mSigninPromoView = null;
if (mSignInPromoViewMarginResizer != null) mSignInPromoViewMarginResizer.detach();
mSignInPromoViewMarginResizer = null;
}
mScrollViewForPolicy = new ScrollView(mTab.getActivity());
......@@ -394,7 +401,8 @@ public class FeedNewTabPage extends NewTabPage {
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp.bottomMargin = mDefaultMargin;
mSigninPromoView.setLayoutParams(lp);
MarginResizer.createAndAttach(mSigninPromoView, mUiConfig, mDefaultMargin, mWideMargin);
mSignInPromoViewMarginResizer = MarginResizer.createAndAttach(
mSigninPromoView, mUiConfig, mDefaultMargin, mWideMargin);
}
return mSigninPromoView;
}
......
......@@ -43,10 +43,14 @@ public class MarginResizer implements DisplayStyleObserver {
* @param config The UiConfig object to subscribe to.
* @param defaultMarginPixels Margin size to use in {@link HorizontalDisplayStyle#REGULAR}.
* @param wideMarginPixels Margin size to use in {@link HorizontalDisplayStyle#WIDE}.
* @return The {@link MarginResizer} that is created and attached.
*/
public static void createAndAttach(
public static MarginResizer createAndAttach(
View view, UiConfig config, int defaultMarginPixels, int wideMarginPixels) {
new MarginResizer(view, config, defaultMarginPixels, wideMarginPixels).attach();
MarginResizer marginResizer =
new MarginResizer(view, config, defaultMarginPixels, wideMarginPixels);
marginResizer.attach();
return marginResizer;
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment