1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_RENDERER_NET_NET_ERROR_PAGE_CONTROLLER_H_ 6#define CHROME_RENDERER_NET_NET_ERROR_PAGE_CONTROLLER_H_ 7 8#include "base/macros.h" 9#include "content/public/renderer/render_frame_observer.h" 10#include "gin/arguments.h" 11#include "gin/wrappable.h" 12 13 14namespace content { 15class RenderFrame; 16} 17 18// This class makes various helper functions available to the 19// error page loaded by NetErrorHelper. It is bound to the JavaScript 20// window.errorPageController object. 21class NetErrorPageController 22 : public gin::Wrappable<NetErrorPageController>, 23 public content::RenderFrameObserver { 24 public: 25 static gin::WrapperInfo kWrapperInfo; 26 27 static void Install(content::RenderFrame* render_frame); 28 29 private: 30 explicit NetErrorPageController(content::RenderFrame* render_frame); 31 virtual ~NetErrorPageController(); 32 33 // Execute a "Load Stale" button click. 34 bool LoadStaleButtonClick(); 35 36 // Execute a "Reload" button click. 37 bool ReloadButtonClick(); 38 39 // Execute a "Details" button click. 40 bool DetailsButtonClick(); 41 42 // Track a click when the page has suggestions from the navigation correction 43 // service. 44 bool TrackClick(const gin::Arguments& args); 45 46 // gin::WrappableBase 47 virtual gin::ObjectTemplateBuilder GetObjectTemplateBuilder( 48 v8::Isolate* isolate) OVERRIDE; 49 50 // RenderFrameObserver. Overridden to avoid being destroyed when RenderFrame 51 // goes away; NetErrorPageController objects are owned by the JS 52 // garbage collector. 53 virtual void OnDestruct() OVERRIDE; 54 55 DISALLOW_COPY_AND_ASSIGN(NetErrorPageController); 56}; 57 58#endif // CHROME_RENDERER_NET_NET_ERROR_PAGE_CONTROLLER_H_ 59