Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1035)

Unified Diff: chrome/browser/banners/app_banner_data_fetcher.h

Issue 2156113002: Replace AppBannerDataFetcher with InstallableManager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@banner-refactor
Patch Set: Naming, includes Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/banners/app_banner_data_fetcher.h
diff --git a/chrome/browser/banners/app_banner_data_fetcher.h b/chrome/browser/banners/app_banner_data_fetcher.h
deleted file mode 100644
index e5b259aecbd67de834c00b4256890f8d147fb267..0000000000000000000000000000000000000000
--- a/chrome/browser/banners/app_banner_data_fetcher.h
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef CHROME_BROWSER_BANNERS_APP_BANNER_DATA_FETCHER_H_
-#define CHROME_BROWSER_BANNERS_APP_BANNER_DATA_FETCHER_H_
-
-#include <memory>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/observer_list.h"
-#include "base/time/time.h"
-#include "chrome/common/web_application_info.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_observer.h"
-#include "content/public/common/manifest.h"
-#include "third_party/WebKit/public/platform/modules/app_banner/WebAppBannerPromptReply.h"
-
-namespace chrome {
-class BitmapFetcher;
-} // namespace chrome
-
-namespace infobars {
-class InfoBar;
-} // namespace infobars
-
-namespace banners {
-class AppBannerDataFetcher;
-
-// Fetches data required to show a web app banner for the URL currently shown by
-// the WebContents.
-class AppBannerDataFetcher : public base::RefCountedThreadSafe<
- AppBannerDataFetcher,
- content::BrowserThread::DeleteOnUIThread>,
- public content::WebContentsObserver {
- public:
- class Observer {
- public:
- virtual void OnDecidedWhetherToShow(AppBannerDataFetcher* fetcher,
- bool will_show) = 0;
- virtual void OnFetcherDestroyed(AppBannerDataFetcher* fetcher) = 0;
- };
-
- class Delegate {
- public:
- // Called to handle a non-web app. Returns |true| if the non-web app can be
- // handled, and the fetcher needs to remain active and wait for a callback.
- virtual bool HandleNonWebApp(const std::string& platform,
- const GURL& url,
- const std::string& id,
- bool is_debug_mode) = 0;
- };
-
- // Returns the current time.
- static base::Time GetCurrentTime();
-
- // Fast-forwards the current time for testing.
- static void SetTimeDeltaForTesting(int days);
-
- AppBannerDataFetcher(content::WebContents* web_contents,
- base::WeakPtr<Delegate> weak_delegate,
- int ideal_icon_size_in_dp,
- int minimum_icon_size_in_dp,
- bool is_debug_mode);
-
- // Begins creating a banner for the URL being displayed by the Delegate's
- // WebContents.
- void Start(const GURL& validated_url, ui::PageTransition transition_type);
-
- // Stops the pipeline when any asynchronous calls return.
- void Cancel();
-
- // Replaces the WebContents that is being observed.
- void ReplaceWebContents(content::WebContents* web_contents);
-
- // Adds an observer to the list.
- void AddObserverForTesting(Observer* observer);
-
- // Removes an observer from the list.
- void RemoveObserverForTesting(Observer* observer);
-
- // Returns whether or not the pipeline has been stopped.
- bool is_active() { return is_active_; }
-
- // Returns whether the beforeinstallprompt Javascript event was canceled.
- bool was_canceled_by_page() { return was_canceled_by_page_; }
-
- // Returns whether the page has validly requested that the banner be shown
- // by calling prompt() on the beforeinstallprompt Javascript event.
- bool page_requested_prompt() { return page_requested_prompt_; }
-
- // Returns true when it was created by the user action in DevTools or
- // "bypass-app-banner-engagement-checks" flag is set.
- bool is_debug_mode() const { return is_debug_mode_; }
-
- // Returns the type of transition which triggered this fetch.
- ui::PageTransition transition_type() { return transition_type_; }
-
- // Returns the URL that kicked off the banner data retrieval.
- const GURL& validated_url() { return validated_url_; }
-
- // WebContentsObserver overrides.
- void WebContentsDestroyed() override;
- void DidNavigateMainFrame(
- const content::LoadCommittedDetails& details,
- const content::FrameNavigateParams& params) override;
- bool OnMessageReceived(const IPC::Message& message,
- content::RenderFrameHost* render_frame_host) override;
-
- protected:
- ~AppBannerDataFetcher() override;
-
- // Return a string describing what type of banner is being created. Used when
- // alerting websites that a banner is about to be created.
- virtual std::string GetBannerType();
-
- // Called after the manager sends a message to the renderer regarding its
- // intention to show a prompt. The renderer will send a message back with the
- // opportunity to cancel.
- void OnBannerPromptReply(content::RenderFrameHost* render_frame_host,
- int request_id,
- blink::WebAppBannerPromptReply reply,
- std::string referrer);
-
- // Called when the client has prevented a banner from being shown, and is
- // now requesting that it be shown later.
- void OnRequestShowAppBanner(content::RenderFrameHost* render_frame_host,
- int request_id);
-
- content::WebContents* GetWebContents();
- virtual std::string GetAppIdentifier();
- const GURL& manifest_url() { return manifest_url_; }
- const content::Manifest& manifest() { return manifest_; }
- void set_app_title(const base::string16& title) { app_title_ = title; }
- int event_request_id() { return event_request_id_; }
-
- // Fetches the icon at the given URL asynchronously, returning |false| if a
- // load could not be started.
- bool FetchAppIcon(content::WebContents* web_contents, const GURL& url);
-
- // Records that a banner was shown. The |event_name| corresponds to the RAPPOR
- // metric being recorded.
- void RecordDidShowBanner(const std::string& event_name);
-
- private:
- // Callbacks for data retrieval.
- void OnDidGetManifest(const GURL& manifest_url,
- const content::Manifest& manifest);
- void OnDidCheckHasServiceWorker(bool has_service_worker);
- void OnAppIconFetched(const SkBitmap& bitmap);
-
- // Called when it is determined that the webapp has fulfilled the initial
- // criteria of having a manifest and a service worker.
- void OnHasServiceWorker(content::WebContents* web_contents);
-
- // Returns whether the given web app has already been installed.
- virtual bool IsWebAppInstalled(content::BrowserContext* browser_context,
- const GURL& start_url);
-
- // Record that the banner could be shown at this point, if the triggering
- // heuristic allowed.
- void RecordCouldShowBanner();
-
- // Creates a banner for the app using the given icon.
- virtual void ShowBanner(const GURL& icon_url,
- const SkBitmap* icon,
- const base::string16& title,
- const std::string& referrer) = 0;
-
- // Returns whether the banner should be shown.
- bool CheckIfShouldShowBanner();
-
- // Returns whether the fetcher is active and web contents have not been
- // closed.
- bool CheckFetcherIsStillAlive(content::WebContents* web_contents);
-
- // Returns whether the given Manifest is following the requirements to show
- // a web app banner.
- static bool IsManifestValidForWebApp(const content::Manifest& manifest,
- content::WebContents* web_contents,
- bool is_debug_mode);
-
- const base::WeakPtr<Delegate> weak_delegate_;
- const int ideal_icon_size_in_dp_;
- const int minimum_icon_size_in_dp_;
- base::ObserverList<Observer> observer_list_;
- bool is_active_;
- bool was_canceled_by_page_;
- bool page_requested_prompt_;
- const bool is_debug_mode_;
- ui::PageTransition transition_type_;
- int event_request_id_;
- GURL app_icon_url_;
- std::unique_ptr<SkBitmap> app_icon_;
- std::string referrer_;
-
- GURL validated_url_;
- base::string16 app_title_;
-
- // The URL of the Web app manifest.
- GURL manifest_url_;
-
- content::Manifest manifest_;
-
- friend struct content::BrowserThread::DeleteOnThread<
- content::BrowserThread::UI>;
- friend class base::DeleteHelper<AppBannerDataFetcher>;
- friend class AppBannerDataFetcherUnitTest;
- friend class base::RefCounted<AppBannerDataFetcher>;
- DISALLOW_COPY_AND_ASSIGN(AppBannerDataFetcher);
-};
-
-} // namespace banners
-
-#endif // CHROME_BROWSER_BANNERS_APP_BANNER_DATA_FETCHER_H_
« no previous file with comments | « chrome/browser/android/banners/app_banner_manager_android.cc ('k') | chrome/browser/banners/app_banner_data_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698