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

Unified Diff: ios/web/web_state/web_state_impl.mm

Issue 2945213002: [ios] Snapshot for WebState (Closed)
Patch Set: Address comments Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/web_state/web_state_impl.h ('k') | ios/web/web_state/web_state_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/web_state/web_state_impl.mm
diff --git a/ios/web/web_state/web_state_impl.mm b/ios/web/web_state/web_state_impl.mm
index d97350851810f6889e1ba88ab226ba6a2bf222e3..d918d551104742002c9fe8f0f0c4464aceed938f 100644
--- a/ios/web/web_state/web_state_impl.mm
+++ b/ios/web/web_state/web_state_impl.mm
@@ -7,10 +7,12 @@
#include <stddef.h>
#include <stdint.h>
+#include "base/bind.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/sys_string_conversions.h"
+#include "base/threading/sequenced_task_runner_handle.h"
#import "ios/web/interstitials/web_interstitial_impl.h"
#import "ios/web/navigation/crw_session_controller.h"
#import "ios/web/navigation/legacy_navigation_manager_impl.h"
@@ -38,6 +40,7 @@
#include "ios/web/webui/web_ui_ios_controller_factory_registry.h"
#include "ios/web/webui/web_ui_ios_impl.h"
#include "net/http/http_response_headers.h"
+#include "ui/gfx/image/image.h"
namespace web {
@@ -672,6 +675,23 @@ bool WebStateImpl::HasOpener() const {
return created_with_opener_;
}
+void WebStateImpl::TakeSnapshot(const SnapshotCallback& callback,
+ CGSize target_size) const {
+ UIView* view = [web_controller_ view];
+ UIImage* snapshot = nil;
+ if (view && !CGRectIsEmpty(view.bounds)) {
+ CGFloat scaled_height =
+ view.bounds.size.height * target_size.width / view.bounds.size.width;
+ CGRect scaled_rect = CGRectMake(0, 0, target_size.width, scaled_height);
+ UIGraphicsBeginImageContextWithOptions(target_size, YES, 0);
+ [view drawViewHierarchyInRect:scaled_rect afterScreenUpdates:NO];
+ snapshot = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+ }
+ base::SequencedTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(callback, gfx::Image(snapshot)));
+}
+
void WebStateImpl::OnNavigationStarted(web::NavigationContext* context) {
for (auto& observer : observers_)
observer.DidStartNavigation(context);
« no previous file with comments | « ios/web/web_state/web_state_impl.h ('k') | ios/web/web_state/web_state_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698