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

Side by Side Diff: chrome/browser/extensions/extension_function.h

Issue 8530003: Delete the temporary file when generating MHTML with the extension API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed sky's comments. Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_
7 #pragma once 7 #pragma once
8 8
9 #include <list> 9 #include <list>
10 #include <string> 10 #include <string>
11 11
12 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "base/memory/weak_ptr.h" 15 #include "base/memory/weak_ptr.h"
16 #include "base/process.h" 16 #include "base/process.h"
17 #include "chrome/browser/extensions/extension_info_map.h" 17 #include "chrome/browser/extensions/extension_info_map.h"
18 #include "chrome/common/extensions/extension.h" 18 #include "chrome/common/extensions/extension.h"
19 #include "content/browser/renderer_host/render_view_host_observer.h"
19 #include "content/public/browser/browser_thread.h" 20 #include "content/public/browser/browser_thread.h"
20 #include "content/public/browser/notification_observer.h" 21 #include "content/public/browser/notification_observer.h"
21 #include "content/public/browser/notification_registrar.h" 22 #include "content/public/browser/notification_registrar.h"
22 #include "ipc/ipc_message.h" 23 #include "ipc/ipc_message.h"
23 24
24 class Browser; 25 class Browser;
25 class ChromeRenderMessageFilter; 26 class ChromeRenderMessageFilter;
26 class ExtensionFunction; 27 class ExtensionFunction;
27 class ExtensionFunctionDispatcher; 28 class ExtensionFunctionDispatcher;
28 class UIThreadExtensionFunction; 29 class UIThreadExtensionFunction;
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 }; 206 };
206 207
207 // Extension functions that run on the UI thread. Most functions fall into 208 // Extension functions that run on the UI thread. Most functions fall into
208 // this category. 209 // this category.
209 class UIThreadExtensionFunction : public ExtensionFunction { 210 class UIThreadExtensionFunction : public ExtensionFunction {
210 public: 211 public:
211 UIThreadExtensionFunction(); 212 UIThreadExtensionFunction();
212 213
213 virtual UIThreadExtensionFunction* AsUIThreadExtensionFunction() OVERRIDE; 214 virtual UIThreadExtensionFunction* AsUIThreadExtensionFunction() OVERRIDE;
214 215
216 // Called when a message was received.
217 // Should return true if it processed the message.
218 virtual bool OnMessageReceivedFromRenderView(const IPC::Message& message);
219
215 // Set the profile which contains the extension that has originated this 220 // Set the profile which contains the extension that has originated this
216 // function call. 221 // function call.
217 void set_profile(Profile* profile) { profile_ = profile; } 222 void set_profile(Profile* profile) { profile_ = profile; }
218 Profile* profile() const { return profile_; } 223 Profile* profile() const { return profile_; }
219 224
220 void SetRenderViewHost(RenderViewHost* render_view_host); 225 void SetRenderViewHost(RenderViewHost* render_view_host);
221 RenderViewHost* render_view_host() const { return render_view_host_; } 226 RenderViewHost* render_view_host() const { return render_view_host_; }
222 227
223 void set_dispatcher( 228 void set_dispatcher(
224 const base::WeakPtr<ExtensionFunctionDispatcher>& dispatcher) { 229 const base::WeakPtr<ExtensionFunctionDispatcher>& dispatcher) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_; 264 base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_;
260 265
261 // The RenderViewHost we will send responses too. 266 // The RenderViewHost we will send responses too.
262 RenderViewHost* render_view_host_; 267 RenderViewHost* render_view_host_;
263 268
264 // The Profile of this function's extension. 269 // The Profile of this function's extension.
265 Profile* profile_; 270 Profile* profile_;
266 271
267 private: 272 private:
268 // Helper class to track the lifetime of ExtensionFunction's RenderViewHost 273 // Helper class to track the lifetime of ExtensionFunction's RenderViewHost
269 // pointer and NULL it out when it dies. We use this separate class (instead 274 // pointer and NULL it out when it dies. It also allows us to filter IPC
270 // of implementing NotificationObserver on ExtensionFunction) because it is 275 // messages comming from the RenderViewHost. We use this separate class
271 // common for subclasses of ExtensionFunction to be NotificationObservers, and 276 // (instead of implementing NotificationObserver on ExtensionFunction) because
272 // it would be an easy error to forget to call the base class's Observe() 277 // it is/ common for subclasses of ExtensionFunction to be
273 // method. 278 // NotificationObservers, and it would be an easy error to forget to call the
274 class RenderViewHostTracker : public content::NotificationObserver { 279 // base class's Observe() method.
280 class RenderViewHostTracker : public content::NotificationObserver,
281 public RenderViewHostObserver {
275 public: 282 public:
276 explicit RenderViewHostTracker(UIThreadExtensionFunction* function); 283 RenderViewHostTracker(UIThreadExtensionFunction* function,
284 RenderViewHost* render_view_host);
277 private: 285 private:
278 virtual void Observe(int type, 286 virtual void Observe(int type,
279 const content::NotificationSource& source, 287 const content::NotificationSource& source,
280 const content::NotificationDetails& details) OVERRIDE; 288 const content::NotificationDetails& details) OVERRIDE;
289
290 virtual void RenderViewHostDestroyed(
291 RenderViewHost* render_view_host) OVERRIDE;
292 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
293
281 UIThreadExtensionFunction* function_; 294 UIThreadExtensionFunction* function_;
282 content::NotificationRegistrar registrar_; 295 content::NotificationRegistrar registrar_;
296
297 DISALLOW_COPY_AND_ASSIGN(RenderViewHostTracker);
283 }; 298 };
284 299
285 virtual void Destruct() const; 300 virtual void Destruct() const;
286 301
287 scoped_ptr<RenderViewHostTracker> tracker_; 302 scoped_ptr<RenderViewHostTracker> tracker_;
288 }; 303 };
289 304
290 // Extension functions that run on the IO thread. This type of function avoids 305 // Extension functions that run on the IO thread. This type of function avoids
291 // a roundtrip to and from the UI thread (because communication with the 306 // a roundtrip to and from the UI thread (because communication with the
292 // extension process happens on the IO thread). It's intended to be used when 307 // extension process happens on the IO thread). It's intended to be used when
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 public: 396 public:
382 SyncIOThreadExtensionFunction(); 397 SyncIOThreadExtensionFunction();
383 398
384 virtual void Run() OVERRIDE; 399 virtual void Run() OVERRIDE;
385 400
386 protected: 401 protected:
387 virtual ~SyncIOThreadExtensionFunction(); 402 virtual ~SyncIOThreadExtensionFunction();
388 }; 403 };
389 404
390 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_ 405 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_function.cc » ('j') | chrome/browser/extensions/extension_save_page_api.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698