Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 COMPONENTS_PASSWORD_MANAGER_CONTENT_RENDERER_CREDENTIAL_MANAGER_DISPATCH ER_H_ | |
| 6 #define COMPONENTS_PASSWORD_MANAGER_CONTENT_RENDERER_CREDENTIAL_MANAGER_DISPATCH ER_H_ | |
| 7 | |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/compiler_specific.h" | |
| 10 #include "base/id_map.h" | |
| 11 #include "content/public/renderer/render_process_observer.h" | |
| 12 #include "ipc/ipc_listener.h" | |
| 13 #include "ipc/ipc_sender.h" | |
|
Ilya Sherman
2014/08/19 23:55:53
nit: Looks like this is unused.
Mike West
2014/08/20 13:17:19
Done.
| |
| 14 #include "third_party/WebKit/public/platform/WebCredential.h" | |
| 15 #include "third_party/WebKit/public/platform/WebCredentialManager.h" | |
| 16 #include "third_party/WebKit/public/platform/WebString.h" | |
| 17 #include "third_party/WebKit/public/platform/WebURL.h" | |
| 18 #include "third_party/WebKit/public/platform/WebVector.h" | |
|
Ilya Sherman
2014/08/19 23:55:53
Are all of these needed in the header / can any of
Mike West
2014/08/20 13:17:20
I can drop all except WebVector and WebCredentialM
| |
| 19 | |
| 20 namespace content { | |
| 21 class RenderThread; | |
| 22 } | |
| 23 | |
| 24 namespace password_manager { | |
| 25 | |
| 26 struct CredentialInfo; | |
| 27 | |
| 28 // The CredentialManagerDispatcher implements the Blink platform interface | |
| 29 // WebCredentialManager, and acts as an intermediary between Blink-side calls | |
| 30 // to 'navigator.credential.*' and the password manager internals which live | |
| 31 // in the browser process. | |
| 32 // | |
| 33 // One instance of CredentialManagerDispatcher is created per RenderThread, | |
| 34 // held in a scoped_ptr on ChromeContentRendererClient. The dispatcher holds | |
| 35 // a raw pointer to the RenderThread on which it lives, and uses that pointer | |
| 36 // to send messages to the browser process, and to route responses to itself. | |
| 37 // | |
| 38 // When the render thread is shutdown (or the dispatcher is destructed), the | |
|
Ilya Sherman
2014/08/19 23:55:53
nit: "shutdown" -> "shut down"
Mike West
2014/08/20 13:17:19
Done.
| |
| 39 // routing is removed, the pointer is cleared, and any pending responses are | |
| 40 // rejected. | |
| 41 class CredentialManagerDispatcher : public blink::WebCredentialManager, | |
| 42 public content::RenderProcessObserver, | |
| 43 public IPC::Listener { | |
| 44 public: | |
| 45 typedef IDMap<blink::WebCredentialManager::RequestCallbacks, IDMapOwnPointer> | |
| 46 RequestCallbacksMap; | |
| 47 typedef IDMap<blink::WebCredentialManager::NotificationCallbacks, | |
| 48 IDMapOwnPointer> NotificationCallbacksMap; | |
|
Ilya Sherman
2014/08/19 23:55:53
nit: Why are these public? Can they be protected
Mike West
2014/08/20 13:17:20
They're public so I can use them in an anonymous-n
| |
| 49 | |
| 50 CredentialManagerDispatcher(); | |
| 51 virtual ~CredentialManagerDispatcher(); | |
| 52 | |
| 53 // content::RenderProcessObserver: | |
| 54 virtual void OnRenderProcessShutdown() OVERRIDE; | |
| 55 | |
| 56 // IPC::Listener: | |
| 57 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; | |
| 58 | |
| 59 // Message handlers for messages from the browser process: | |
| 60 virtual void OnFailedSignInResponse(int request_id); | |
| 61 virtual void OnSignedInResponse(int request_id); | |
| 62 virtual void OnSignedOutResponse(int request_id); | |
| 63 virtual void OnSendCredentials(int request_id, const CredentialInfo&); | |
| 64 | |
| 65 // blink::WebCredentialManager: | |
| 66 virtual void dispatchFailedSignIn( | |
| 67 const blink::WebCredential&, | |
| 68 WebCredentialManager::NotificationCallbacks*) OVERRIDE; | |
|
Ilya Sherman
2014/08/19 23:55:53
nit: Please include variable names, throughout.
Mike West
2014/08/20 13:17:19
Huh. Ok, that's repetitive, but I guess it's Chrom
| |
| 69 virtual void dispatchSignedIn( | |
| 70 const blink::WebCredential&, | |
| 71 WebCredentialManager::NotificationCallbacks*) OVERRIDE; | |
| 72 virtual void dispatchSignedOut(NotificationCallbacks*) OVERRIDE; | |
| 73 virtual void dispatchRequest( | |
| 74 bool zeroClickOnly, | |
|
Ilya Sherman
2014/08/19 23:55:53
nit: hacker_case.
Mike West
2014/08/20 13:17:19
Done.
| |
| 75 const blink::WebVector<blink::WebURL>& federations, | |
| 76 RequestCallbacks*) OVERRIDE; | |
| 77 | |
| 78 protected: | |
| 79 virtual int GetRoutingID(); | |
| 80 virtual void ClearCallbackErrorMaps(); | |
| 81 | |
| 82 // Track the various blink::WebCredentialManager::*Callbacks objects generated | |
| 83 // from Blink. This class takes ownership of these objects. These properties | |
| 84 // are protected so we can expose these maps to unit tests. | |
| 85 NotificationCallbacksMap failed_sign_in_callbacks_; | |
| 86 NotificationCallbacksMap signed_in_callbacks_; | |
| 87 NotificationCallbacksMap signed_out_callbacks_; | |
| 88 RequestCallbacksMap request_callbacks_; | |
|
Ilya Sherman
2014/08/19 23:55:53
nit: Member variables should always be private. I
Mike West
2014/08/20 13:17:19
Done.
| |
| 89 | |
| 90 private: | |
| 91 // Nulls out the raw pointer to |render_thread_| after ensuring that any | |
| 92 // message routing is removed. | |
| 93 void DisconnectFromRenderThread(); | |
| 94 | |
| 95 int routing_id_; | |
| 96 content::RenderThread* render_thread_; | |
| 97 | |
| 98 DISALLOW_COPY_AND_ASSIGN(CredentialManagerDispatcher); | |
| 99 }; | |
| 100 | |
| 101 } // namespace password_manager | |
| 102 | |
| 103 #endif // COMPONENTS_PASSWORD_MANAGER_CONTENT_RENDERER_CREDENTIAL_MANAGER_DISPA TCHER_H_ | |
| OLD | NEW |