// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.browser.bookmarks; import org.chromium.base.metrics.RecordUserAction; import org.chromium.chrome.browser.init.AsyncInitializationActivity; import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim; import org.chromium.components.bookmarks.BookmarkId; /** * This invisible activity adds a bookmark with the supplied title and url, then launches an * activity to show the new bookmark. * * This activity is used only on pre-M devices with Chrome pre-installed. When a third-party app * calls the now-obsolete method Browser.saveBookmark(), the call is forwarded through * AddBookmarkProxyActivity and launches this activity. See http://crbug.com/581961 for details. * * TODO(newt): remove this once Android L is no longer supported. */ public class BookmarkAddActivity extends AsyncInitializationActivity { private static final String EXTRA_TITLE = "title"; private static final String EXTRA_URL = "url"; private BookmarkModel mModel; @Override protected void setContentView() {} @Override public void finishNativeInitialization() { RecordUserAction.record("MobileAddBookmarkViaIntent"); final String title = getIntent().getStringExtra(EXTRA_TITLE); final String url = getIntent().getStringExtra(EXTRA_URL); // Partner bookmarks need to be loaded explicitly. PartnerBookmarksShim.kickOffReading(this); // Store mModel as a member variable so it can't be garbage collected. Otherwise the // Runnable might never be run. mModel = new BookmarkModel(); mModel.runAfterBookmarkModelLoaded(new Runnable() { @Override public void run() { BookmarkId bookmarkId = BookmarkUtils.addBookmarkSilently( BookmarkAddActivity.this, mModel, title, url); if (bookmarkId != null) { BookmarkUtils.startEditActivity(BookmarkAddActivity.this, bookmarkId); } finish(); } }); } @Override protected void onDestroy() { super.onDestroy(); if (mModel != null) { mModel.destroy(); mModel = null; } } }