15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_SIM_DIALOG_DELEGATE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_SIM_DIALOG_DELEGATE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/native_widget_types.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/web_dialogs/web_dialog_delegate.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SIM unlock dialog displayed in cases when SIM card has to be unlocked.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SimDialogDelegate : public ui::WebDialogDelegate {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Type of the SIM dialog that is launched.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef enum SimDialogMode {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SIM_DIALOG_UNLOCK       = 0,  // General unlock flow dialog (PIN/PUK).
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SIM_DIALOG_CHANGE_PIN   = 1,  // Change PIN dialog.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SIM_DIALOG_SET_LOCK_ON  = 2,  // Enable RequirePin restriction.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SIM_DIALOG_SET_LOCK_OFF = 3,  // Disable RequirePin restriction.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } SimDialogMode;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit SimDialogDelegate(SimDialogMode dialog_mode);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shows the SIM unlock dialog box with one of the specified modes.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void ShowDialog(gfx::NativeWindow owning_window, SimDialogMode mode);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~SimDialogDelegate();
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from ui::WebDialogDelegate:
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ui::ModalType GetDialogModalType() const OVERRIDE;
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual base::string16 GetDialogTitle() const OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual GURL GetDialogContentURL() const OVERRIDE;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetWebUIMessageHandlers(
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      std::vector<content::WebUIMessageHandler*>* handlers) const OVERRIDE;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetDialogSize(gfx::Size* size) const OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual std::string GetDialogArgs() const OVERRIDE;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnCloseContents(
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content::WebContents* source, bool* out_close_dialog) OVERRIDE;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldShowDialogTitle() const OVERRIDE;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HandleContextMenu(
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const content::ContextMenuParams& params) OVERRIDE;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimDialogMode dialog_mode_;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(SimDialogDelegate);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_SIM_DIALOG_DELEGATE_H_
57