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

Side by Side Diff: chrome/browser/extensions/extension_tabs_module.cc

Issue 7327007: Moving notification types which are chrome specific to a new header file chrome_notification_type... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 months 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 #include "chrome/browser/extensions/extension_tabs_module.h" 5 #include "chrome/browser/extensions/extension_tabs_module.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
11 #include "base/memory/ref_counted_memory.h" 11 #include "base/memory/ref_counted_memory.h"
12 #include "base/string_number_conversions.h" 12 #include "base/string_number_conversions.h"
13 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "base/stringprintf.h" 14 #include "base/stringprintf.h"
15 #include "base/utf_string_conversions.h" 15 #include "base/utf_string_conversions.h"
16 #include "chrome/browser/extensions/extension_function_dispatcher.h" 16 #include "chrome/browser/extensions/extension_function_dispatcher.h"
17 #include "chrome/browser/extensions/extension_host.h" 17 #include "chrome/browser/extensions/extension_host.h"
18 #include "chrome/browser/extensions/extension_service.h" 18 #include "chrome/browser/extensions/extension_service.h"
19 #include "chrome/browser/extensions/extension_tabs_module_constants.h" 19 #include "chrome/browser/extensions/extension_tabs_module_constants.h"
20 #include "chrome/browser/profiles/profile.h" 20 #include "chrome/browser/profiles/profile.h"
21 #include "chrome/browser/sessions/restore_tab_helper.h" 21 #include "chrome/browser/sessions/restore_tab_helper.h"
22 #include "chrome/browser/tabs/tab_strip_model.h" 22 #include "chrome/browser/tabs/tab_strip_model.h"
23 #include "chrome/browser/translate/translate_tab_helper.h" 23 #include "chrome/browser/translate/translate_tab_helper.h"
24 #include "chrome/browser/ui/browser.h" 24 #include "chrome/browser/ui/browser.h"
25 #include "chrome/browser/ui/browser_list.h" 25 #include "chrome/browser/ui/browser_list.h"
26 #include "chrome/browser/ui/browser_navigator.h" 26 #include "chrome/browser/ui/browser_navigator.h"
27 #include "chrome/browser/ui/browser_window.h" 27 #include "chrome/browser/ui/browser_window.h"
28 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 28 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
29 #include "chrome/browser/ui/window_sizer.h" 29 #include "chrome/browser/ui/window_sizer.h"
30 #include "chrome/common/chrome_notification_types.h"
30 #include "chrome/common/chrome_switches.h" 31 #include "chrome/common/chrome_switches.h"
31 #include "chrome/common/extensions/extension.h" 32 #include "chrome/common/extensions/extension.h"
32 #include "chrome/common/extensions/extension_error_utils.h" 33 #include "chrome/common/extensions/extension_error_utils.h"
33 #include "chrome/common/extensions/extension_messages.h" 34 #include "chrome/common/extensions/extension_messages.h"
34 #include "chrome/common/pref_names.h" 35 #include "chrome/common/pref_names.h"
35 #include "chrome/common/url_constants.h" 36 #include "chrome/common/url_constants.h"
36 #include "content/browser/renderer_host/backing_store.h" 37 #include "content/browser/renderer_host/backing_store.h"
37 #include "content/browser/renderer_host/render_view_host.h" 38 #include "content/browser/renderer_host/render_view_host.h"
38 #include "content/browser/renderer_host/render_view_host_delegate.h" 39 #include "content/browser/renderer_host/render_view_host_delegate.h"
39 #include "content/browser/tab_contents/navigation_entry.h" 40 #include "content/browser/tab_contents/navigation_entry.h"
(...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 // If a backing store is cached for the tab we want to capture, 1199 // If a backing store is cached for the tab we want to capture,
1199 // and it can be copied into a bitmap, then use it to generate the image. 1200 // and it can be copied into a bitmap, then use it to generate the image.
1200 BackingStore* backing_store = render_view_host->GetBackingStore(false); 1201 BackingStore* backing_store = render_view_host->GetBackingStore(false);
1201 if (backing_store && CaptureSnapshotFromBackingStore(backing_store)) 1202 if (backing_store && CaptureSnapshotFromBackingStore(backing_store))
1202 return true; 1203 return true;
1203 1204
1204 // Ask the renderer for a snapshot of the tab. 1205 // Ask the renderer for a snapshot of the tab.
1205 TabContentsWrapper* wrapper = browser->GetSelectedTabContentsWrapper(); 1206 TabContentsWrapper* wrapper = browser->GetSelectedTabContentsWrapper();
1206 wrapper->CaptureSnapshot(); 1207 wrapper->CaptureSnapshot();
1207 registrar_.Add(this, 1208 registrar_.Add(this,
1208 NotificationType::TAB_SNAPSHOT_TAKEN, 1209 chrome::NOTIFICATION_TAB_SNAPSHOT_TAKEN,
1209 Source<TabContentsWrapper>(wrapper)); 1210 Source<TabContentsWrapper>(wrapper));
1210 AddRef(); // Balanced in CaptureVisibleTabFunction::Observe(). 1211 AddRef(); // Balanced in CaptureVisibleTabFunction::Observe().
1211 1212
1212 return true; 1213 return true;
1213 } 1214 }
1214 1215
1215 // Build the image of a tab's contents out of a backing store. 1216 // Build the image of a tab's contents out of a backing store.
1216 // This may fail if we can not copy a backing store into a bitmap. 1217 // This may fail if we can not copy a backing store into a bitmap.
1217 // For example, some uncommon X11 visual modes are not supported by 1218 // For example, some uncommon X11 visual modes are not supported by
1218 // CopyFromBackingStore(). 1219 // CopyFromBackingStore().
1219 bool CaptureVisibleTabFunction::CaptureSnapshotFromBackingStore( 1220 bool CaptureVisibleTabFunction::CaptureSnapshotFromBackingStore(
1220 BackingStore* backing_store) { 1221 BackingStore* backing_store) {
1221 1222
1222 skia::PlatformCanvas temp_canvas; 1223 skia::PlatformCanvas temp_canvas;
1223 if (!backing_store->CopyFromBackingStore(gfx::Rect(backing_store->size()), 1224 if (!backing_store->CopyFromBackingStore(gfx::Rect(backing_store->size()),
1224 &temp_canvas)) { 1225 &temp_canvas)) {
1225 return false; 1226 return false;
1226 } 1227 }
1227 VLOG(1) << "captureVisibleTab() got image from backing store."; 1228 VLOG(1) << "captureVisibleTab() got image from backing store.";
1228 1229
1229 SendResultFromBitmap( 1230 SendResultFromBitmap(
1230 skia::GetTopDevice(temp_canvas)->accessBitmap(false)); 1231 skia::GetTopDevice(temp_canvas)->accessBitmap(false));
1231 return true; 1232 return true;
1232 } 1233 }
1233 1234
1234 // If a backing store was not available in CaptureVisibleTabFunction::RunImpl, 1235 // If a backing store was not available in CaptureVisibleTabFunction::RunImpl,
1235 // than the renderer was asked for a snapshot. Listen for a notification 1236 // than the renderer was asked for a snapshot. Listen for a notification
1236 // that the snapshot is available. 1237 // that the snapshot is available.
1237 void CaptureVisibleTabFunction::Observe(NotificationType type, 1238 void CaptureVisibleTabFunction::Observe(int type,
1238 const NotificationSource& source, 1239 const NotificationSource& source,
1239 const NotificationDetails& details) { 1240 const NotificationDetails& details) {
1240 DCHECK(type == NotificationType::TAB_SNAPSHOT_TAKEN); 1241 DCHECK(type == chrome::NOTIFICATION_TAB_SNAPSHOT_TAKEN);
1241 1242
1242 const SkBitmap *screen_capture = Details<const SkBitmap>(details).ptr(); 1243 const SkBitmap *screen_capture = Details<const SkBitmap>(details).ptr();
1243 const bool error = screen_capture->empty(); 1244 const bool error = screen_capture->empty();
1244 1245
1245 if (error) { 1246 if (error) {
1246 error_ = keys::kInternalVisibleTabCaptureError; 1247 error_ = keys::kInternalVisibleTabCaptureError;
1247 SendResponse(false); 1248 SendResponse(false);
1248 } else { 1249 } else {
1249 VLOG(1) << "captureVisibleTab() got image from renderer."; 1250 VLOG(1) << "captureVisibleTab() got image from renderer.";
1250 SendResultFromBitmap(*screen_capture); 1251 SendResultFromBitmap(*screen_capture);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 if (!helper->language_state().original_language().empty()) { 1341 if (!helper->language_state().original_language().empty()) {
1341 // Delay the callback invocation until after the current JS call has 1342 // Delay the callback invocation until after the current JS call has
1342 // returned. 1343 // returned.
1343 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( 1344 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod(
1344 this, &DetectTabLanguageFunction::GotLanguage, 1345 this, &DetectTabLanguageFunction::GotLanguage,
1345 helper->language_state().original_language())); 1346 helper->language_state().original_language()));
1346 return true; 1347 return true;
1347 } 1348 }
1348 // The tab contents does not know its language yet. Let's wait until it 1349 // The tab contents does not know its language yet. Let's wait until it
1349 // receives it, or until the tab is closed/navigates to some other page. 1350 // receives it, or until the tab is closed/navigates to some other page.
1350 registrar_.Add(this, NotificationType::TAB_LANGUAGE_DETERMINED, 1351 registrar_.Add(this, chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
1351 Source<TabContents>(contents->tab_contents())); 1352 Source<TabContents>(contents->tab_contents()));
1352 registrar_.Add(this, NotificationType::TAB_CLOSING, 1353 registrar_.Add(this, content::NOTIFICATION_TAB_CLOSING,
1353 Source<NavigationController>(&(contents->controller()))); 1354 Source<NavigationController>(&(contents->controller())));
1354 registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, 1355 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
1355 Source<NavigationController>(&(contents->controller()))); 1356 Source<NavigationController>(&(contents->controller())));
1356 return true; 1357 return true;
1357 } 1358 }
1358 1359
1359 void DetectTabLanguageFunction::Observe(NotificationType type, 1360 void DetectTabLanguageFunction::Observe(int type,
1360 const NotificationSource& source, 1361 const NotificationSource& source,
1361 const NotificationDetails& details) { 1362 const NotificationDetails& details) {
1362 std::string language; 1363 std::string language;
1363 if (type == NotificationType::TAB_LANGUAGE_DETERMINED) 1364 if (type == chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED)
1364 language = *Details<std::string>(details).ptr(); 1365 language = *Details<std::string>(details).ptr();
1365 1366
1366 registrar_.RemoveAll(); 1367 registrar_.RemoveAll();
1367 1368
1368 // Call GotLanguage in all cases as we want to guarantee the callback is 1369 // Call GotLanguage in all cases as we want to guarantee the callback is
1369 // called for every API call the extension made. 1370 // called for every API call the extension made.
1370 GotLanguage(language); 1371 GotLanguage(language);
1371 } 1372 }
1372 1373
1373 void DetectTabLanguageFunction::GotLanguage(const std::string& language) { 1374 void DetectTabLanguageFunction::GotLanguage(const std::string& language) {
1374 result_.reset(Value::CreateStringValue(language.c_str())); 1375 result_.reset(Value::CreateStringValue(language.c_str()));
1375 SendResponse(true); 1376 SendResponse(true);
1376 1377
1377 Release(); // Balanced in Run() 1378 Release(); // Balanced in Run()
1378 } 1379 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_tabs_module.h ('k') | chrome/browser/extensions/extension_test_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698