| 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_
|
|
|